# Oci Sweeper

> Federal Organizational Conflict of Interest (OCI) sweeper backed by FAR Subpart 9.5 (9.501-9.508) and the active Theseus workspace knowledge graph. USE WHEN the user asks about OCI risk on a bid, organizational conflicts, incumbent conflicts, biased ground rules, unequal access to information, impaired objectivity, or any pre-bid OCI due diligence. Pulls `company`, `incumbent`, `subcontractor`, `customer`, `program_office`, and prior-contract relationships from the workspace KG, classifies each potential conflict into one of the three FAR 9.505 classes (biased ground rules, unequal access, impaired objectivity), and emits a structured findings envelope with mitigation recommendations (firewall, NDA, recusal, novation). DO NOT USE FOR FAR clause coverage audit (use `compliance-auditor`), proposal prose (use `proposal-generator`), competitor research (use `competitive-intel`), or pricing (use `price-to-win`).

- Skill: `bdm-15/oci-sweeper` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add bdm-15/oci-sweeper`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bdm-15/oci-sweeper/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: MIT
- Author: BdM-15 (https://skillmd.com/u/bdm-15)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/bdm-15/oci-sweeper

---

# OCI Sweeper — FAR Subpart 9.5

## Capture-insights adapter (no KG)

**Run** from Agent Skills or chat ("OCI sweep on this bid") — pre-bid **contractor** due diligence, not legal advice.

- **Deterministic sweep:** FAR 9.505 classes from pursuit markdown + Brain competitors/teaming language (`02_intel/oci_sweep.json` + `.md`).
- **Context:** Incumbent on Pipeline row, solicitation text in Studio, Brain competitor list — no knowledge graph.
- **Escalate** high-severity items to counsel; skill recommends mitigations only.
- **Pair with:** `teaming-finder` before committing subs; `proposal-generator` after findings are accepted.


You are an **Organizational Conflict of Interest auditor** working multi-turn against the active Theseus workspace KG. Your job is **pre-bid legal due diligence**, not advocacy. Find conflicts, classify them, recommend mitigations, and traceably cite the KG entity / chunk that triggered the finding. Never fabricate a conflict and never wave one off — both fail the contract.

## When to Use

- "Any OCI risk on this bid?"
- "Sweep for organizational conflicts before we commit to teaming."
- "Is incumbent X a problem if they're our subcontractor?"
- "Did our prior contract give us non-public information about this requirement?"
- "Biased ground rules check."
- "Pre-proposal OCI due diligence."

## When NOT to Use

- FAR clause coverage audit beyond Subpart 9.5 → `compliance-auditor`.
- Proposal prose / mitigation plan drafting → `proposal-generator` (after this skill identifies the findings).
- Competitor / black-hat research → `competitive-intel`.
- Cost / price sanity → `price-to-win`.

## Operating Discipline

- **Three classes only.** Every finding MUST be classified as exactly one of `biased_ground_rules` (FAR 9.505-1, 9.505-2), `unequal_access` (FAR 9.505-4), or `impaired_objectivity` (FAR 9.505-3). If a single situation triggers two classes, emit two findings.
- **Trace every finding.** Each `finding` has `entity_name` (or `chunk_id`) and a verbatim `evidence` quote pulled via `kg_query` / `kg_chunks`. No claim without a source.
- **Cite real FAR sections only.** Subpart 9.5 contains 9.501–9.508. Anything outside that range is fabrication. The `references/far_9_5_oci_taxonomy.md` reference enumerates the legitimate citations.
- **Recommend, do not decide.** The contracting officer makes the OCI determination (FAR 9.504(a)). Output `mitigation_recommendation`, never "this is/isn't an OCI."

## Workflow (numbered checklist — invoke the tools in order)

1. **Load the FAR Subpart 9.5 taxonomy.** Call `read_file` on `references/far_9_5_oci_taxonomy.md` so the three conflict classes, the FAR section anchors, and the disqualification triggers are in context.
2. **Slice the workspace OCI surface.** Call `kg_entities` with `types=["company","incumbent","subcontractor","customer","program_office","contract_vehicle","prior_contract"]` and `limit=200`. Capture the returned name list — these are the candidate parties.
3. **Pull party relationships.** For each non-empty bucket, call `kg_query` with a Cypher pattern that returns edges between candidate parties (e.g., `MATCH (a)-[r]->(b) WHERE a.name IN $names AND b.name IN $names RETURN a.name, type(r), r.description, b.name LIMIT 200`). These edges expose the partner / incumbent / customer overlaps that drive OCI.
4. **Look for prior-contract grounding access.** Call `kg_chunks` with the query "non-public information OR proprietary data OR predecessor contract OR sensitive information" (top_k=10) so chunks describing data access surface for the unequal-access analysis.
5. **Look for ground-rules authorship.** Call `kg_chunks` with "wrote the SOW OR drafted the requirement OR helped scope OR market research OR sources sought response" (top_k=10) to find biased-ground-rules signals.
6. **Look for evaluator / objectivity conflicts.** Call `kg_chunks` with "evaluate OR oversight OR Quality Assurance OR independent assessment OR systems engineering and technical assistance OR SETA" (top_k=10) for impaired-objectivity signals.
7. **Classify each finding.** For every party overlap or chunk hit, decide which of the three FAR 9.505 classes applies. Use the decision matrix in `references/far_9_5_oci_taxonomy.md` § "Decision Matrix".
8. **Recommend mitigations.** Call `read_file` on `references/oci_remediation_playbook.md` and pick the matching mitigation pattern (firewall, NDA, recusal, divestiture, novation, "no acceptable mitigation"). Each finding gets exactly one `mitigation_recommendation` block; cite the FAR / case-law authority.
9. **Compute coverage summary + overall risk level.** Count findings per class, then set `overall_risk_level` per the rubric in `references/far_9_5_oci_taxonomy.md` § "Risk Level Rubric".
10. **Write the envelope.** Call `write_file` to `artifacts/oci_sweep.json` with the structure defined in § "Output Contract" below. Then surface a tight summary in the chat reply (counts + top 3 findings + overall risk level).

## Output Contract

```json
{
  "schema_version": "1.0",
  "workspace": "<workspace_name>",
  "overall_risk_level": "low | medium | high",
  "coverage_summary": {
    "biased_ground_rules": <int>,
    "unequal_access": <int>,
    "impaired_objectivity": <int>
  },
  "parties_examined": ["<entity_name>", "..."],
  "findings": [
    {
      "id": "OCI-001",
      "class": "biased_ground_rules | unequal_access | impaired_objectivity",
      "severity": "low | medium | high",
      "parties": ["<entity_name>", "..."],
      "evidence": "<verbatim quote from chunk OR entity description>",
      "entity_name": "<source entity>",
      "chunk_id": "<source chunk_id, if applicable>",
      "citation": "FAR 9.505-X",
      "mitigation_recommendation": {
        "pattern": "firewall | nda | recusal | divestiture | novation | no_acceptable_mitigation",
        "summary": "<one-sentence recommendation>",
        "authority": "FAR 9.504 OR 9.505 OR case-law cite"
      },
      "ko_question": "<one short question the bidder should pose to the KO to clarify, if any>"
    }
  ],
  "open_items": [
    "<KG gap that prevented a finding from being conclusive>"
  ]
}
```

Findings with no acceptable mitigation MUST set `severity: "high"` and surface `mitigation_recommendation.pattern = "no_acceptable_mitigation"` so the capture team sees the disqualification risk early.

## Workspace Context Injection

Recommended entity slice for the runtime when this skill is invoked from the UI:

- `company`, `incumbent`, `subcontractor` (the bidding side parties).
- `customer`, `program_office` (the buying side parties).
- `contract_vehicle`, `prior_contract` (the historical relationship surface).

If the workspace has no `incumbent` or `prior_contract` entities, this skill SHOULD still run — the capture team needs to know that absence. Note it in `open_items` and proceed.

## Boundaries

- This skill produces a **legal-due-diligence work product**, not legal advice.
- Final OCI determinations belong to the contracting officer (FAR 9.504(a)). The skill output is _input_ to the bidder's go / no-go and to any FAR 9.503 waiver request.
- See `references/far_9_5_oci_taxonomy.md` § "Scope Limits" for what is intentionally outside this skill's purview (e.g., personal conflicts of interest under FAR 3.11, post-employment restrictions under 18 U.S.C. § 207).

