Decision
The unit of routing is not which model answers this question. It is what execution budget this task gets: a named tuple of model, reasoning effort, tool ceiling and context policy.
Context
The brief assumed a single difficulty axis feeding a model choice. Decomposing the bill showed model price was the smallest of the four levers that actually move spend.
Alternatives, and why not
- Per-request model routing, as briefedTurns under 50k tokens are 25.6% of traffic and 1.04% of spend. Perfectly routing every one of them to a free model saves about 1%.
- A cascade: try cheap, escalate on failureIn an 11.4-step loop you pay the wasted cheap trajectory, plus a $0.2854 cold cache write, plus the full frontier run.
- A learned router trained on paired comparisonsNeeds at least three usable models and thousands of paired quality comparisons. We had roughly one usable model and zero comparisons. Revisit in 9–18 months, possibly never.
Rationale
Ranked by measured value, the levers are: an effort dial per task class (14–36%), tool-result admission control (10–25%), an orchestrator context diet (10–20%), budget routing at seams (8–15%), and per-call model routing (~1%). Three of the top four have nothing to do with which model is called.
What it cost
Budgets are coarser than per-request decisions and will occasionally give an easy task an expensive budget. That waste is bounded and measurable; the alternative's downside, degrading a high-stakes answer, is neither.
Outcome
Modelled at $110–125k/yr from levers 1–3 alone, against a $167k/yr baseline, without changing a single model. Most of the achievable saving does not require changing a single model.
What I would do today
I would still separate the axes, but I would build the effort dial first and ship it alone. It is the single highest-value change and it does not need the rest of the design to exist.
What it moved in the diagram