WTWilly Tai
Case studyAI assurance · model evaluationLive demoPublic dataset

The copilot passed the demo. Nobody ran the exam.

Finance teams are deploying LLM copilots with no evaluation harness. The vendor demos on friendly questions, procurement signs, and no one in the finance function owns measuring whether the tool gets the numbers right. The Proving Ground is the missing step built as a working instrument: three candidate copilots answer a real FinanceBench golden set, deterministic code scores every answer, abstention is scored as its own outcome, and the risk owner drags one slider, the cost of a wrong answer, to watch the leaderboard reorder. Every run is hash-chained, so the evaluation that justified a deployment decision can be replayed later.

81%
clear-cut questions GPT-4-Turbo failed
With retrieval, on the FinanceBench paper's own measurement.
penalty where governance wins
Computed live: the cite-or-abstain wrapper overtakes the guesser.
30
golden questions · real SEC filings
FinanceBench extract, CC-BY-NC-4.0, credited.
100%
wrapper cited or abstained
Every answer quotes evidence or declines.

The 81% is the FinanceBench paper's published figure. The 3× and 100% are computed by the demo's own referee over the shipped data. The candidate transcripts are scripted personas, labelled as such; §5 states what that does and does not prove.

01 / The pain

There is no acceptance test, so there is no acceptance.

When Patronus AI built FinanceBench in 2023, the authors reported that GPT-4-Turbo with a retrieval system failed 81% of clear-cut financial questions over real SEC filings, questions a junior analyst would answer from the named document. The benchmark exists precisely because buyers had no way to test vendor claims. Model evaluation has since become the core of every emerging AI-assurance framework that a Big4 practice would sell against, and it is still routinely skipped at the moment it matters most: procurement.

The failure sequence is depressingly standard. The vendor demos on friendly questions. A pilot runs with no defined pass criteria. The tool rolls out. Months later an analyst notices a wrong EBITDA figure in a board pack. Trust collapses, the tool is quietly abandoned, and there is no record of what was ever tested. At no point did anyone define what "good enough" means for this team's numbers, or measure the tool against that definition. The gap is a discipline any accountant already knows from controls testing. Define the criteria, sample against them, keep the evidence.

02 / Why the obvious fix fails

Average accuracy is the wrong exam, and a model is the wrong examiner.

Two naive moves dominate current practice. The first is to score copilots on raw accuracy: the share of questions answered correctly. That metric rewards exactly the wrong behaviour, because a copilot that answers everything confidently will beat a careful one on coverage while planting wrong numbers in real workpapers. In a finance function the loss is asymmetric. An analyst who reads "I could not find this figure" loses a minute. An analyst who reads a confident, wrong EBITDA loses the board pack. A wrong answer costs more than no answer, and an evaluation that ignores that fact will select for confident guessers.

The second naive move is to let a stronger LLM grade the candidates. Now the evaluation inherits every weakness it was supposed to measure: the grader drifts between versions, extends partial credit to eloquent nonsense, and cannot be replayed to the same verdict twice. An acceptance test whose referee is itself unvalidated is not evidence. It is another demo.

What raw accuracy rewards

The confident guesser answers all 30 questions and gets 19 right. On raw accuracy, 63%, it tops the board.

19 correct · 11 wrong · 0 declined

What the governed score rewards

The cite-or-abstain wrapper answers only the 11 questions where it can quote evidence, and declines the rest. Once a wrong answer costs 3× a miss, it leads.

10 correct · 1 wrong · 19 declined, every answer cited
03 / The trust boundary

The referee is code, the answers stay sealed, and the human prices the risk.

The bench draws the same line every system on this site draws, applied this time to evaluation itself. The golden set, 30 FinanceBench questions with reference answers and evidence excerpts, is held by referee code; candidates receive question text only. Scoring is fully deterministic: the referee parses the numeric answer and compares it within a published ±1% tolerance, checks any citation against the reference evidence by token overlap with a published 70% threshold, and books an abstention as its own outcome. No model ever grades a model. The one genuine judgement in the process, how much a wrong answer costs relative to a missed one, is not buried in a config file. It is handed to a named human as a slider, and the sign-off is written to the ledger with the multiplier attached.

MODEL SIDE · answers only, never grades DETERMINISTIC · holds the answers, decides the scores 3 candidate copilots pre-computed transcripts · scripted personas, labelled Golden set answers sealed in code Deterministic referee parse ±1% · overlap ≥70% abstention = first-class outcome Risk-appetite gate human sets 1×..10× · signs ranking Append-only, hash-chained ledger candidate · prompt-set hash · per-run scores · appetite sign-offs · tamper-evident, replayable
fig.1 · the trust boundary applied to evaluation: candidates answer, code scores, a human prices the risk, and the ledger remembers

Here is the deterministic core from the shipped file. The referee's verdict per question and the governed score the slider recomputes:

