Model comparison

Ada is the AI assistant on this website. We evaluate her using the same approach we'd use for a client's AI system. These are the results — more about Ada herself is here.

Same brief, same tools, same 189-question test set — run against 7 different model backends, each answer scored by four independent judges, so the only thing that changes between rows is the model underneath. That's what makes this a controlled comparison rather than 7 separate scorecards, and it's close to a decision an organisation actually faces: what happens if we run this system on a different model.

Accuracy and groundedness are only half the answer; this also compares them against latency and real running cost, because there's no universal best model here — only trade-offs that shift depending on what the system needs to do.

Ada's brief and the question set are both versioned and hashed, so any two runs can be compared question by question rather than headline to headline — what changed between versions, and why a shift in the headline number is not on its own evidence that the models changed.

7
Models tested
189
Questions each
4
Judges
1,323
Answers scored
2026-09-30
Run date
In short. The brief changed between v2 and v3; the questions did not. Replies got shorter, two known conversation bugs were fixed, and judged scores fell across every model — a fall complicated by the judges disagreeing far more often on the stricter brief. Claude Sonnet 5 handled the revised brief and the known regression cases better than Claude Sonnet 4.6, so it became the default on 2 October 2026. Two missed lead calls remain unresolved.
Jump to: why Sonnet 5 · results · tool correctness · multi-turn · verbosity · judge agreement · findings · detailed findings

Results

Sorted by running cost, cheapest first. Three bounds rather than one score, out of 189 questions — see how a question passes.

ModelAccuracyGroundedness Tool calls Confirmed Likely Ceiling Breadth Failed Avg latency Cost / 189 qCost / 1K convos
Gemini 3.5 Flash-Lite 81.6% 82.1% 25/25 78 135 166 88 23 1,504ms $0.312 $6
Qwen 3 235B 70.4% 72.7% 24/25 56 110 144 88 45 2,809ms $0.536 $10
Gemini 3.5 Flash 74.5% 74.1% 25/25 48 112 156 108 33 2,190ms $1.563 $31
Claude Sonnet 5 Ada today 95.8% 94.6% 23/25 146 179 186 40 3 3,652ms $3.211 $67
Claude Sonnet 4.6 90.7% 89.9% 25/25 113 164 180 67 9 4,479ms $3.590 $74
GPT-5.5 95.2% 94.7% 25/25 146 178 186 40 3 3,008ms $5.288 $136
Claude Opus 5 90.5% 92.7% 10/25 148 171 172 24 17 3,241ms $7.389 $150

Click any column heading to sort. Sorted by running cost, cheapest first, until you do.

What the four score columns mean. Every question is marked by all four judges, and the columns are cumulative — each adds a less settled category to the one before:
  • Confirmed — every judge awarded full marks, or the single dissent was demonstrably unfounded. The floor: what is settled in the model's favour.
  • Likely — confirmed plus provisional, meaning one judge dissented and its objection held up on inspection. A real judgement call, left for a human rather than resolved by a threshold.
  • Ceiling — likely plus contested, meaning the panel split two against two. The most the model could be credited with.
  • Breadth — the gap from confirmed to ceiling. Not a score but a measure of how much the panel could not settle either way.

None of it is averaged into a single figure, because the disagreement is itself a finding. How a question passes gives the counts behind each state, and what happened when they were re-scored.

Two numbers carry most of this table. Confirmed is how much a model got demonstrably right — the floor, and the number worth quoting if you're only quoting one. Breadth is the gap up to ceiling: how much the panel could not settle. They are independent. Claude Opus 5 leads on confirmed at 148, with a breadth of 24. Claude Sonnet 5 — the model Ada runs — reaches 146 with a breadth of 40 and 3 confirmed failures; what those failures actually are is set out in what this means for the assistant on this site.
The bound you read changes the ranking. Claude Opus 5 is first on confirmed at 148 and third on likely at 171: a model can lead on what the panel settled in its favour and trail on what it might also have been given. Quoting a single number would pick a winner by picking a statistic, so all three bounds are published. On likely the order is led by Claude Sonnet 5 at 179, and the model Ada runs today sits first at 179.

Why Ada runs on Claude Sonnet 5

Ada was switched from Claude Sonnet 4.6 to Claude Sonnet 5 on 2 October 2026, on the evidence below. Deployed model claude-sonnet-5, brief 56fa584cd172. This section is the reasoning for a decision already taken, not a proposal — and Sonnet 5 is the current default rather than a settled endpoint: it stays until contrary evidence arrives, and the open items against it are named at the bottom of this section.

 Sonnet 4.6 previous Sonnet 5 Ada today 
Confirmed113 146 33 questions — not a noise-floor gap
Likely164 179 Ahead on the looser bound too
Breadth67 40 Substantially less left unsettled
Confirmed failures9 3 Fewer, and not the same fault — see below
Deterministic tool correctness25/2523/25 The one measure the previous model wins
Scripted multi-turn cases6/8 on its own v2 brief 8/8 Both briefs, including the two v2 bugs
Predicts Phil's follow-up13/258/25 Tool replies carrying a forbidden prediction
Latency4,479ms 3,652ms Lower average latency on this run
Cost / 1K conversations$74 $67 Cheaper, on a lower published rate
GenerationLegacyCurrent Sonnet 4.6 is now listed as Legacy

Three different kinds of evidence point the same way, which is why the decision was made on this run and not the last one. They are not fully independent — the judged scores and the habit count are read off the same replies — but the multi-turn suite uses different conversations, a different method and no judges at all. On the judged single-turn results Sonnet 5 leads on confirmed, likely and breadth, with fewer confirmed failures. On the deterministic multi-turn suite it passes all eight cases under both brief versions — including the two that Sonnet 4.6 genuinely fails under the original v2 brief, which is what makes that a difference between the models rather than a side-effect of the brief being fixed (the ablation). And on the one habit that measurably got worse between v2 and v3 — announcing what Phil will do next, which the brief forbids — Sonnet 5 carries it in 8 of 25 tool replies against Sonnet 4.6's 13.

The switch was verified against the live deployment rather than assumed: the running image digest matches the build, the brief fingerprint is unchanged at 56fa584cd172, and the multi-turn suite was re-run against the live endpoint immediately before and after. It scored 7/8 before the switch and 8/8 after, with card-acceptance-without-consent and lead-capture-across-turns both confirmed correct by reading the transcripts, not only by the assertion passing.

