// mondaybench #004 beta

We gave 15 models
the same messy Monday morning

Eight files, seven of them tables. Two months of a SaaS company’s revenue, usage, churn, acquisition and support — and three decisions waiting on numbers that none of the tables contains.

One question: Can it reason through messy business data?

  • 15 models
  • 3 runs each
  • Opus 5 judge
  • frozen & auditable
seven tables
  • customers.csv 36 rows customer_id segment, plan, ARR, renewal, status
  • revenue.csv 71 rows customer_id invoices, two months, two sources
  • usage.csv 67 rows usage_account_id requests, tokens, active users
  • plans.csv 6 rows plan revenue, infra and support cost, included volume
  • acquisition.csv 15 rows customer_id channel, new logo or expansion, attributed ARR
  • funnel.csv 8 rows channel leads and paid trials, by channel and month
  • support.csv 133 rows customer_id tickets, severity, status

usage_account_id joins on a different key — two accounts spell it another way

01

The result

Fifteen models, 45 runs, one judge.

// results

The leaderboard

Monday Score is quality only: how well each model answered “Can it reason through messy business data?”, criterion by criterion against this scenario’s rubric. Speed sits beside it and is never folded in.

All models Open-weight models only

monday-004 · 15 models, 3 runs each
# Model Monday Score Run range TTFA median Total latency Show detail for
01 01 GLM 5.3 Flash
98.0
1.5 766.2s 827.8s
02 GPT-6 Astra closed
98.0
0.0 — —
02 03 Qwen 3.8 Flash
96.5
3.0 394.1s 468.0s
03 04 GLM 5.3
91.7
17.0 634.2s 673.2s
05 Claude Opus 5 closed
90.8
9.5 — —
04 06 DeepSeek V4.1 Flash
90.0
1.0 108.3s 128.6s
07 Claude Fable 5.1 closed
89.3
8.5 — —
05 08 DeepSeek V4 Flash
86.0
10.5 164.6s 174.4s
06 09 MiMo v2.6 Flash
80.3
10.5 398.5s 490.8s
07 10 DeepSeek V4.1 Flash (1017)
79.7
3.5 134.9s 154.8s
08 11 MIMO v2.5
78.5
25.5 368.6s 483.6s
12 Gemini 3.8 Flash (High) closed
72.2
9.0 — 61.9s (route-timed)
09 13 GLM 5.2
71.2
4.5 57.1s 103.1s
10 14 Qwen 3.6
46.0
2.5 72.6s 102.4s
11 15 Gemma 4
35.2
19.0 0.8s 15.3s
  • Run range: the difference between the model’s best and worst official run. It is a plain best-minus-worst span, so it is never written as ±.
  • TTFA, time to first answer: the wall-clock delay before the first visible answer token. Reasoning tokens do not count as answer content.

// quality vs speed

The smartest model isn’t always the fastest

Of the timed models, GLM 5.3 Flash scores highest, 98.0, and takes 766.2s to start answering. Gemma 4 is the quickest: it starts in 0.8s and scores 35.2.

30 40 50 60 70 80 90 100 0s200s400s600s800s TTFA median, seconds to first answer Monday Score GLM 5.3 Flash 98.0 · 766.2s Qwen 3.8 Flash 96.5 · 394.1s GLM 5.3 91.7 · 634.2s DeepSeek V4.1 Flash 90.0 · 108.3s DeepSeek V4 Flash 86.0 · 164.6s MiMo v2.6 Flash 80.3 · 398.5s DeepSeek V4.1 Flash (1017) 79.7 · 134.9s MIMO v2.5 78.5 · 368.6s GLM 5.2 71.2 · 57.1s Qwen 3.6 46.0 · 72.6s Gemma 4 35.2 · 0.8s
Monday Score and time to first answer, per model
Model Monday Score TTFA median
GLM 5.3 Flash 98.0 766.2s
Qwen 3.8 Flash 96.5 394.1s
GLM 5.3 91.7 634.2s
DeepSeek V4.1 Flash 90.0 108.3s
DeepSeek V4 Flash 86.0 164.6s
MiMo v2.6 Flash 80.3 398.5s
DeepSeek V4.1 Flash (1017) 79.7 134.9s
MIMO v2.5 78.5 368.6s
GLM 5.2 71.2 57.1s
Qwen 3.6 46.0 72.6s
Gemma 4 35.2 0.8s

// what stood out

Benchmark curiosities

Every figure below is one you can check against the leaderboard, the criterion matrix or the published verdicts on the same page.

  1. 01

    13 / 45

    runs recommended the cut the pack rules out

    The SMB segment

    They did the analysis correctly and then argued against it

    Thirteen of forty-five runs recommend cutting, exiting or defunding SMB. Several of them compute, in the same answer, that SMB net MRR is positive and that the segment produced every one of October’s five new logos — and recommend the cut anyway, on a churn rate whose denominator counts the wrong population. Each of these runs can read a table and do the arithmetic; what none of them does is notice that its own numbers have just contradicted its recommendation.

  2. 02

    5 / 45

    runs saw the contamination and left it in

    Paid search

    Spotting the problem and fixing it are scored separately, and they came apart

    The acquisition table mixes new-logo revenue with expansion from customers a channel already had. Paid search leads it, and stops leading the moment expansion is removed. Five runs identify the contamination in words — “paid search’s number is mostly expansion” — and then never recompute the channels on new logos alone, so the reversal never appears. A benchmark that only asked whether the model noticed would have scored these as passes.

  3. 03

    62.8

    points between first and last — the widest of the five Mondays

    The field

    The Monday that decides the leaderboard

    GLM 5.3 Flash and GPT-6 Astra tie for first here on 98.0, and Gemma 4 scores 35.2 — a spread more than three times #005’s. It is the lowest Monday of the suite for eleven of the fifteen models, which makes it the scenario that settles the overall ranking. When the input is tables, the models spread out further than on prose.