// the load-bearing decisions, no model anywhere in them.
function scoreItem(item, ans) {
  if (ans.answer == null) return { outcome: "abstain", ... };   // declining is an outcome, never an error
  const refVal  = parseNum(item.answer);                    // reference, held by the referee
  const candVal = parseNum(ans.answer);
  const outcome = numbersMatch(refVal, candVal) ? "correct" : "wrong";  // |Δ| ≤ max(1%·|ref|, 0.005)
  const ov = ans.cite ? overlapFrac(ans.cite, item.evidence) : null;   // token overlap vs evidence
  return { outcome, refVal, candVal, ov, citedOk: ov != null && ov >= 0.7 };
}

// the governed score: k is the human's risk appetite, wrong costs k× a miss
function governed(c, k) { return c.correct - c.abstain - k * c.wrong; }

// the headline metric is computed, never typed in: smallest k where the
// cite-or-abstain wrapper outranks the confident guesser · evaluates to 3
for (let k = 1; k <= 10; k++)
  if (governed(RES["WRAP-CA"].counts, k) > governed(RES["GUESS-1"].counts, k)) return k;
04 / Worked example

One slider, three candidates, and a leaderboard that changes its mind.

The three candidates are scripted personas, labelled on screen, built to make the arithmetic visible. The confident guesser answers all 30 questions and never offers a source; 19 of its answers are right. The ungoverned copilot answers 28 with loose citation discipline; three of its citations are invented, and the referee rejects each one by overlap. The cite-or-abstain wrapper may answer only when it can quote the reference evidence; it answers 11, gets 10 right, and declines the other 19 with "abstained: no evidence." Now drag the slider.

AppetiteConfident guesserUngoverned copilotCite-or-abstain wrapperWho leads
1× · wrong = miss+8 pts−4 pts−10 ptsGuesser, on raw accuracy
−3 pts−19 pts−11 ptsGuesser, narrowly
−14 pts−34 pts−12 ptsWrapper takes the lead
10×−91 pts−139 pts−19 ptsWrapper, by a distance

The score is correct − missed − k × wrong, so at 1× a wrong answer costs exactly what a miss costs and the board ranks on raw accuracy. The guesser's 19 hits put it first. By 3× its 11 wrong answers cost 33 points and the wrapper, carrying one wrong answer, moves ahead. It never comes back. Every line of that arithmetic is printed on the board next to each candidate, and the sign-off button writes the chosen multiplier and the resulting ranking into the ledger under the risk owner's identifier.

The crossover is the brand thesis in one number. A wrong answer costs more than no answer. Price that honestly, at even 3× on this data, and the cite-or-abstain discipline wins the ranking outright.
05 / What is measured, what is scripted

The numbers, their provenance, and the limits stated flatly.

The golden set is real. It is a 30-question extract of the 150-question FinanceBench open set: questions, reference answers, justifications and evidence excerpts over named SEC filings, fetched by a shipped script with the selection rule documented. The data carries a CC-BY-NC-4.0 licence, non-commercial, which suits a portfolio demo and is stated on screen; the harness itself is mine and accepts any golden set an engagement would substitute. The 81% failure figure is the FinanceBench paper's own headline measurement, quoted as the reason this bench should exist, never as this demo's result.

The candidate transcripts are not real model runs. Live multi-model scoring is impossible in a static browser page, so the three candidates are pre-computed, seeded transcripts, scored and re-ranked live by the referee, and the app labels each one as a scripted persona. The outcome counts were authored so the crossover arithmetic is visible at a realistic scale; the generator then re-runs the same referee logic and refuses to ship unless the scored outcomes and the 3× crossover actually emerge from the data. What the demo proves is the harness: sealed answers, deterministic scoring, priced abstention, replayable evidence. What it does not prove is any ranking of frontier models, and it says so.

06 / See it run

Set the price of being wrong, then sign your name to it.

Drag the appetite slider and watch the leaderboard reorder with the arithmetic printed line by line. Open any of the 30 questions to see the referee's worksheet: the sealed reference answer, the parsed values, the tolerance check, and each citation verified or rejected by overlap. Then sign off a ranking, replay every run from the stored transcripts, and tamper with a score to watch the chain break at exactly that row.

▶ Open the live demo Runs entirely in your browser · real FinanceBench extract (CC-BY-NC-4.0) · scripted candidate transcripts, labelled

Why this one belongs to the assurance practice.

Most of this site shows governed systems doing regulated work. This page governs the layer underneath: the evidence that any such system deserved to be deployed at all. That is an assurance activity in the oldest sense. Define the criteria before the test, keep the examiner independent of the examined, price the errors by their consequences, and file evidence that survives a challenge years later. Accountants have run acceptance this way for decades. The only new part is that the thing under test now writes fluent prose, which is exactly why the referee here is not allowed to.

Sources. Islam et al., FinanceBench: A New Benchmark for Financial Question Answering, 2023 (Patronus AI): GPT-4-Turbo with retrieval failed 81% of clear-cut questions. Dataset: PatronusAI/financebench, CC-BY-NC-4.0, 150 open questions over SEC filings. Full provenance and the deterministic selection rule: DATA.md in the demo directory.