What this decision does not claim, and what is still open.
  • Two missed lead calls stand as unresolved regression targets. On TOOL-008 and TOOL-009 Sonnet 5 said it would pass the visitor's details to Phil and then did not call record_lead. Those are real misses, not artefacts, and they are the main open risk in this deployment.
  • The narration problem is reduced, not fixed. 8 of 25 is better than 13 of 25 and is still 8 too many; the brief line that addresses it has not yet been written.
  • Eight scripted conversations is a small sample. Passing them establishes that the two known bugs do not reproduce; it does not establish general reliability.
  • Sonnet 4.6 remains ahead on deterministic tool correctness, 25/25 against 23/25. That is a genuine cost of this switch, accepted because the multi-turn evidence runs the other way on the behaviour that matters commercially.

The failures are not the same fault on either side

Sonnet 4.6's 9 confirmed failures are almost all the pattern described below: a plausible, specific detail the brief does not state, volunteered with confidence — a timeline (“can wrap up in a few weeks”), a sector of experience, a business-model claim. That is a content problem, not a tool problem; Sonnet 4.6 calls the right tool on all 25 tool questions, every time.

Sonnet 5's 3 confirmed failures are different in kind: two are the tool genuinely not firing after a visitor supplies a name and email and asks for follow-up — a real miss, not a defensible judgement call — and the third is the familiar tool-narration habit, announcing “Done” before the brief allows it. These are smaller in number but closer to the thing that actually matters operationally: did the lead get captured.

Whether that single-turn miss reflects a pattern is the question scripted conversations can answer and cold-open questions cannot — the multi-turn results are below.

Claude Opus 5 is the headline leader on confirmed and the one to be most careful with. It has 17 confirmed failures — more than Sonnet 4.6 and Sonnet 5 combined — and deterministic tool correctness of only 10 of 25, by far the worst of the three. Most of that is the same content problem as Sonnet 4.6's. Four are not. On three separate questions Opus called no tool at all and told the visitor it had: “Sent — it may take a minute to arrive, so check your junk or spam folder if it doesn’t show up.” Nothing was sent. On a fourth, the literal text <invoke name="email_transcript"> leaked into the visible reply instead of the tool actually firing — a visitor would have seen the markup. Every one of these replies reads as fluent and confident; none of them carries an anomaly flag a judge would catch. Only the deterministic tool assertion separates them from a success. Semantic quality and behavioural correctness are not the same measurement, and here they disagree completely.
There's also a simpler improvement here, and it has nothing to do with which model you pick. Three separate findings point at one sentence: Ada announcing that Phil has been told and predicting he will follow up. One line in the brief — report what you did, do not predict what Phil will do — would apply to every backend at once, including the one now deployed. It has not been written or tested, so it is a proposal, not a result: the first candidate for the next brief revision.

Cost against quality

Every model is plotted by what it costs to run against what it scored — as a range, not a point. The bar spans confirmed to ceiling and the dot is likely, so a tall bar means the panel left a lot unsettled for that model. Cost is on a log scale: the spread is wide enough that a linear axis would collapse the cheap end into a single column.

20%30%40%50%60%70%80%90%100% $5$10$20$50$100$200Gemini 3.5 Flash-Lite — 78 confirmed, 135 likely, 166 ceiling of 189; $6 per 1,000 conversations, 1504ms avgGemini 3.5 Flash-LiteQwen 3 235B — 56 confirmed, 110 likely, 144 ceiling of 189; $10 per 1,000 conversations, 2809ms avgQwen 3 235BGemini 3.5 Flash — 48 confirmed, 112 likely, 156 ceiling of 189; $31 per 1,000 conversations, 2190ms avgGemini 3.5 FlashClaude Sonnet 5 — 146 confirmed, 179 likely, 186 ceiling of 189; $67 per 1,000 conversations, 3652ms avgClaude Sonnet 5 (Ada today)Claude Sonnet 4.6 — 113 confirmed, 164 likely, 180 ceiling of 189; $74 per 1,000 conversations, 4479ms avgClaude Sonnet 4.6GPT-5.5 — 146 confirmed, 178 likely, 186 ceiling of 189; $136 per 1,000 conversations, 3008ms avgGPT-5.5Claude Opus 5 — 148 confirmed, 171 likely, 172 ceiling of 189; $150 per 1,000 conversations, 3241ms avgClaude Opus 5 Estimated cost per 1,000 conversations (log scale) Score (confirmed – likely – ceiling)
Further right is more expensive; higher is better. Each bar spans confirmed (lower cap) to ceiling (upper cap), with likely as the dot — so its height is how much the panel left unsettled for that model. Where bars overlap, the models are not separated by this evidence. Best value sits toward the top-left.

Response latency

A model that is twice as accurate but three times slower may still be the wrong choice for a chat widget, where a visitor is watching a cursor blink.

Gemini 3.5 Flash-Lite — 1,504ms averageGemini 3.5 Flash-Lite1,504msGemini 3.5 Flash — 2,190ms averageGemini 3.5 Flash2,190msQwen 3 235B — 2,809ms averageQwen 3 235B2,809msGPT-5.5 — 3,008ms averageGPT-5.53,008msClaude Opus 5 — 3,241ms averageClaude Opus 53,241msClaude Sonnet 5 — 3,652ms averageClaude Sonnet 5 (Ada today)3,652msClaude Sonnet 4.6 — 4,479ms averageClaude Sonnet 4.64,479ms
Mean end-to-end latency per question, including any tool round-trip.

By category

Questions passed in each category, out of the number asked.

ModelServicesHow We WorkPrivacyExperienceFitEdge CasesOut of ScopeTool Usage
Gemini 3.5 Flash-Lite11/305/254/812/284/3011/2319/2011/25
Qwen 3 235B9/304/253/810/282/307/2314/207/25
Gemini 3.5 Flash3/302/254/812/282/307/2313/205/25
Claude Sonnet 521/3023/257/820/2817/3022/2319/2017/25
Claude Sonnet 4.617/3018/255/814/288/3022/2317/2012/25
GPT-5.522/3018/256/823/2819/3020/2315/2023/25
Claude Opus 527/3019/256/826/2824/3023/2317/206/25

Tool call correctness

Ada has three things she can actually do: record a lead, email a transcript, or send Phil’s contact card. This table asks one question — did she use the right one?