02

The test

What they were given, and what they had to work out.

// the test

This is a problem of reading the numbers right

Leadership has three decisions on the table: whether to cut investment in one customer segment, whether to raise spend on one acquisition channel, and which product plan deserves the most attention. All three lean on the headline. Every figure in the files is real: October’s invoices add up to €892,900, 12% more than September; the duplicate is in the file; Gringotts paid €120,000. The growth those figures suggest is false.

Five ways to count October, two of them accepted as the answer

  1. Invoiced, as loaded what a dashboard reports
    September €797,100
    October €892,900

    +12.0%

  2. -€19,500 INV-2026-10-0209 — Soylent, loaded from both stripe and billing_sync

    After removing the duplicate invoice
    September €797,100
    October €873,400

    +9.6%

  3. -€110,000 Gringotts prepaid €120,000 for twelve months; €10,000 belongs to October

    Normalised: the annual invoice at its monthly value accepted
    September €797,100
    October €763,400

    −4.2% the sign changes here

  4. Recurring subscriptions only accepted
    September €746,100
    October €757,700

    +1.6%

  5. -€25,300 Five customers were invoiced on 1 October and churned later that month

    Active run-rate, once October’s churn drops out run-rate
    September €746,100
    October €732,400

    −1.8%

The rubric accepts two of these as answers. Normalising the annual invoice while keeping one-off services gives −4.2%; the recurring line alone gives +1.6%. September carried €51,000 of professional services against October’s €5,700, which is why they disagree. Both refute the headline, so the rubric takes either — provided the response says which it computed.

Three more of the same shape

Eight files: a context note and seven CSVs. Each is internally consistent, and none of them contains a decision.

The average that is true and useless

Every plan sits below its included request volume on average — 63%, 74%, 42%. Five customers are over it: Stark at 143% of a 3M allowance, Wonka at 170% of 600k. “No plan exceeds its quota” is true of the averages and false of the customers, and a response that argues from it has read the right column of the wrong table.

The channel that leads on the wrong metric

Paid search tops the attributed-revenue table at €274,800. €210,000 of that is expansion on Stark, Umbrella, Globex and Hooli — customers since 2023 and 2024, credited to a campaign that started on 28 September. On new logos alone paid search is third, and partner is first.

The join that silently drops €1M

Two accounts use a different identifier in the usage file than in the billing file — wayne_ent and prestige_ww. Joining on customer_id alone loses Wayne Enterprises, a €1,008,000 contract that renews in four weeks, and no error is raised. The totals simply come out smaller.

The 45% drop that is not a problem

Acme’s requests fall 45%. An operational note says it moved reporting to scheduled batch runs, with an expected 40–50% reduction. Tokens fall only 12% and revenue does not move. The work is still there, in a different shape. Reporting Acme as a churn risk is the false positive the scenario is built to catch.

03

The method

How the score is built, and how to check it.

// scoring

How Monday Score works

One hundred points across 6 dimensions, then penalties. Quality only: speed and cost are reported separately, beside the score.

  1. Revenue reasoning Does it find the growth that is not there? 20
  2. Customer health Does it size the churn before reacting to it? 15
  3. Acquisition reasoning Does it tell attribution apart from acquisition? 19
  4. Plan economics Does it know which number the decision depends on? 19
  5. Cross-table data quality Do the joins hold and do the figures survive them? 18
  6. Decision quality Does it answer the three questions it was asked? 9
  7. total 100

The judge does not assign a 0–⁠100 score directly

It classifies atomic criteria one at a time, 27 of them in rubric 0.3, and each verdict carries the evidence it was based on. Deterministic scoring code turns those verdicts into points. No model ever sees a running total.

  • PASS full points for the criterion
  • PARTIAL half points
  • FAIL nothing

Where a response sits between two labels, the rubric’s own tie-break applies: choose the lower one.

Penalties

Applied on top of the dimension score, capped at −25 per run.

  • −5 Material hallucination A claim that matters to the briefing and is not supported by the material.
  • −7 Prohibited action Recommending something the current state explicitly rules out.
  • −7 Major data error A numeric or data mistake that a recommendation or a headline conclusion then rests on.
  • −5 Unsupported causality Asserting that one thing caused another when the data only shows they moved together.

Each scenario’s rubric sets its own penalty types, their prices and the cap. A prohibited action costs −10 (#001), −10 (#002), −7 (#003), −7 (#004), −7 (#005); the cap per run is −20 (#001), −30 (#002), −25 (#003), −25 (#004), −14 (#005).

see_the_methodology →

// provenance

Exactly what produced these numbers

Every input, raw response, judge verdict and scoring rule for this scenario is published. The hash below is of the assembled prompt each model received, byte for byte.

Scenario

monday-004

Scenario version

0.4

Rubric

0.3

Evaluator

evaluator-opus5-v0.4

Judge

claude-opus-5

Result generated

2026-10-19

Suite v1.14 · board evidence v1.13

Prompt SHA-256

3a0cbb569ca4f711b8907177af9204cec267d26f35f732829df56b03ed23ef99

// why we built this

Benchmarks are useful,
but what matters is your workload

We compare open models in production so you can tell how close they are to closed models. MondayBench is how we check whether they are really useful before they get there.