원클릭으로
benchmark-vendors
Use when an operating partner wants to surface cross-portco
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when an operating partner wants to surface cross-portco
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when the user wants a recorded video walkthrough of the Decision- Optimization Diagnostic (DX) upload UI — drop CSVs, watch the pipeline run, see the report rendered. Drives the local pe-mcp-web app via Playwright with caption overlays at each step, records to .webm, and prints a one-line ffmpeg command to convert to MP4. Reproducible, scripted, no manual screen capture required.
Use when a PE shop or portco needs to audit a deployed AI-agent fleet — inventory every registered agent, flag zombies (idle too long), runaway-cost agents (modeled monthly spend over a threshold), and misaligned agents (eval rubric fail), and produce a board-defendable pruning recommendation list with annual savings if the prunes land. Tackles the 40%-of-agentic- projects-cancelled-by-2027 risk Gartner is forecasting, and the agent-sprawl problem mega-funds (Vista, Thoma Bravo) face once they deploy AI agents at portco scale. Pure deterministic — no LLM call inside the tool, modeled telemetry stamped as modeled.
Use when an LP has sent the GP an AI-section DDQ (Due-Diligence Questionnaire) — typically the new ILPA v2.0 (Q1 2026) AI governance / data / risk sections — and the GP needs a first-draft response packet built deterministically from the fund's existing AI-evidence artifacts in finance_output/, with every answer citing its source and a cross-answer consistency layer flagging contradictions before the LP does.
Use when a portco is post-close and the operating partner needs
Use when a PE professional needs an EU AI Act (Regulation 2024/1689)
Use when a PE professional needs a fast diligence pass over a
| name | benchmark-vendors |
| description | Use when an operating partner wants to surface cross-portco |
Your job is to call benchmark_vendors, surface the rendered memo, and
read the agency-opportunity ranking carefully. The tool is deterministic:
it does not invent prices. Every figure traces to a public USAspending
contract record.
Awarding Agency as a portco and each Recipient Name
as a vendor. Award amount is the per-award price.The HTML is in the same aesthetic as explain_decision and
normalize_portco (Cormorant Garamond + EB Garamond + paper cream) so
artifacts feel of-a-piece.
benchmark_vendors(
psc_code: str = "D310", # IT Support Services (default)
fiscal_year: int = 2024,
max_records: int = 2000,
cache_dir: str = "/tmp/usaspending_cache",
output_filename: str | None = None,
) -> dict
Returns:
{
"report_path": "/abs/path/.../benchmark_<psc>_FY<yr>.html",
"json_path": "/abs/path/.../benchmark_<psc>_FY<yr>.json",
"n_contracts": int,
"n_agencies": int,
"n_vendors": int,
"total_savings_opportunity_usd": float,
"top_savings_per_agency": list[dict], # AgencyOpportunity records
}
| PSC | What it covers |
|---|---|
| D310 | IT and Telecom — IT Support Services |
| D316 | Telecom Network Management |
| D318 | Integrated Hardware/Software Solutions |
| R425 | Engineering and Technical Services |
| S201 | Custodial / Janitorial Services |
| 7510 | Office Supplies |
| 7520 | Office Devices and Accessories |
Any 4-character PSC code accepted by USAspending will work.
If the user is vague, default to psc_code="D310", fiscal_year=2024,
max_records=2000. That gives a thick enough cohort (>= 5 agencies and
= 5 vendors) to produce a non-trivial savings figure.
For office-supplies demos, try PSC 7510 or 7520. For janitorial, S201.
benchmark_vendors(
psc_code="D310",
fiscal_year=2024,
max_records=2000,
)
The first call hits USAspending and writes a cache file to
/tmp/usaspending_cache/. Subsequent calls with the same arguments are
instant.
Open json_path and confirm:
n_agencies >= 5 and n_vendors >= 5 (anything thinner and the
benchmark is not credible).total_savings_opportunity_usd > 0 (a $0 result means every agency
pays the same price for every shared vendor — unlikely; usually means
the cohort filter dropped too much data).agency_opportunities[0].savings_if_matched_best_usd is the headline
number for the partner's eyes.Report back to the user:
n_contracts × n_agencies × n_vendors.total_savings_opportunity_usd rendered with the right scale ($K / $M / $B).vendor_spreads to show the widest-spread vendor —
this is the "look, the same vendor really does charge wildly different
prices to different buyers" signal.| Failure | Diagnosis | Fix |
|---|---|---|
USAspending returned zero contracts | PSC + FY combo with no awards | Try a different PSC code (D310, D316, S201, 7510 are reliable). |
Only 1 awarding agency in the cohort | The PSC is dominated by one buyer | Pick a broader PSC code or different FY. |
USAspending API unreachable | Network outage | Re-run; cache is incremental, partial fetches are not persisted. |
total_savings_opportunity_usd == 0 | All shared vendors have identical avg prices across agencies | Increase max_records; thin cohort means the "best peer" tie wins on every cell. |
When you finish, return to the user:
<n_contracts> contracts × <n_agencies> agencies × <n_vendors> vendors.<agency> overpaid <delta>/award on <n> awards → <savings$> recoverable.Do not paste the full opportunity table or vendor-spread table into chat. The HTML is the artifact.
User: "Benchmark IT support services across federal agencies for FY2024."
Agent:
benchmark_vendors(psc_code="D310", fiscal_year=2024, max_records=2000).json_path to spot-check the cohort thickness.