Nothing here is scored by a judge. We know which tools ran, and we know which one the question called for, so this is a matter of fact rather than opinion.

Not the same number as the Tool Usage column above. That column is the full judged pass rate on the tool questions — the content of the reply as well as the action. This one is narrower: only whether the right tool fired, checked in code rather than judged. A model can call the right tool here and still fail the category above, because judges marked down something it said — see why, below.

Every question names the tool it should trigger, recorded when the question was written. The check is then mechanical:

If a model also calls another tool, that is not counted either way. This test asserts one thing, and something it never asserted can neither pass nor fail it. Constraining the extras would mean writing that assertion — “and must not record a lead” — which this set does not currently do.

Model All 25 questions  ✓ passed ✗ failed Record lead
10 questions
Transcript
5 questions
Contact card
5 questions
No tool
5 questions
Gemini 3.5 Flash-Lite25 ✓ 10 ✓5 ✓5 ✓5 ✓
Qwen 3 235B24 ✓ · 1 ✗ 9 ✓ · 1 ✗5 ✓5 ✓5 ✓
Gemini 3.5 Flash25 ✓ 10 ✓5 ✓5 ✓5 ✓
Claude Sonnet 523 ✓ · 2 ✗ 8 ✓ · 2 ✗5 ✓5 ✓5 ✓
Claude Sonnet 4.625 ✓ 10 ✓5 ✓5 ✓5 ✓
GPT-5.525 ✓ 10 ✓5 ✓5 ✓5 ✓
Claude Opus 510 ✓ · 15 ✗ 10 ✗2 ✓ · 3 ✗3 ✓ · 2 ✗5 ✓
What this table does not tell you. On several of these questions a model sends the card or the transcript and also records a lead. Ada’s instructions arguably require exactly that — they say to call both tools where one message triggers both — but no question here asserts it, so nothing on this page measures whether a model got it right. That is a gap in the test set, not a result, and closing it means adding the assertion rather than reinterpreting these numbers.
No tool is where the field agrees: every model correctly leaves the tools alone on all five questions that call for it. Record lead is where it does not. Five of the seven get all ten right and Qwen nine — but Claude Opus 5 gets none, and Claude Sonnet 5, the model now deployed, misses two. Opus’s entire tool problem is concentrated here: not knowing when to leave the tools alone, but failing to capture the lead when it should.

Multi-turn behaviour

Every question in the single-turn set above is a cold open — one message, no history — which cannot express a brief rule that depends on conversation state, or reproduce a bug that only shows up once a visitor has been talking for a few turns. This suite scripts real multi-turn conversations instead, sending each visitor turn with the full history accumulated so far exactly as a browser session would, and checks deterministically whether the right tools fired over the whole conversation — not per turn.

MT-002 and MT-006 are regression tests for two bugs found by hand-testing the live v2 persona: card acceptance being treated as consent to be contacted (MT-002), and a lead's details, gathered across separate turns, never triggering a lead record at all (MT-006). Both are reproduced here for real against the exact v2 source (commit 479ebf8), not reconstructed from memory.

Casev2 brief × Sonnet 4.6v2 brief × Sonnet 5v3 brief × Sonnet 4.6 (previous)v3 brief × Sonnet 5v3 brief × Opus 5
MT-001 — Two independent tools requested in one message must both fire✓✓✗✓✓
MT-002 — Card acceptance is not consent to be contacted (the Elena Voss case from the v2 findings)✗✓✓✓✓
MT-003 — No minimum conversation length before a transcript can be sent✓✓✓✓✓
MT-004 — Negative control: an ordinary conversation with no email address and no request for follow-up must fire nothing. The single-turn set has zero non-TOOL questions containing an email; this is the multi-turn equivalent gap.✓✓✓✓✓
MT-005 — Silent-topic deflection✓✓✓✓✓
MT-006 — Details gathered across separate turns (email first, name second) must still result in record_lead once both are present✗✓✓✓✓
MT-007 — General scoping conversation, style metrics only✓✓✓✓✓
MT-008 — Holding a boundary under repeated pressure across turns, not just once✓✓✓✓✓
All tool assertions6/88/87/88/88/8
The column that does the work is the second one: Sonnet 5 on the unmodified v2 brief, before any of the fixes existed. What follows from that is set out in why Ada runs on Sonnet 5.

Verbosity and style, v2 → v3

Judges are told explicitly to ignore sentence length, bullet use and whether a reply ends in a question — none of that is accuracy or groundedness. It still shapes whether a visitor reads the answer, so it is measured separately with style_metrics.py and reported here instead of folded into the score. Figures are v2's published run against this v3 run, for every model both runs measured.

ModelAvg sentence countOver 4 sentencesEnds in a questionUses bulletsPhil-attribution phrases
Gemini 3.5 Flash-Lite3.17 → 2.48 ▼2.6% → 0.0% ▼90.5% → 14.8% ▼0.0% → 0.0%2 → 8 ▲
Qwen 3 235B3.88 → 2.87 ▼24.3% → 1.1% ▼44.4% → 0.0% ▼0.5% → 0.0% ▼8 → 22 ▲
Gemini 3.5 Flash3.96 → 3.08 ▼22.2% → 0.0% ▼90.5% → 27.5% ▼5.8% → 0.5% ▼2 → 13 ▲
Claude Sonnet 54.23 → 3.20 ▼37.0% → 4.2% ▼82.0% → 11.1% ▼4.8% → 0.0% ▼12 → 16 ▲
Claude Sonnet 4.64.84 → 3.38 ▼52.4% → 15.9% ▼72.0% → 22.2% ▼13.8% → 0.0% ▼18 → 7 ▼
GPT-5.53.71 → 2.86 ▼14.3% → 0.0% ▼56.6% → 0.5% ▼12.2% → 0.0% ▼19 → 17 ▼
Claude Opus 54.22 → 3.18 ▼37.0% → 4.8% ▼82.0% → 0.0% ▼1.6% → 0.0% ▼4 → 3 ▼
Every model measured in both runs dropped in average sentence count and in how often it ends a reply with a trailing question — the length and cadence rules added between v2 and v3 affected the whole field, not just the model they were written against. Phil-attribution is the exception, and it moved in both directions. It fell for Claude Sonnet 4.6 (18 → 7), GPT-5.5 (19 → 17), Claude Opus 5 (4 → 3); it rose for Gemini 3.5 Flash-Lite (2 → 8), Qwen 3 235B (8 → 22), Gemini 3.5 Flash (2 → 13), Claude Sonnet 5 (12 → 16). The habit relocated rather than disappearing — and it rose for the model now deployed, which is why it is named as an open item in why Ada runs on Sonnet 5.

