This teardown walks a representative AI-native startup bill, using the exact method we run in paid audits. The company below is a composite built from real-world usage patterns, not a named client — our client teardowns are published only with permission, and this article exists so you can check our reasoning before anyone pays us anything.
Meet “Acme”: a Series-A B2B SaaS with an AI support copilot, a ticket classifier, a RAG answers endpoint, and a data-enrichment pipeline. Monthly model-API spend: about $4,100 and climbing. Nobody owns the number — engineering ships features, finance sees one line item, and the bill grew 30% in a quarter without any single decision causing it.
That last sentence is the whole disease. Here’s the autopsy.
Where the money actually goes
First move in any audit: normalize the usage exports and price every row at current list prices, then reconcile against the actual invoice (if they don’t match, your data is incomplete — stop and find out why). Acme’s per-route picture:
| Route | Model | Reqs/day | Avg input | Avg output | Share of spend |
|---|---|---|---|---|---|
| support-copilot | frontier | 2,600 | 7,800 tok | 420 tok | ~34% |
| rag-answers | mid-tier | 3,200 | 5,200 tok | 350 tok | ~40% |
| ticket-classifier | frontier | 9,000 | 900 tok | 12 tok | ~14% |
| enrichment-pipeline | small | 60,000 | 700 tok | 40 tok | ~5% |
| summarizer | small | 1,200 | 2,600 tok | 200 tok | ~1.5% |
Three numbers in that table should make you flinch. Most teams never see this table.
Finding 1 — the classifier is wearing a tuxedo to do the dishes (~13% of the bill)
ticket-classifier makes 9,000 calls a day and emits an average of 12 output tokens — it’s picking a label from a list. It’s running on a frontier model.
The shape of the task (short output, fixed label set, high volume) is exactly what small models are for. An eval-gated swap — build a 200-example golden set from production traffic, require the small model to match within an agreed error tolerance, keep the frontier model as fallback for low-confidence cases — cuts this route’s cost by ~85–90%. The eval gate is not optional ceremony: it’s what makes the saving real instead of a quality regression you discover in month three.
Recovered: ~$525/month.
Finding 2 — paying full price for the same tokens, thousands of times (~20% of the bill)
rag-answers sends 5,200 input tokens per request. Inspect the prompt and ~70% of it is identical every time: system instructions, tool definitions, formatting rules, few-shot examples. Provider prompt caching prices cache-hit input tokens at a fraction of list — but Acme’s cache-hit ratio is 10%, because the static content isn’t structured as a stable prefix (a timestamp near the top of the prompt breaks everything below it).
Restructure the prompt — static content first, dynamic content last — and the route’s input cost drops by more than half. No product change, no quality change, often a latency improvement. This is the highest-confidence dollar in the entire audit.
Same disease on support-copilot, which also stuffs the entire conversation history and full help-center articles into every turn (7,800 input tokens per request). Retrieval of relevant sections instead of whole documents, truncated history, and caching of what remains takes another large bite.
Recovered: ~$1,300/month across both routes.
Finding 3 — the pipeline that never needed to be real-time (~5% of the bill)
enrichment-pipeline runs 60,000 requests a day, 40 output tokens each, on a batch job that a human looks at the next morning. Providers sell batch endpoints at 50% off for exactly this shape of traffic. Moving the latency-tolerant volume over is mostly an afternoon of engineering.
Recovered: ~$220/month.
Finding 4 — the $40k invoice that hasn’t happened yet
Day 42 of the analysis window: the enrichment pipeline spiked to 3.5× its normal volume. Nobody noticed. This time it was a backfill; next time it’s a retry loop, and retry loops are how five-figure surprise invoices are born. There is no budget cap, no per-key spend alert, no route ownership.
This finding is worth $0/month on the spreadsheet and more than all the others in tail risk. The fix is a gateway (LiteLLM, Portkey, or similar) with per-route keys, budgets, and anomaly alerts — which also happens to be the infrastructure that makes Findings 1–3 permanent instead of a one-time cleanup that decays.
The total
| Finding | Monthly saving | Confidence |
|---|---|---|
| Prompt caching + context diet | ~$1,300 | High — no product change |
| Model right-sizing (eval-gated) | ~$525 | Medium — needs the eval gate |
| Batch endpoints | ~$220 | Medium — needs latency tolerance check |
| Spend governance | $0 (risk) | The reason bills grow untended |
| Total identified | ~$2,050/mo ≈ 41% of spend |
Every number above came out of usage exports the team already had, priced at public list prices, using heuristics any engineer could apply. So why doesn’t it happen? Because it’s nobody’s job. The bill sits between engineering and finance, each route was reasonable when it shipped, and models get cheaper in ways that reward re-decisions nobody is assigned to make.
Do it yourself, or don’t
The method is deliberately reproducible: export usage → normalize → price per route → hunt the four patterns (frontier-on-small-jobs, uncached repeated prefixes, bloated context, unbatched pipelines) → put budgets and alerts under all of it. If you have a spare engineering week, this article is enough to do it.
If you’d rather it took ten days of someone else’s time with a guarantee attached: that’s the business. If we can’t identify at least 20% in recoverable spend, you pay half. One 30-minute call with read-only access to your usage dashboard, and we’ll show you one true, quantified thing about your own bill before you decide.