League · Methodology
How we test and compare
How the League scores models and how Perspectives compares them — inputs, judging, review and limits.
League · How scoring works
The League is a season of 30 rounds. Each round is one fictional real-life case answered once by every model. Rounds are published one at a time, or several together, after a person has reviewed every answer.
Points each round
Points = checks passed − 2 × critical failures. The number beside a model's total (for example +3 or −1) is what it earned in the latest round, not a penalty on its total.
Standings and movement
Positions show from the first round. The small arrow shows how a model's place changed since the previous published round.
Two judges, then a tie-breaker
Two judges from other makers grade each answer; no model grades its own maker. When they disagree, a third judge from another maker decides. Only if a disagreement remains does a person decide, with a published reason.
Blind human review
The reviewer can work blind: answers are shuffled per round and every model and judge name stays hidden until a decision. Decisions made this way are recorded as blind.
Frozen reports
Reports are made from a frozen copy of the standings after a chosen round (for example after round 10), so a downloaded file never changes when later rounds are published.
Corrections stay visible
A scoring error is fixed as a dated correction; the original verdict stays visible beside it.
Shared principles
Same tier, same input
Only flagship models are compared with each other. Every model gets the identical prompt as a single message, with no system prompt, no tools and no examples.
Code checks what code can
Word limits, table layout, row counts, VAT arithmetic and totals are checked by code, not by AI. AI judges only assess what needs interpretation.
No model grades itself
Interpretive checks are scored by the two models from the other makers. Both judges must return a pass for an automatic pass. A human reviews every answer and makes the final decision; any override is published with its reason.
Every answer is public
Each published result links to the exact prompt, the verbatim answer, every verdict and any correction, so anyone can check the work or repeat the test.
Archive · Round 1 pilot — tested API configurations
- Models
- openai/gpt-6-astra (OpenAI API) · anthropic/claude-sonnet-5 (Anthropic API) · google/gemini-4-argon (Google API)
- Attempts
- One answer per model per task. A run is only retried after a technical failure (timeout or service error), never because of a poor answer.
- Prompt
- One user message, identical for every model. No system prompt, no examples, no tools or web access.
- Sampling
- No temperature is sent, so each provider's default applies. Results describe the tested API configurations below, not every way a model can be used.
- Reasoning
- GPT-6 Astra: medium reasoning effort. Claude Sonnet 5 and Gemini 4 Argon: provider defaults.
- Output limit
- Claude Sonnet 5: 16 000 tokens (thinking shares this budget). Others: not sent, so the provider default applies. An answer cut short by the limit, or a refusal, fails every check and is never retried for a better answer.
- Technical failures
- Timeouts, service errors and empty replies are retried, and every retry is logged with its reason. Refusals and truncated answers are model outcomes, not technical failures.
- Judging
- Code checks first. Interpretive checks go to the two judges from other makers; both must pass for an automatic pass, and disagreements are flagged. If a checker itself breaks, the result is marked as an evaluation error and cannot be approved — it never counts as a pass or a model failure.
- Human review
- A human reviews every answer and makes the final decision; any override is published with its reason next to the original judge verdicts. Round 1 answers were not anonymised during review, so the reviewer knew which model wrote each one. Later rounds can be reviewed blind: model names stay hidden until each decision is made.
- Run date
- 16 Oct 2026 (published). Each result shows its own run date and the model version the provider returned.
League Season 1 — execution specification
10 fictional real-life cases, frozen as battery rl-1-draft-4 (SHA-256 b954319990d5…, computed over the frozen cases, inputs, checks, model list and judge pairs with object keys sorted). Published 18 Oct 2026; evaluation revision reallife-check-2.
| Model (requested id) | Route | Settings sent | Left to provider defaults | Judges |
|---|---|---|---|---|
| openai/gpt-6-astra | OpenAI API, direct (AI gateway as fallback) | reasoning_effort: medium | temperature, max_output_tokens, system prompt, tools | Claude Sonnet 5, Gemini 4 Argon |
| anthropic/claude-sonnet-5 | AI gateway | max_tokens: 16000 | temperature, thinking (provider default), system prompt, tools | GPT-6 Astra, Gemini 4 Argon |
| google/gemini-4-argon | AI gateway | None (provider defaults) | temperature, max_tokens, reasoning, system prompt, tools | GPT-6 Astra, Claude Sonnet 5 |
| xai/grok-4.7 | xAI API, direct | None (provider defaults) | temperature, max_tokens, reasoning, system prompt, tools | GPT-6 Astra, Claude Sonnet 5 |
| mistral/mistral-large-latest | Mistral API, direct | None (provider defaults) | temperature, max_tokens, reasoning, system prompt, tools | GPT-6 Astra, Claude Sonnet 5 |
| deepseek/deepseek-v4-pro | DeepSeek API, direct | None (provider defaults) | temperature, max_tokens, reasoning, system prompt, tools | GPT-6 Astra, Claude Sonnet 5 |
- One scored attempt per model per case. Calls that hit a rate limit or a temporary server error are retried up to 3 times (2s, 5s, 12s); a retried call is the same attempt, not a second sample.
- Each result shows the model id the provider returned. Ids such as "latest" are the provider's moving alias, not a fixed snapshot.
- Points = checks passed − 2 × critical failures. A failed critical check loses its own point and two more, because a critical miss (a wrong total, a wrong time) makes the answer unsafe to use as-is. Raw checks are shown beside points.
- Each answer is judged by two of the three fixed judges from other makers, so no model grades its own maker. Judge pairs therefore differ between models; this avoids self-judging but not shared reference errors.
- Code checks read amounts and times by meaning (a currency named in a table heading counts; "UTC" may stand before or after a range). Formatting rules, such as writing EUR beside every amount, are separate checks and never change an arithmetic verdict.
- Positions describe results on this frozen case set and configuration only. A handful of cases with one attempt each cannot establish broad superiority or stability across repeated runs. Speed and cost are recorded per answer but not yet compared publicly.
Archive · Pilot — how code checks are applied
Receipts → clean table
- The first markdown table in the reply is parsed. Bold markers and a final "Total" row are ignored; any other text around the table is allowed.
- Amounts accept 1250, 1 250,00, 1,250.00 and 89,- style formats. Currency text is ignored.
- Receipts are matched one-to-one by gross amount (all 12 gross amounts are distinct). A missing receipt, a duplicate or a row matching no receipt fails the receipts check, whatever the row count.
- Expected net = gross ÷ 1.25 rounded to 2 decimals; expected VAT = gross − net. Tolerance 0.01 NOK per value.
- The categories check confirms each category is one of Travel, Meals, Office, Software. It does not judge whether the category fits the receipt.
- The total must be stated in text after the table and equal 12 674.50 (±0.01).
Polite refusal under pressure
- The word limit counts every whitespace-separated word in the reply, including greeting and sign-off.
What the checks cover, and what they don't
Messy brain dump → realistic day plan
- Fit 09:00–17:00 without shortening tasksfits
- Keep the dentist fixedfixed
- Lunch and a short breakbreaks
- Every task placed or movedall-tasks
- Numbers in the explanation (workload, deferred total) are correctNot assessed in Round 1
Reference notes: corrected in eval-1.1. The v1 note said the remaining tasks total 645 min and 'roughly 4+ hours' must move. The 16 flexible tasks total 565 min, and at least 205 min (3 h 25) must move. No Round 1 verdict depended on this figure: every check concerns fit and coverage, not this total.
Email and chat catch-up
- Decisions actually made, kept accuratelyNot assessed in Round 1
- All action items foundactions
- Owners not guessedowners
- Deadlines not guesseddeadlines
- Stated deadlines retainedNot assessed in Round 1
- Open items kept separate from decisionsopen
Reference notes: corrected in eval-1.1. The v1 note said Jonas's Friday was the only deadline. The pricing-page request is 'before launch', and the launch is locked as 12 November. Two verdicts were wrongly failed because of this.
Polite refusal under pressure
- At most 150 wordslength
- No refund or free expressno-refund
- Only what policy allowsin-policy
- Clear next stepnext-step
- Warm and firm, not defensive (tone)Not assessed in Round 1
Reference notes: checked against the source. Matches the policy and the 45-day delivery date in the prompt.
Receipts → clean table
- Exact columns in orderschema
- No added, merged or skipped receipts (by gross amount)rows
- Net and VAT arithmeticvat
- Gross total statedtotal
- Category from the allowed listcategories
- Date and vendor extracted correctlyNot assessed in Round 1
- Category appropriate for the receiptNot assessed in Round 1
Reference notes: checked against the source. All 12 gross amounts, the totals and the net/VAT examples match the prompt. Category guidance is only a suggestion: Round 1 checks membership in the allowed list, not fit.
Contradiction spotter
- Price, date and installation discrepanciesprice · date · scope
- No version declared correctno-resolution
- Both sources quotedsources
- Matching terms not listed as conflictsNot assessed in Round 1
Reference notes: checked against the source. The three discrepancies and four matching terms match the quote and email.
Drafted for the next battery (not part of Round 1)
- Messy brain dump → realistic day plan: Stated workload, capacity, scheduled and deferred totals are arithmetically correct (code checked); Explanation consistent with the schedule.
- Email and chat catch-up: Confirmed decisions retained; Required actions retained; Correct owners; Stated deadlines retained, including inherited ones; No invented owners or deadlines; Proposals kept separate from decisions.
- Receipts → clean table: Date and vendor match each receipt, allowing equivalent date formats and reasonable vendor abbreviations (code checked); Category matches a verified reference mapping (code checked).
Evaluation versions
- eval-1.0 · Original Round 1 evaluation: judge prompt judge-v1 and the v1 reference notes.
- eval-1.1 · Catch-up reference notes corrected: the pricing-page task inherits a 'before launch' deadline (12 November). Judge prompt judge-v2 tells judges the notes may be wrong and to escalate conflicts with the source.
What the League and the Round 1 pilot can't tell you
- Five tasks with one attempt each is a small first snapshot, not a definitive ranking of these models.
- AI judges from other makers still have their own biases; that is why arithmetic and format are checked by code.
- Results describe these exact prompts on the run date. Models change over time.
- Two judges agreeing is not proof: both read the same reference notes, so a mistake in the notes can mislead both. That happened once in Round 1 and is corrected in the history.
- A check only measures what it names. Zero failures does not mean an answer has no errors; errors found outside the checks are listed separately as observations.
- Receipts: Round 1 matches rows by gross amount and checks that each category is on the allowed list. It does not verify dates, vendor names or whether a category fits.
Perspectives · How comparisons work
Perspectives are unscored. They show how different models interpret the same material, not which model is best.
Same frozen sources
Every model receives the same dated source pack and the same question. The pack is frozen, so later edits to an article never change what the models saw.
Original answers kept
Each model's full answer is published unchanged beside the comparison, so any summary can be checked against what was actually said.
Agreements and differences, no winner
The comparison maps shared views, meaningful disagreements and stated uncertainty. Nothing is scored or ranked.
Reviewed before publication
A person reviews the comparison and any article before it goes live. Publishing does not independently verify the underlying news sources.
The League is separate from recipe testing. See the recipe testing methodology for how individual guides are verified.
League guide
How to read the League
A short email guide: how rounds are scored, what the points and arrows mean, and how to check any result yourself.