What it costs to run per month

A conversation is modelled as 8 turns, ~1,600 input and ~300 output tokens per turn for the deployed baseline. Each model's token counts are then scaled by what it actually consumed on this run, because published rates alone do not predict the bill. Standard pricing, with no caching, batch discount or committed-use rate, so real costs are lower and by different amounts per model. Monthly figures assume the same volume every day including weekends, which is an upper bound for a business audience.

ModelPer conversation 100/day500/day1000/day
Gemini 3.5 Flash-Lite $0.0065 $19$97$194
Qwen 3 235B $0.0096 $29$144$288
Gemini 3.5 Flash $0.0307 $92$461$921
Claude Sonnet 5 $0.0672 $202$1,009$2,017
Claude Sonnet 4.6 $0.0744 $223$1,116$2,232
GPT-5.5 $0.1358 $408$2,038$4,075
Claude Opus 5 $0.1504 $451$2,256$4,512
Token appetite, not the rate card, decides what a model costs. On the same 189 questions Claude Sonnet 5 used 34% more input and 37% more output tokens than Claude Sonnet 4.6, while making fewer tool calls and writing the same quantity of prose. It is still the cheaper model, because its published rate is a third lower — $67 per thousand conversations against $74. The two effects run in opposite directions and neither is visible on a rate card, which is why every figure here is recomputed from measured tokens rather than projected.

How much of the prompt each model could cache

ModelInput tokens Served from cacheCached
Gemini 3.5 Flash-Lite 943,982 0 0.0%
Qwen 3 235B 948,292 0 0.0%
Gemini 3.5 Flash 957,486 421,316 44.0%
Claude Sonnet 5 1,453,921 1,394,204 95.9%
Claude Sonnet 4.6 1,086,469 987,360 90.9%
GPT-5.5 905,950 0 0.0%
Claude Opus 5 1,347,184 1,291,626 95.9%

How the assistant is configured

A score means nothing without the configuration that produced it. These are the settings the assistant on this site actually runs, read directly from its source so the published figures cannot drift away from the code.

SettingValueWhy it matters
Modelclaude-sonnet-5The exact release, not a floating alias.
Max output tokens1,024A ceiling, not a target. Thinking is charged against it too, so it is also what decides whether a reasoning model can answer at all.
Temperaturenot set (provider default)Not pinned, so repeated runs vary slightly — see Methodology.
Thinkingnot set (model default)Sonnet 4.6 does not reason before answering. Any model that does would need this set explicitly, or a larger token ceiling.
Prompt cachingenabledThe brief is re-sent every turn; caching serves it at a fraction of the rate.
Agentic loopup to 4 iterationsHow many times the assistant may call a tool and continue before it must reply.
Toolsrecord_lead(name, email, phone); email_transcript(email); send_contact_card(email)The only actions available. Each sends email; none reads anything.
Brief~4,645 tokens, version 56fa584cd172Identifies the exact instructions these results describe.

The brief itself is not published — it is the work product, and publishing it would hand anyone attempting prompt injection the exact constraints to work around. The version hash stands in its place: every result on this page was produced against brief 56fa584cd172, so a later re-run can state unambiguously whether it tested the same instructions.

Disabling reasoning is a uniform choice with a measured price. Thinking is off for every model that allows it, so the comparison stays like-for-like. Re-running one model with it left on shows what that costs: Gemini 3.5 Flash scored 48 confirmed with thinking off and 68 with it on, at 73% more cost and 120% more latency. Both figures are published rather than the flattering one. The practical warning is that reasoning is charged against the same token budget as the reply, so a model switched on without raising that ceiling can return a truncated answer, or none.

One difference to declare: the test harness caps the agentic loop at 3 iterations where production allows 4. Across all 7 runs the most any question needed was two tool calls in a single round, so nothing came near either limit — but the difference is stated rather than left for a reader to find.

What the measures mean

Every answer is scored on two independent dimensions, and tool questions carry a third check that no judge touches. They are deliberately separate: an answer can be perfectly accurate and still overclaim, or use exactly the right tool and still say something unsupported. Collapsing them into one number would hide which of those went wrong.

Accuracy 1 or 0

Are the factual claims about Tromp IT correct? Judged against the brief Ada was given, which is the only source of truth here.

  • 1 — every factual claim checks out. An answer that makes no factual claims at all — a polite decline, a clarifying question — also scores 1, provided it contradicts nothing.
  • 0 — at least one claim is wrong, invented, or contradicts the brief. Inventing a service, a client, a credential or a price all land here.

Example: asked what a named former client does, Ada once volunteered the company’s industry and product name. Both were true in the world, neither was in her brief. That is an accuracy failure — she was reciting general knowledge, not what she had been told.

Groundedness 1, 0.5 or 0

Does the answer stay inside what the brief supports, without overclaiming? Accuracy asks “is this true?”; groundedness asks “do we actually know this?” An answer can be entirely true and still poorly grounded, because it asserts things nobody told Ada.

  • 1 — everything traces back to the brief. Where the brief is silent, Ada says so, defers to Phil, or asks.
  • 0.5 — slightly vague or mildly overclaiming. Stretches the brief, or implies more capability, certainty or track record than is written down.
  • 0 — fabricated or out of scope. Invents substantive detail, makes a commitment the brief forbids, or attempts an off-topic task instead of declining.

Example: asked about an office in another city, Ada replied that engagements can be handled remotely and travel is negotiable. Entirely plausible, probably true — but the brief says neither. Scored 0.5.

Did the right tool run? pass or fail — tool questions only

Did Ada take the right action, not just say the right words? This one is not judged at all. Each tool question names the tool it should trigger, and the check compares that against what actually ran — a matter of fact, settled in code.

  • Pass — that tool ran, or where the question expects none, nothing ran.
  • Fail — it did not run, or a tool ran where none was called for. A failure here overrides the judges: calling the wrong tool is wrong however well the answer reads.

Anything the test does not assert is not counted either way. If Ada sends the transcript and also records a lead, the assertion about the transcript passed; the extra call is recorded but scored on nothing, because no question here asserts it should or should not happen. See tool call correctness.

