6 Sept 2026•4 min read
Sending every request to your largest model is the most expensive default in modern software. A routing layer usually beats an upgrade, on both cost and latency.
3 September 2026•3 min read
The reflex when an AI feature underperforms is to reach for a bigger model. It is a reasonable first move and a terrible steady state. Most production workloads are a mix of tasks with wildly different difficulty, and paying frontier prices to classify a support ticket or extract three fields from an invoice is a choice, not a necessity.
Spend an afternoon reading a sample of real requests and you will usually find the same distribution. A large share are mechanical: extraction, classification, formatting, short rewrites. A middle band needs reasoning over a modest amount of context. A small tail is genuinely hard, requiring multi-step reasoning or long-context synthesis. Serving all three from one endpoint means the mechanical majority subsidises the difficult minority, and everyone waits in the same slow queue.
A useful router does not need to be clever. Input length, task type from the calling code path, whether tools are required, and whether the last attempt failed will get you most of the way. Start with explicit rules per feature rather than a learned router; rules are debuggable, and you can read them in an incident.
Add one escalation rule: if the small model's output fails validation, retry once on the larger model. Now your worst case is bounded and your average case is fast. This single pattern, applied to the mechanical band of traffic, tends to cut cost dramatically while improving p50 latency, because most requests never touch the expensive path.
Escalation only works if you can tell that an output is bad without asking another model. That means designing tasks so failure is machine-detectable: require JSON that must parse against a schema, require an extracted value that must exist verbatim in the source, require a citation whose identifier must resolve. Tasks with checkable outputs are cheaper to run, easier to escalate, and safer to automate.
Users experience a fast small model as a better product than a slow accurate one for anything interactive. Autocomplete, inline suggestions, search reranking, and form assistance all live under a threshold where being right two hundred milliseconds later is worse than being nearly right now. Reserve the slow path for work the user has explicitly asked to wait on.
Treat models as interchangeable capacity behind a policy layer, not as a dependency you hard-code. The half-life of "the best model" is now measured in weeks.
Two anti-patterns to avoid. Do not build a learned router before you have a rules-based one working, because you will have no baseline to justify it. And do not route on cost alone, ignoring which tier your evaluation set actually covers; a router that saves money by sending hard tasks to a weak model is not an optimisation, it is a quality regression with a nice dashboard.
The goal is not to use the smallest model. It is to stop treating model choice as a one-time architectural decision and start treating it as a runtime policy you own.
@umarrafique923
Author and writer at CandyWrite. Sharing knowledge, tutorials, and reflections on technology, design, and ideas.
Join 12,000+ readers getting our Saturday morning editorial dispatch with our top essays and reading recommendations.
6 Sept 2026•4 min read
2 Sept 2026•3 min read
5 Sept 2026•4 min read
8 Sept 2026•5 min read
Discussion (0)
Join the conversation. Sign in to leave a response or reply to comments.