بنقرة واحدة
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.