← Creative by Jake
Jacob McClelland · the full report
Routing AI work: what it cost, and what it paid for
This is the full method behind the numbers on /jev. All dollars are list-price equivalents because I pay flat subscriptions.
27 days before
51 days after
2026-11-09 measured
The net
About 14% (about $1,070) under an all-Opus bill. The after period listed $6,803, against about $7,877 with every Codex token priced at Opus 5.5 rates.
- This assumes the same tokens, token for token. If Claude would have needed fewer tokens, the 14% is overstated.
- It leaves out Claude cache writes, which understates the Opus side.
- It has no rework allowance, because no data supports one.
- Codex work already existed before the router, so not every after-window Codex token is work the router moved.
Against Sonnet 5.5 rates, the gap is about $180.
Where it came from
Excluding batch jobs, GPT-6 Luna listed at $46 for tokens that would list at $1,330 on Opus, about 3.5% of the price. All build work, Luna and two mid-priced models, listed at $220 against about $1,627 at Opus 5.5 rates. Luna's share of output tokens went from 7.5% to 41%.
The cheapest model took on most of the new build work. After the router went live, Luna listed at $0.91 a day for tokens that would list at about $26 a day at Opus 5.5 rates.
The comparison uses 27 calendar days before and 51 after. Before is 2026-08-24 to 2026-09-19. After is 2026-09-20 to 2026-11-09, with 47 days of activity and a partial last day.
What it paid for
An independent, higher-priced reviewer from a different model family reviewed work after the router went live. It ran 430 reviews. About 7 in 10 raised at least one issue, based on keyword labels checked by hand on a random sample.
Review's share of list-price cost went from 5.1% to 10.9%. Review spend per day went from $7.80 to $14.50.
Of the 430 reviews, 305 (71%) were labelled as raising an issue by a keyword pass over each review's final message. Thirty (7%) said pass, ship or no blockers. Ninety-five (22%) were unclear or had no final message. In a random-sample hand check, 17 of 20 labelled blocking raised a real issue, though only about 11 were blocking in severity, and 8 of 10 labelled findings raised a real issue. A count of blocking findings is not supported.
What review caught
Caught before it went live.
Contest app admin access, 2026-10-08
Caught: Invited-admin access accepted any signed-in account type, although the design required Google sign-in only.
Without it: An account made with another sign-in method that matched an invitation could have received contest admin rights.
The fix was in the feature's first commit, so the flawed version was never committed.
Tournament clock on venue TVs, 2026-10-14
Caught: A duplicate-send guard could leave TVs and new viewers on an older clock state after one display reconnected.
Without it: Screens could show the wrong blind level until someone pressed a button or reloaded.
The fix followed 3 minutes after the review. A second review of the fix reported no confirmed defects.
Tournament clock controller, 2026-10-15
Caught: Creating a new clock could silently overwrite an existing one, because a short random ID could repeat and the write did not check for an existing clock.
Without it: A running game's clock could be reset for everyone following it.
The fix followed 50 seconds after the review.
AI player help desk, 2026-10-20
Caught: When the verification step failed or timed out, an unverified answer was marked as passed.
Without it: Players could have been shown unverified results as checked facts.
The fix was in the feature's first commit, so it never shipped.
What this does not show
- Whether another review had already passed the same work. That was not checked.
- Any estimate of hours saved. Nothing in the logs measures that.
- The cases were picked as the clearest to evidence, not at random.
The overhead
1,419 routing calls cost $0.14. 1,486 review-gate calls cost $0.39.
The full table
| Metric | Before | After |
| Calendar days (days with activity) | 27 (27) | 51 (47) |
| Typed prompts | 1,322 | 2,316 |
| Prompts per calendar day | 49.0 | 45.4 |
| List-price cost, Claude + Codex | $4,152 | $6,803 |
| List cost per calendar day | $154 | $133 |
| List cost per prompt | $3.14 | $2.94 |
| Cost per prompt, after repriced at predecessor prices | $3.14 | $5.02 |
| Premium share of list cost | 96.0% | 94.2% |
| Excluding batch jobs | | |
| Cheap-tier share of API calls | 9.5% | 29.8% |
| Cheap-tier API calls per calendar day | 72 | 437 |
| Cheap-tier share of non-cache-read tokens | 8.9% | 24.1% |
| Premium share of non-cache-read tokens | 82.5% | 62.3% |
| Premium share of output tokens | 85.5% | 50.6% |
| Premium non-cache-read tokens per calendar day | 5.3M | 6.4M |
| Tokens per prompt (including cache reads) | 3.54M | 7.77M |
Volume was similar: 49 prompts per calendar day before and 45 after. List cost per prompt fell 6%, from $3.14 to $2.94. New models were cheaper per token over the same weeks, so this cannot be attributed to the router alone.
Confounders
- New models and prices arrived mid-comparison, most at lower list prices.
- Tier membership moved with the models. One model family was premium-priced before and mid-priced after; tiers follow list input price, not model family.
- Longer contexts. Cache-read tokens per prompt roughly doubled, tracking session length and a larger default context window. This inflates the repriced figure.
- The repriced view is one-sided. Only the after window is repriced.
- A model-use policy change the day before the router went live moved work off the most expensive model.
- Delegation predates the router. Cheap workers were already in use from late July, so before is not a no-delegation baseline.
- Batch jobs. About 11,000 one-shot cheap-model sessions in the before window (2,174 after) dominate raw call counts. With them included, the cheap tier's share of calls reads 41% before and 32% after, which reflects those jobs rather than routing. Their list cost is small: $55 before, $12 after.
- Project mix changed from week to week and is not controlled.
- No quality measure. Nothing here says whether the work came out better or worse.
Data gaps
- Direct Codex prompts are not in the prompt count (only Claude prompts are), though Codex cost is.
- Prompts sent by one agent session to another cannot be told apart from typed prompts.
- A few internal models have no public price (under 0.2% of tokens).
- Premium rates (fast mode, regional inference, long-context pricing) are ignored; everything is priced at standard short-context rates.
- If a forked Codex session copies earlier token counts into a new file, those tokens are counted twice; deduplication runs only within a file.
Method
Windows and terms
- Before: 2026-08-24 to 2026-09-19, 27 calendar days, the first stretch where Codex logs carry full token counts.
- After: 2026-09-20 to 2026-11-09, 51 calendar days, 47 with activity, last day partial. The router went live on 2026-09-20, with the first logged decision at 00:19 UTC.
- Prompt: a prompt typed, or a slash command, in a top-level Claude Code session: 1,322 before and 2,316 after.
- Excluding batch jobs: Codex sessions with 3 or fewer API calls are left out, almost all one-shot jobs on the cheapest model: 10,974 sessions before and 2,174 after.
- Tiers follow list input price per million tokens: premium is $4 or more, mid is $1 to $3, economy, the cheap tier, is under $1.
Counting and pricing
- Extraction: every Claude Code transcript, with assistant messages deduplicated by message ID and the max of each usage counter taken, and every Codex session log, using each token-count event's last usage and skipping repeats. No message text was written out.
- Prompts: user records in top-level Claude sessions that are not meta, sidechain, compact summaries, tool results or injected notices, unique by ID; then only typed prompts and slash commands.
- Pricing: each row priced at public list prices from Anthropic and OpenAI, fetched 2026-11-09.
- Router facts: from the router's own call log, for cost per call, and outcome log.
- Review: a separate reviewer, given the files and the task but not the author's reasoning, checked the report before publication, and its corrections are applied above.