Five models, one corpus
This site can run five models behind one chat endpoint. This page is what happened when all five answered the same 22 questions, in the same order, against the same server, on the same afternoon — graded by the same checker, and costed at list price.
The point is not to crown a winner. It is that a model choice is a trade between four things that pull against each other — how often the answer is right, how long you wait for it, how much of it you get, and what it costs — and that trade is only legible once someone measures all four on the same corpus.
Measured 27 Jul 2026 to 31 Jul 2026. Published 31 Jul 2026, built into this page 19 Aug 2026. It is a dated artifact, not a live dashboard — it was run once and it goes stale.
Quality against cost
Quality against latency
The numbers underneath
One panel per measurement, each sorted best-first. Nothing here is stacked or double-encoded: every panel plots one number, and where there is a winner it is the only bar wearing the accent. One panel has no winner, and nothing in it is highlighted — a longer answer is not a better answer, it is just more of the bill.
The scorecard
Pass rate by model and by what the group is testing. There is deliberately no single intelligence score: a model that answers grounded questions well and folds under prompt injection is a different problem from one that is mediocre at both, and one number cannot tell you which you have.
| model | grounded | injection | refusal | roleFit | all |
|---|---|---|---|---|---|
| claude-haiku-4.5 | 100% | — | — | — | 100% |
| deepseek-v4-flash | 100% | 83% | 100% | 100% | 94% |
| gemini-3.5-flash-lite | 83% | 100% | 100% | 100% | 95% |
| gpt-5-mini | 67% | 100% | 75% | 100% | 86% |
| gpt-5.6-luna | 83% | 83% | 100% | 100% | 91% |
Everything, as a table
The same figures the charts plot, plus the ones no chart shows. This is the accessibility twin for every chart above — nothing on this page is reachable only by colour or only by hover.
| model | passed / answered | broke | p50 TTFT | tok/s | in | out | cache | $ / turn | $ run | claims verified | price |
|---|---|---|---|---|---|---|---|---|---|---|---|
| anthropic/claude-haiku-4.5 | 6/6 | 0 | — | — | — | — | 84.5% | $0.0024 | $0.0233 | 10/12 | confirmed |
| deepseek/deepseek-v4-flash | 15/16 | 6/22 | 2.10 s | 32.1 | 12.2k | 186 | 47.6% | $0.00095 | $0.0240 | 10/17 | no price on record |
| google/gemini-3.5-flash-lite | 21/22 | 0 | 834 ms | 43.6 | 6.4k | 92 | 15.6% | $0.0022 | $0.0797 | 14/17 | cache rate derived |
| openai/gpt-5-mini | 19/22 | 0 | 6.67 s | 72.3 | 6.0k | 576 | 86.1% | $0.0013 | $0.0766 | 14/41 | cache rate derived |
| openai/gpt-5.6-luna | 20/22 | 0 | 1.20 s | 55.0 | 7.8k | 108 | 85.3% | $0.0012 | $0.0752 | 18/38 | confirmed |
The run archive
Every run ever published, per model, with the date it was measured. Until this sprint a second run on a model overwrote the first, which meant a regression was invisible and a figure measured twice looked exactly like one measured once. Runs are now kept; the charts above read the most recent per model.
What this does not measure
- Each model answered each question once. Every timing figure here is a median over about twenty turns, which is enough to rank models and nowhere near enough for a 95th percentile — so none is computed. Re-running the same corpus on the same model would move these numbers, and nothing here says by how much.
- Time to first token is the server's own measurement, with the browser network excluded — but not the hop from a home connection to the provider, nor whatever load that provider was under that afternoon. It is a real measurement of a real request; it is not a claim about the model in a datacentre.
- Cases pass by containing specific evidence — a name, a number, a refusal. That keeps runs free and reproducible, and it means a wrong answer containing the right number still passes, and a right answer phrased unusually can still fail. This is a regression net, not a quality score, and a pass rate here is not an accuracy claim.
- Every dollar figure is computed from published per-token rates on the date below and the tokens the run actually used. It is an estimate at list price. Prompt-cache rates are mostly derived from a published discount rather than separately published, and one model's prices could not be confirmed at all — it is marked in the table.
- Some turns died mid-stream and never produced an answer. Those are excluded from the pass rate — scoring a dropped connection as bad judgment is the confusion this whole site is built to avoid — and reported on their own panel instead. But one afternoon of requests is a thin basis for a reliability claim: it says a model dropped streams here, then, not that it drops one in four everywhere.
- Every model got byte-identical prompts, so the spread in input tokens is mostly the tokenizers disagreeing about how to count the same text, not one model being sent more work. Seconds and dollars compare across rows; tokens really do not.
- Twenty-two cases about one person's résumé and the ways someone might try to break a chatbot answering questions about it. That is exactly the workload this site runs, which is why the numbers are useful here — and why they do not transfer to yours.