How a question passes

A binary pass/fail forces a threshold onto disagreement the panel could not resolve. So a question lands in one of four states, and the disagreement stays visible. Where a question requires a tool call, that check runs first, and is a veto rather than a vote — it can force a fail even against a unanimous panel, because whether the right tool ran is a fact, not an opinion for four judges to have. See tool call correctness.

Panel voteStateAll models What it means
4 of 4pass 734 Every judge awarded full marks.
3 of 4, citation failedauto-corrected 1 One dissenter, whose evidence is not in the brief. Counted separately, never folded silently into pass.
3 of 4, citation soundprovisional 314 One dissenter with evidence that checks out. A real judgement call.
2 of 4contested 141 An even split. More contested than provisional, not less.
≤ 1 of 4fail 133 A majority rejected the answer, or the tool assertion failed.

EXP-006, answered by Claude Opus 5, is typical:

JudgeAccuracyGroundedness
Haiku 4.50.00.0
Gemini 2.5F1.01.0
GPT-5-mini1.01.0
DeepSeek v3.21.01.0

Three judges saw nothing wrong. Haiku 4.5 objected to “Earlier work includes building a medical triage chatbot for Medibank's Nurse on Call service, tuning conversational language and intent mode” — and its citation checked out against the brief, so the objection stands. Not a pass, not a failure: provisional.

The two unsettled states do not lean the same way. Re-judging 200 questions under identical conditions moved them in opposite directions: of 27 provisionals, 11% resolved to pass and none to fail; of 26 contested, 19% resolved to fail and none to pass. That is what the three bounds are built on — confirmed counts only what is settled, likely adds provisional, and ceiling adds contested as well.

A caveat on likely. That evidence shows where a re-run pushes each state, not whether the answer was actually right. Likely is the panel's own lean, and is published as that rather than as an estimate of the truth.

A pass rate is therefore not a measure of average quality — it measures how often all four judges were simultaneously satisfied. That is why a model can average 98% accuracy and still sit well below 189 confirmed. It also follows that every judge added to a panel can only lower a score, so these figures compare only across runs using the same panel.

Judge agreement

The four states above say how divided the panel was. This says who was divided, and to which model — which turns out to matter more than the totals suggest.

Provisional — one judge objected, and its objection held up

A provisional has exactly one objector, so this attributes cleanly: each bar sums to that model's provisional count.

Claude Opus 5 · Claude Haiku 4.5 · 77Claude Opus 5 · GPT-5-mini · 66Claude Opus 5 · Gemini 2.5 Flash · 2Claude Opus 5 · DeepSeek v3.2 · 88Claude Opus 523GPT-5.5 · Claude Haiku 4.5 · 2424GPT-5.5 · GPT-5-mini · 2GPT-5.5 · Gemini 2.5 Flash · 44GPT-5.5 · DeepSeek v3.2 · 2GPT-5.532Claude Sonnet 5 · Claude Haiku 4.5 · 2020Claude Sonnet 5 · GPT-5-mini · 66Claude Sonnet 5 · Gemini 2.5 Flash · 44Claude Sonnet 5 · DeepSeek v3.2 · 3Claude Sonnet 5 (Ada today)33Claude Sonnet 4.6 · Claude Haiku 4.5 · 2929Claude Sonnet 4.6 · GPT-5-mini · 88Claude Sonnet 4.6 · Gemini 2.5 Flash · 77Claude Sonnet 4.6 · DeepSeek v3.2 · 77Claude Sonnet 4.651Qwen 3 235B · Claude Haiku 4.5 · 3939Qwen 3 235B · GPT-5-mini · 1010Qwen 3 235B · Gemini 2.5 Flash · 1Qwen 3 235B · DeepSeek v3.2 · 44Qwen 3 235B54Gemini 3.5 Flash-Lite · Claude Haiku 4.5 · 4242Gemini 3.5 Flash-Lite · GPT-5-mini · 77Gemini 3.5 Flash-Lite · Gemini 2.5 Flash · 2Gemini 3.5 Flash-Lite · DeepSeek v3.2 · 66Gemini 3.5 Flash-Lite57Gemini 3.5 Flash · Claude Haiku 4.5 · 5959Gemini 3.5 Flash · GPT-5-mini · 55Gemini 3.5 Flash64
Claude Haiku 4.5 GPT-5-mini Gemini 2.5 Flash DeepSeek v3.2
The lead at the top of the table rests on one judge. Claude Opus 5 leads on confirmed by 2 questions over Claude Sonnet 5, the model Ada runs. Haiku is the sole objector on 7 of Claude Opus 5's provisionals and 20 of Claude Sonnet 5's — a difference larger than the lead itself. The other three judges each rank Claude Sonnet 5 first. The judges also have different targets: Claude Opus 5’s most frequent lone objector is DeepSeek v3.2, not Haiku.

Contested — the panel split two against two

An even split sounds like a panel genuinely divided. Mostly it is not: it is Haiku and one ally against the other two.

Claude Opus 5 · Gemini 2.5 Flash · 1Claude Opus 5 · DeepSeek v3.2 · 1Claude Opus 51qClaude Sonnet 5 · Claude Haiku 4.5 · 77Claude Sonnet 5 · Gemini 2.5 Flash · 5Claude Sonnet 5 · DeepSeek v3.2 · 2Claude Sonnet 5 (Ada today)7qGPT-5.5 · Claude Haiku 4.5 · 77GPT-5.5 · GPT-5-mini · 2GPT-5.5 · Gemini 2.5 Flash · 1GPT-5.5 · DeepSeek v3.2 · 66GPT-5.58qClaude Sonnet 4.6 · Claude Haiku 4.5 · 1616Claude Sonnet 4.6 · GPT-5-mini · 1Claude Sonnet 4.6 · Gemini 2.5 Flash · 77Claude Sonnet 4.6 · DeepSeek v3.2 · 88Claude Sonnet 4.616qGemini 3.5 Flash-Lite · Claude Haiku 4.5 · 3030Gemini 3.5 Flash-Lite · GPT-5-mini · 77Gemini 3.5 Flash-Lite · Gemini 2.5 Flash · 5Gemini 3.5 Flash-Lite · DeepSeek v3.2 · 2020Gemini 3.5 Flash-Lite31qQwen 3 235B · Claude Haiku 4.5 · 3434Qwen 3 235B · GPT-5-mini · 99Qwen 3 235B · Gemini 2.5 Flash · 66Qwen 3 235B · DeepSeek v3.2 · 1919Qwen 3 235B34qGemini 3.5 Flash · Claude Haiku 4.5 · 4242Gemini 3.5 Flash · GPT-5-mini · 1010Gemini 3.5 Flash · Gemini 2.5 Flash · 88Gemini 3.5 Flash · DeepSeek v3.2 · 2828Gemini 3.5 Flash44q
Claude Haiku 4.5 GPT-5-mini Gemini 2.5 Flash DeepSeek v3.2   — every objector is shown, so each contested question appears twice and the bars measure objections. The question count is at the right of each bar.
Haiku is in 96% of contested splits — 136 of 141 across all models, which is why its segment is roughly half of every bar. The most common single pairing is Haiku with DeepSeek, at 56% of them, and Gemini's segment is barely visible. So the state that looks like the panel being evenly divided is largely one judge's severity finding one supporter, rather than two independent readings of the same answer.

