The cheapest token is not the cheapest system. A weak model that fails the hard slice, a cache invalidated by a timestamp, a real-time call nobody waits for, or 3,000 irrelevant context tokens all turn “low price” into waste. The defensible unit is cost per successful task, among designs that clear a measured quality floor.
The fixed mix is 70% routine classification, 20% offline document work, and 10% hard reasoning. Every strategy sees the same deterministic tasks. “Capable everywhere” is the baseline; the levers below change model choice and billed tokens. The quality floor defaults to 92% successful tasks.
The measured baseline spends $132.30 for 10,000 tasks, succeeds on 96.36%, and costs $0.01373 per successful task. “Small everywhere” cuts model spend to $35.28 and looks heroic on a token dashboard — but quality falls to 91.78%, below the 92% floor, with the hard slice at 74.1%. It is cheap because it quietly stopped delivering the product.
Routing spends the small model on the 70% routine slice and keeps the capable model for documents and hard reasoning. In the measured run it clears quality at 94.63% and drops cost per success to $0.00910. Then independent token levers compound: an 85% cache-hit rate on stable prefixes, half-price batch treatment for the offline slice, and a 35% trim of volatile context bring the total to $43.62 and cost per success to $0.00461, while quality remains 94.58%.
Caching teaches an architectural lesson rather than a switch. Put a timestamp, request id or user turn before the breakpoint and the measured hit rate goes 85% → 0%: the same optimized workload rises from $43.62 to $57.25 with no quality gain. Batching is similarly conditional: it belongs on the offline document work, not the human-facing request. Context trimming must be evaled by slice — deleting irrelevant tokens saves money; deleting evidence creates a cheaper failure.
# optimize in this order — the order is a control quality_floor = measured_outcome_success >= 0.92 route = cheapest_model_that_clears_each_workload_floor cache = stable_system_tools_reference + BREAKPOINT + volatile_request batch = only_where_no_human_waits context = retrieve/trim to evidence_needed; reserve output + tool-turn budget decision_unit = total_model_spend / successful_tasks ship = quality_floor AND every_critical_slice_floor
Second opinion (taught here — these corroborate): Anthropic docs · prompt caching · Anthropic docs · Message Batches.