Procurement Audit Planner
An AI agent system that plans an internal audit of procurement at West Berkshire Council from public data. Agents read the council's purchasing rules, analyse every payment, rate the risks and draft the audit plan; Python computes every number; a human auditor approves at two gates. Results are risk indicators to investigate, never findings of wrongdoing.
Start a run
Starts from the rules, spend analytics and audit history already produced in Part A (their validators still re-run in the sandbox and must PASS), then runs live: the risk assessor, Gate 1, the register revision, the planner / challenger / QA agent team and Gate 2. About 25–35 minutes of agent time.
You can leave the page at any time: the run continues in the background and its page picks up where it is. The run waits for you at each gate.
The workflow
- Extract rules Turns the council's Contract Procedure Rules PDF into testable rules, each with a verbatim quote. Checked by verify_quotes.py against the PDF.
- Analysis (spend-analyst + findings-analyst) Two sub-agents in parallel: the spend analyst writes and runs Python over every payment (threshold clustering, split purchases, duplicates, off-contract…); the findings analyst records past audit history and the council's risk scoring method. Checked by self_check.py and verify_history.py.
- Risk assessor Rates each risk on the council's 5×5 likelihood × impact matrix; every rating must cite a rule, a metric or a history item. Checked by rebuilding the register with build_register.py (0 errors, 0 warnings).
- Gate 1: auditor decisions humanYou, as the auditor, approve, amend or reject each risk.
- Register revision The risk assessor applies your decisions as a register revision. Checked by build_register.py and the auditor-gate check (build_pack.py --gate).
- Agent team (planner, challenger, qa-reviewer) An agent team: the planner builds the audit pack, the challenger challenges it, the QA reviewer runs the four QA scripts and writes the verdict. Checked by run_checks.py (quotes, numbers, traceability, samples).
- Gate 2: auditor sign-off humanYou sign off the pack (only on a READY FOR SIGN-OFF verdict) or return it to the team.
Every agent stage ends with deterministic checks from Part A run inside the sandbox. A stage shows PASS only when those checks pass, never because an agent says it succeeded. A FAIL stage can be retried.
Runs started in this browser
None yet.
About: how it is built
Skills
- extract-rules: rules PDF → rules.json with verbatim quotes
- risk-assessment: the rating method; build_register.py renders the register
- audit-program: the planning method; build_pack.py draws samples and renders the pack
Agents
- spend-analyst and findings-analyst (sub-agents)
- risk-assessor (sub-agent)
- planner, challenger, qa-reviewer (agent team, coordinating by message)
Runtime
- Claude Code runs the unchanged Part A repository inside one persistent Vercel Sandbox per run (AI SDK harness).
- A durable Vercel Workflow drives the stages in short steps and pauses at the gates, so no request has to stay open.
- API keys stay on the server; the browser only sees run events.