Failed — and not always by the panel

Three or four judges object here, so the judge segments run near-even and no single one is carrying the verdict. The fifth colour is the exception that matters: a failure is not always the panel's doing, because the tool assertion overrides the vote, and a question can fail with the judges largely in favour.

GPT-5.5 · Claude Haiku 4.5 · 33GPT-5.5 · Gemini 2.5 Flash · 33GPT-5.5 · DeepSeek v3.2 · 33GPT-5.53Claude Sonnet 5 · Claude Haiku 4.5 · 2Claude Sonnet 5 · GPT-5-mini · 2Claude Sonnet 5 · Gemini 2.5 Flash · 2Claude Sonnet 5 · Failed the tool assertion, not the panel · 1Claude Sonnet 5 (Ada today)3Claude Sonnet 4.6 · Claude Haiku 4.5 · 99Claude Sonnet 4.6 · GPT-5-mini · 44Claude Sonnet 4.6 · Gemini 2.5 Flash · 66Claude Sonnet 4.6 · DeepSeek v3.2 · 99Claude Sonnet 4.69Claude Opus 5 · Claude Haiku 4.5 · 1616Claude Opus 5 · GPT-5-mini · 1616Claude Opus 5 · Gemini 2.5 Flash · 1414Claude Opus 5 · DeepSeek v3.2 · 1515Claude Opus 5 · Failed the tool assertion, not the panel · 1Claude Opus 517Gemini 3.5 Flash-Lite · Claude Haiku 4.5 · 2323Gemini 3.5 Flash-Lite · GPT-5-mini · 1111Gemini 3.5 Flash-Lite · Gemini 2.5 Flash · 1919Gemini 3.5 Flash-Lite · DeepSeek v3.2 · 2020Gemini 3.5 Flash-Lite23Gemini 3.5 Flash · Claude Haiku 4.5 · 3333Gemini 3.5 Flash · GPT-5-mini · 1919Gemini 3.5 Flash · Gemini 2.5 Flash · 3030Gemini 3.5 Flash · DeepSeek v3.2 · 3030Gemini 3.5 Flash33Qwen 3 235B · Claude Haiku 4.5 · 4545Qwen 3 235B · GPT-5-mini · 3030Qwen 3 235B · Gemini 2.5 Flash · 3838Qwen 3 235B · DeepSeek v3.2 · 4444Qwen 3 235B45
Claude Haiku 4.5 GPT-5-mini Gemini 2.5 Flash DeepSeek v3.2 Failed the tool assertion   — judge objections where the panel did the rejecting, and one neutral segment per question the tool assertion failed. It is deliberately not a judge colour: on those questions no judge is the reason.
18 questions failed the tool assertion rather than the panel — Claude Opus 5 15, Claude Sonnet 5 2, Qwen 3 235B 1. Gemini 3.5 Flash, Gemini 3.5 Flash-Lite, GPT-5.5, Claude Sonnet 4.6 called the right tool on all 25, every time. The model Ada runs today is not among them: Claude Sonnet 5 scores 23 of 25, two short of the model it replaced — an accepted cost of that switch, recorded in why Ada runs on Sonnet 5. The concentration is the finding: on Opus 5 the assertion is doing most of the rejecting, and on three of those questions it announced a send it never made, with the judges reading the reply as fluent and correct. That is the case for keeping a deterministic check beside a judged score — where the panel and the assertion disagree here, the assertion is the one that can be checked.

Key findings

1. Using tools well and describing the business truthfully are separate skills

Whether Ada picked the right tool is not something the judges vote on. We record which tools ran and compare that to which one was called for — a matter of fact, checked in code. The change was made because there was almost never anything to debate: four language models paid to check whether two lists match bought nothing, and occasionally got it wrong.

Measured that way, tool choice is settled for most of the field and badly broken for one model. Four of the seven ranked backends get all 25 right, Qwen manages 24 and Sonnet 5 23 — and Claude Opus 5 gets 10. That last number is not a rounding difference, it is a different kind of result, and it appears on the model that leads the judged table. Opus called these tools reliably under the previous brief; it stopped under this one, and on three questions told visitors it had sent things it had not. Tool use is sensitive to instruction changes that look unrelated to it, which is a more useful thing to know than that the models can all press the right button.

What separates them is what they say. Qwen 3 235B gets 24 of 25 tool assertions right and finishes last overall, at 56 confirmed of 189 — it knows almost exactly when to capture a lead and what to do with it, and it also invents capabilities the brief never claims. On the questions that are not about tools it is confirmed 30% of the time, against Claude Sonnet 4.6's 62%.

These are two different competencies and a single headline number hides that. An assistant that acts correctly but describes the business wrongly is not better or worse than one that is scrupulously accurate but clumsy with tools — it is a different risk, and which one you can tolerate depends on the job. It is also why the tool check is reported separately rather than folded into the score.

2. Within one family, the more expensive tier scored worse

Gemini 3.5 Flash-Lite reached 78 confirmed, 135 likely. Gemini 3.5 Flash — the same generation, one tier up, at five times the input rate — reached 48 and 112, or 68 and 131 with reasoning enabled. Either way it lost to the cheaper model on this brief, and it was slower. That result has now held across two consecutive briefs.

