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

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

  1. 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.
  2. 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.
  3. 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).
  4. Gate 1: auditor decisions human
    You, as the auditor, approve, amend or reject each risk.
  5. 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).
  6. 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).
  7. Gate 2: auditor sign-off human
    You 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.