Guides / what to cut first llm cost
Reducing LLM spend in the order that actually works
The levers that reduce model spend differ by an order of magnitude, and the biggest one is which model you run. Caching, trimming and retries matter and come second. Culpa, a local-first LLM cost, margin, and forecast ledger, prices your real traffic so the ordering is measured on your workload rather than assumed.
Why this happens
When a bill needs to come down, teams usually start with prompt caching, because it's technical, safe and doesn't change any answers. It's a real saving and it's rarely the largest one available. Model choice usually dominates everything else by a wide margin, because the rate spread between model tiers is much larger than any efficiency you can win at a fixed tier. The reason caching gets picked first is that it costs nothing politically: nobody has to agree that quality can drop. Model choice needs that conversation, so it goes last, which is exactly backwards from the order the numbers suggest. The right sequence is to measure what each lever is worth on your own traffic before touching any of them, then start with the largest that your quality bar can absorb. Two cautions worth stating. Some levers stack and some don't, and caching a prompt you're about to shorten is wasted work. And the fastest saving of all is usually removing a call nobody needed, which shows up in none of the lever lists because it isn't an optimisation.
What this usually looks like
- The cost-reduction plan starts with caching and never reaches model choice.
- Nobody has priced what each lever is worth on your own traffic.
- Quality is treated as fixed, so the largest lever is off the table by default.
- Savings were implemented in the order they were easiest to ship.
- A round of optimisation cut less than expected and nobody sized it first.
Free, no card, no account
Run the free Cost Leak Scan
It shows your most expensive conversation before you install anything.
Mistakes that cost the most
| Mistake | Why it hurts | Do instead |
|---|---|---|
| Starting with caching because it's safe. | It's usually a fraction of what a model change is worth, so the effort goes to the smaller lever. | Price every lever on your own traffic first, then start with the largest you can accept. |
| Treating quality as fixed. | It rules out the biggest lever without testing whether a smaller model would actually do. | Test the cheaper model on your real cases before deciding it won't hold. |
| Stacking levers without checking they compose. | Caching a prompt you then shorten wastes the work and overstates the combined saving. | Sequence them, and re-measure after each rather than summing the estimates. |
| Optimising calls nobody needed. | The cheapest call is the one you don't make, and it never appears on a lever list. | Look for calls with no downstream use before optimising the ones that have. |
Run this check tonight
- Re-price last month's traffic on the next model tier down.
- Work out what share of your input is a stable prefix worth caching.
- Find your retry rate and price the retries separately.
- Look for calls whose output nothing reads, and price those on their own.
Two levers on the same month
Illustrative example
A modelled million calls a month at 2,000 input and 500 output tokens, running on Claude Opus 5 at its real rates of $5.00 and $25.00 per million. Lever one moves the workload to Claude Haiku 4.5 at $1.00 and $5.00. Lever two keeps Opus 5 and caches 1,500 of the 2,000 input tokens, read at the cached rate of $0.50 per million. Rates are published, the volume, token shape and cacheable share are modelled.
Eighty points against thirty, on the same month, and the thirty is the one that gets shipped first because it needs nobody's permission. Neither number is a recommendation on its own: the model move is only available if the cheaper model holds up on your cases. Measuring both before choosing is the entire point, and it takes an afternoon.
Every number, with its confidence and source
| Figure | What it means | Confidence | Source |
|---|---|---|---|
| 80% against 30% | modelled saving from changing model against caching most of the prompt, on the same month | calculated | A modelled million calls at 2,000 input and 500 output tokens on Claude Opus 5 at real rates of $5.00 and $25.00 per million costs $0.0225 a call, so $22,500.00. On Claude Haiku 4.5 at $1.00 and $5.00 the same shape costs $0.0045, so $4,500.00, an $18,000.00 or 80% saving. Caching 1,500 of the 2,000 input tokens on Opus 5 at the $0.50 per million cached rate gives $0.01575, so $15,750.00, a $6,750.00 or 30% saving. Rates are published, the volume, token shape and cacheable share are modelled. |
What a generic answer can’t know
Every lever's value depends on your own traffic. What share of your input is a stable prefix, how many retries you run, how much of your output nothing reads, and whether a cheaper model holds up on your cases are all facts about you, and none appear on a pricing page. Culpa prices every call from a versioned price book in exact decimal and keeps the token shapes alongside the costs, so each lever can be sized against last month's real traffic before anyone writes code. It also carries whatever identifiers you attach, which is what turns the ordering from a general list into a specific one: which feature would benefit most, which customers sit behind the expensive calls, and whether the saving you're about to make is worth the quality risk on the traffic that actually produces revenue.
Questions founders ask next
What is the biggest lever on LLM cost?
Usually model choice, by a wide margin. In the modelled example moving from Claude Opus 5 to Claude Haiku 4.5 cuts a $22,500.00 month to $4,500.00, an 80% saving, against 30% for caching most of the prompt on the original model.
Why does everyone start with caching?
Because it changes no answers, so nobody has to agree that quality can move. That makes it the easiest lever to ship and rarely the largest. The ordering that reduces spend fastest and the ordering that's easiest politically are different, and that's worth naming out loud.
Do the levers add up?
Not reliably. Caching a prompt you then shorten wastes the caching work, and summing estimates made in isolation overstates the combined result. Sequence them and re-measure after each, rather than adding the projections together.
What gets missed entirely?
Calls nobody needed. The cheapest call is the one you don't make, and removing a step whose output nothing reads doesn't appear on any optimisation list because it isn't an optimisation. It's usually the first thing worth looking for.
On your infrastructure
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.
How Culpa works
Find the culprit. Not just the total.
Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.
Your prompts stay local.
Culpa runs on your own infrastructure. What you send to a model reaches us at no point.
Every dollar has a name.
Follow any charge to the conversation, the user, the feature and the customer behind it.
See the bill before it lands.
Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.
Three steps to your first answer.
Change one base URL.
Or drop in the Python or TypeScript library.
Find your most expensive conversation.
In the first session, not the first week.
Cost your next feature before you ship it.
Why the bill went up
Example dashboardCalls traced
418,209
across 3 projects
Spend this week
$378.41
+ $182 vs last week
Failed calls
312
74% retried, and you paid for all of them
+ $182 this week traced to one culprit
Spend over 14 days
Most expensive users
Next week forecast
Graded against reality. Accuracy shown as results land.
Keep reading
Sources: Anthropic pricing. Last reviewed 2026-08-05, rates effective 2026-07-02. Plain text version.