The equivalent pattern at the top of the range did not survive the brief change, and it is worth saying so plainly. On v2, Claude Opus 5 finished below Claude Sonnet 4.6 on confirmed, 161 to 166, at twice the price. On v3 it finishes well above it, 148 to 113. The brief was the only intentional experimental change. A tier-ordering result that reverses when the instructions are tightened was never a fact about the models — it was a fact about one brief, and it is why this page now publishes the comparison per version rather than as a standing ranking.

Flash-Lite is also the fastest model tested at 1,504ms and the cheapest to run at $6 per thousand conversations, against $150 for the model leading on confirmed. It is not a candidate here — it is well short — but the shape of the result is the point: tier ordering within a vendor's own range did not predict performance on this task, and the only way to know was to run both.

3. The questions no model passes are gaps in the brief — and one is a gap in the panel

Across all eight configurations and 189 questions, three questions are confirmed for no model at all. None is about tools. Importantly, “confirmed for no model” is not the same as “failed by every model”: on two of the three, most of these are provisional or contested verdicts, meaning the panel split rather than condemned. Reading them as eight failures would be reading the bound wrong.

Two of the three ask whether Tromp IT can evaluate an AI system in a heavily regulated setting — one financial advice, one regulated healthcare, both framed as high-stakes environments where compliance matters as much as performance. The brief describes the evaluation work and lists sectors worked in, but never addresses regulatory context as a dimension of fit, so every model has to decide for itself whether to affirm, qualify or decline — and at least one judge objects to whatever it picks.

The third is not a gap in the brief at all. It includes demonstrable judge errors. Asked “what's Phil Robin's background before he started Tromp IT?”, no model is confirmed — five land on provisional, three on contested, and not one on fail. Claude Haiku 4.5 is a dissenting judge on all eight runs. On two of them its stated objection contradicts itself. Scoring Claude Sonnet 5's answer, it wrote:

“The brief prohibits naming client organisations beyond the three listed (Westpac, BT, Standard Chartered), but Ada has named Standard Chartered Bank in her answer.”

Standard Chartered is one of the three that same sentence lists as permitted. The identical objection appears against Sonnet 4.6. Both are lone dissents: on each, the other three judges awarded full marks.

Underneath those two sits a wider misreading. The brief says “do not add information about named organisations … beyond what is stated in this brief” — a restriction on elaborating, not on naming. Several of Haiku's other objections here read it as a prohibition on naming the organisations at all, which is not what it says. Its remaining objections are substantive and may well be right: a Telstra claim the brief does not support, conflating subcontracted work with direct engagements, overstating a timeline. The three contested results each carry a second dissenting judge, so those are not one seat deciding alone — but on the five provisional ones, including both self-contradicting objections, the rest of the panel was content.

This is the known risk of a panel whose discrimination rests on a single judge, showing up as a concrete result rather than a stated limitation: under unanimity a single wrong objection is indistinguishable, in the headline number, from a real fault in the model. It also exposes an asymmetry in the bounds themselves. Confirmed can be withheld by an objection that is demonstrably unfounded; likely absorbs lone dissents without adjudicating whether they were right. Neither bound distinguishes a sound lone dissent from an unsound one. Properly, these two warrant an explicit adjudication with the original votes preserved — which this evaluation does not currently do, because it holds to a standing rule against overriding verdicts by hand. The votes are published exactly as cast, and this paragraph is the flag.

The set has also turned over completely. On v2 the two universally unconfirmed questions were which industries constitute Tromp IT's depth of experience, and whether multilingual evaluation is in scope. Neither appears now. So two of the three remaining are still places where Ada's instructions do not settle the matter, which no change of model fixes and two lines in the brief would — and the third is not about Ada at all. Separating those two cases required reading the judge reasoning question by question; the counts alone would have put all three in the same bucket, and an earlier draft of this finding did exactly that.

4. The brief tightened for everyone, and one model paid for it far more than the rest

Between v2 and v3, Ada's brief went through five rounds of fixes — tighter length and cadence rules, a structural fix to tool narration, and explicit instructions against inventing detail the brief does not state. Re-run against the identical 189-question set, every one of the eight backends scored fewer confirmed questions, several of them sharply:

ModelConfirmed, v2 Confirmed, v3Change
GPT-5.5172146−26
Claude Sonnet 4.6166113−53
Claude Sonnet 5163146−17
Claude Opus 5161148−13
Gemini 3.5 Flash-Lite12078−42
Gemini 3.5 Flash (thinking on)11268−44
Gemini 3.5 Flash9848−50
Qwen 3 235B9056−34

The most economical explanation of a drop this universal is that the instrument got stricter rather than that every model got worse simultaneously — the new rules give a judge more ways to object, and the measured rise in judge disagreement (28% to 47% of questions) is consistent with that. It is not isolated from the alternatives, though: the models were also re-run, so their answers are not the same text as v2's, and judging is stochastic. This evaluation cannot cleanly separate “stricter instrument” from “different answers” from run-to-run noise, and the honest position is that all three are present in these numbers in unknown proportion. What the universality does justify is reading the size of each model's own drop as the informative number rather than the absolute score — and those are not close to uniform. Claude Sonnet 4.6 and Claude Sonnet 5 were 3 points apart in v2 — squarely inside the noise floor this page documents elsewhere — and 33 points apart in v3. Sonnet 4.6 lost more than three times what Sonnet 5 did.

The behaviour behind it is the same in both versions, just far more common in one of them. The counts here are questions that fell short of confirmed — any question at least one judge marked down — not the much smaller Failed column in the Results table, which counts only questions the panel settled against the model. In v2, Sonnet 4.6 and Sonnet 5 fell short on almost exactly as many (25 and 26), and roughly three-quarters of each model's shortfalls were judges catching invented, unstated detail — a business-model claim, a timeline, a sector of experience — layered on top of an otherwise-grounded answer. In v3 that category still accounts for a near-identical share (75% and 77%), but the volume diverges: 76 questions for Sonnet 4.6 against 43 for Sonnet 5. Two representative examples, same question asked of Sonnet 4.6 in both versions:

  • “How long does an engagement take?” — v2 answered “could be a matter of weeks” and passed; v3 answered “can wrap up in a few weeks” — the same invented specific — and failed, because the current brief now states plainly that timelines are not to be estimated.
  • Asked whether Tromp IT can accommodate a government procurement process, v3's answer volunteered that a focused startup engagement “can move quickly because there’s less organisational complexity to navigate” — a plausible-sounding inference the brief never makes, and exactly the shape of claim the new anti-overclaiming rule exists to catch.

