# LLM model mix drift, and why the bill moved without a deploy > Model mix drift is traffic quietly shifting toward pricier models. Volume holds, the bill climbs. How to detect it and price the shift. URL: https://getculpa.com/llm-model-mix-drift Last reviewed: 2026-08-01 ## Answer Model mix drift is traffic shifting toward pricier models without anyone changing the code, through fallbacks, routing rules or a default that moved. Volume holds and the bill climbs. Culpa, a local-first LLM cost, margin, and forecast ledger, records the model that served every call, so a mix shift separates cleanly from a price change. ## Why this happens Mix drifts for mundane reasons. A cheap model rate-limits and your fallback quietly routes to the expensive one. A routing rule keyed on input length starts matching more often because prompts grew. A provider changes which model an alias points at. None of these appear in a diff, none fire an alert, and all of them move the bill. The blended rate rises identically whether prices changed or traffic moved, which is why it can't diagnose this. ## What this usually looks like - Spend rose with no deploy in the window, which rules out most of the obvious explanations. - Your blended rate moved while every published list price stayed the same. - A model you thought handled a small slice of traffic turns out to be handling much more. - Cost rises during peak hours by more than volume does, which is the signature of rate-limit fallbacks. ## Common mistakes - Routing to an expensive model as the fallback for rate limits. Why it hurts: Your fallback fires exactly when volume is highest, so the premium applies to your busiest traffic. Do instead: Fall back to a peer-priced model, or queue and retry, and alert when the fallback path carries real volume. - Pinning to a floating model alias. Why it hurts: The alias can point somewhere else, and both the behaviour and the rate change without a deploy on your side. Do instead: Pin explicit model versions, and treat a version change as a release with a cost review. - Tracking only the blended rate. Why it hurts: A mix shift and a price change look identical in one averaged number, so it can't tell you which happened. Do instead: Track token share per model over time. The shift is obvious there and invisible in the blend. ## Self-check - List token share by model for this month and last. Any share that moved by a few points is your candidate. - Check every fallback path in code and write down which model it routes to and at what rate. - Confirm whether you pin explicit model versions or floating aliases. - Compare your model mix at peak hour against your quietest hour. A gap points at rate-limit fallbacks. - Recompute last month's bill using this month's mix. That difference is the drift, priced. ## Ten percent of traffic moves, and the bill rises seventeen percent (illustrative) 10 million input and 2 million output tokens a month, unchanged. Real rates: Gemini 2.5 Flash at $0.0003 and $0.0025 per 1k, Gemini 2.5 Pro at $0.00125 and $0.010 per 1k. A rate-limit fallback moves a tenth of traffic to Pro. All Flash: (10,000 x $0.0003) + (2,000 x $0.0025) = $3.00 + $5.00 = $8.00 90% Flash: (9,000 x $0.0003) + (1,800 x $0.0025) = $2.70 + $4.50 = $7.20 10% Pro: (1,000 x $0.00125) + (200 x $0.010) = $1.25 + $2.00 = $3.25 New total = $7.20 + $3.25 = $10.45 on identical token volume Increase = ($10.45 - $8.00) / $8.00 = 30.6% A tenth of traffic moving raised the bill by thirty percent, with no deploy, no price change and no extra tokens. Only the per-model split shows it. ## Cost figures Every figure carries its confidence and its source. No figure on this site is provider-reported. - 30.6% — modelled bill increase from a tenth of traffic moving to a pricier model at identical volume [calculated] Source: ($10.45 - $8.00) / $8.00, using real Gemini 2.5 Flash and Gemini 2.5 Pro rates per 1k tokens from the price book, effective 2026-07-02. Token volumes are modelled. - $8.00 to $10.45 — modelled monthly spend before and after the mix shift, same token volume [estimated] Source: Both endpoints from the teardown arithmetic at real Gemini rates. A range because the traffic split is modelled. ## FAQ Q: How do I tell a mix shift from a price change? A: Recompute last month's spend using this month's model mix and last month's rates. If the result matches this month's bill, the mix moved. If it doesn't, prices did. Both can happen at once, and this separates them. Q: Why would my model mix change without a deploy? A: Rate-limit fallbacks, routing rules keyed on input length or content, floating model aliases repointed by the provider, and retries that escalate to a stronger model. All four change behaviour without changing your code. Q: Is a floating model alias ever a good idea? A: For experiments, yes. For production traffic you're billed for, a floating alias means the rate you pay and the behaviour you get can both change without warning, which makes forecasting and incident analysis much harder. ## Sources - Gemini API pricing: https://ai.google.dev/gemini-api/docs/pricing Run the free Cost Leak Scan: https://app.getculpa.com/scan?source=pseo&slug=llm-model-mix-drift&cluster=problem Machine-readable index of every guide: https://getculpa.com/api/pages Human-readable index of every guide: https://getculpa.com/guides Site overview: https://app.getculpa.com/llms.txt Privacy: Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.