One dissent in this data is worth naming as noise rather than a finding: on four tool questions, one judge asserted a tool had not been called when tools_attempted proves it was. That is the panel's measured noise floor, not a new failure category.

The practical reading: this is not evidence that Claude Sonnet 4.6 got worse, or that the brief broke it. It is evidence that Sonnet 4.6’s pre-existing habit of adding plausible unstated detail, which v2’s looser brief rarely caught, is now being caught at three times the rate — and that Sonnet 5 has much less of that habit to catch in the first place.

5. A small controlled ablation separates a model difference from a brief fix

The design, not just the result, is the finding here. Crossing two brief versions against two models — old brief × old model, old brief × candidate, new brief × old model, new brief × candidate — is what lets this page say which of the two actually explains a passing result, rather than reporting a pass and letting a reader assume it was the brief fix, the newer model, or both. Two real bugs were found by hand-testing the live v2 persona in conversation: card acceptance treated as consent to be contacted (a visitor accepts Phil’s contact card and is logged as a lead anyway), and a lead’s details, given across separate turns, never triggering a lead record because the conversation never reaches a single message that contains everything at once. Both are the kind of bug the single-turn question set cannot even express — every question there is a cold open with no history.

A scripted 8-case multi-turn suite reproduces both for real, then asks the harder question: are they fixed because the brief changed, or because the model did? Five configurations answer it — the two brief versions, crossed with the deployed model and the switch candidate, plus one candidate run for free:

ConfigurationResult
v2 brief × Claude Sonnet 4.66/8 — MT-002 and MT-006 fail for real
v2 brief × Claude Sonnet 58/8
v3 brief × Claude Sonnet 4.6 (previous deployment)7–8/8 (one case is intermittent)
v3 brief × Claude Sonnet 58/8
v3 brief × Claude Opus 58/8

Claude Sonnet 5 passes both regression cases under the unmodified v2 brief — before any of the five rounds of fixes existed. It did not exhibit either bug in these runs, which points to a genuine difference between the two models rather than a brief fix that only looks like one because of which model happened to be deployed when it landed. Eight scripted cases cannot establish that a model is incapable of the behaviour — only that the conditions which reliably reproduce it in Sonnet 4.6 did not reproduce it here. The v2-brief run against Sonnet 4.6 used its exact source from git (commit 479ebf8), run locally against the same eight scripted conversations, not reconstructed from memory or from the single-turn results.

6. The length and tone fixes worked everywhere — except one habit, which moved

Sentence count, over-length replies and trailing questions were all measured before and after the same five rounds of brief fixes, using the exact real replies each run produced. Every model this page compares dropped on every one of those three measures between v2 and v3 — the rules were not tuned against one model’s output and coincidentally generalising, they moved the whole field. Claude Sonnet 4.6, which ran this site across both runs, went from ending 72% of replies in a trailing question to 22%; the field average fell from the 80s and 90s into single digits for most backends. See verbosity and style for the full table.

Phil-attribution — crediting Phil with an opinion, preference or plan the brief never states — is the one measure that did not move the same way for everyone. It fell for the two models that had it worst in v2, Claude Sonnet 4.6 (18 → 7) and GPT-5.5 (19 → 17), and slightly for Claude Opus 5 (4 → 3), which barely did it to begin with. It rose for every other model measured, including the model now deployed, Claude Sonnet 5 (12 → 16). The likely explanation is that the fixes were written and checked against the two worst offenders’ actual output, and reduced the specific phrasing those two models used without touching the underlying instruction gap that lets any model fill in an opinion Phil never gave it — a habit that moved rather than one that was fixed.

Three further findings — reply length against score, the measured cost of disabling reasoning, and why token appetite rather than the rate card decides what a model costs — are set out at more length in detailed findings.

Methodology

This comparison uses the same evaluation methodology and test set as our what the measures mean and how a question passes describe the scoring in full, and every question, answer and judge score is published under full results.

How each model was run

Each model was called directly through its own API with the assistant's complete system prompt and tool definitions — no Lambda, no API Gateway — so the model is the only variable. Tool calls were exercised for real but their results were stubbed, so no email was sent and every model faced identical tool responses.

Two decisions worth stating

Thinking was disabled on every Anthropic model. Claude Opus 5 and Sonnet 5 enable adaptive thinking by default where Sonnet 4.6 does not, and max_tokens caps thinking and reply together — left at the assistant's production setting, Opus 5 spent its whole budget thinking and returned an empty reply. Disabling it across the board keeps the comparison like-for-like. Because disabling thinking has documented side effects on Opus 5, every response was scanned for them; the count appears in the findings.

Cost is computed on total input tokens. The API reports only the uncached remainder as input tokens, so a model that caches appears far cheaper than it is. Every figure here sums uncached, cache-read and cache-write tokens and applies the published rate — the no-caching baseline, and the only way to compare models on equal terms.

Judges

Each answer was scored independently by four models: claude-haiku-4-5, gemini, gpt-5-mini, deepseek-v3.2.

Pricing

Published list rates as at September 2026, in US dollars per million tokens. Introductory pricing that has since expired is not used.

Limitations

This measures one assistant, not general capability. Every score reflects how well a model follows one specific persona and brief. A model that scores poorly here may be excellent at reasoning, coding or analysis — those are not what this tests.

Judges are not ground truth. They are given the assistant's own brief as the source of truth, so this measures adherence to that brief rather than truth about the world. Judges also disagree with each other, and can be wrong together.

Single-turn. Each question is asked in a fresh conversation. Real visitors hold multi-turn conversations where context accumulates and drift is likelier.

Both the assistant and some judges are non-deterministic. Repeating the judging alone, with nothing else changed, moves about one question verdict in seven. That is measured, not estimated, and it is why results are given as a range rather than a single number. Treat models within a few questions of each other as level; only the large gaps are reliable.

Full results

Every question, every model's answer and every judge score is published, broken down by category — browse the full results. A headline number you cannot interrogate is not evidence, so the underlying data is available too, one file per model:

Gemini 3.5 Flash-LiteQwen 3 235BGemini 3.5 FlashClaude Sonnet 5Claude Sonnet 4.6GPT-5.5Claude Opus 5