Guides / llm burn forecast
What is an LLM burn forecast?
An LLM burn forecast projects your model spend forward from your own measured usage rather than from a rate card. A credible one carries a range and states its assumptions. Culpa, a local-first LLM cost, margin, and forecast ledger, forecasts deterministically from your ledger and stores every projection so its accuracy can be scored later.
Why this happens
Most LLM forecasts fail for the same three reasons. They extrapolate a total instead of the drivers underneath it, so a routing change invalidates them silently. They use the list rate instead of the effective rate, so they start about a quarter low. And they produce a single number instead of a range, which invites a false sense of precision that the underlying variance can't support. A forecast nobody scores afterwards never gets better either.
What this usually looks like
- Your forecast is consistently under, and the miss is roughly the same percentage every month.
- A launch or a routing change breaks the projection completely, because it was fitted to a total rather than to drivers.
- Nobody records what last month's forecast said, so nobody can tell whether the method is improving.
- The forecast is a single figure, so it can't express that a launch week has far wider variance than a quiet one.
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 |
|---|---|---|
| Extrapolating last month's bill by a growth percentage. | It bakes in the current model mix and cache behaviour as constants, and both change without warning. | Forecast the drivers separately, calls per user, tokens per call, and the mix, then price them at your effective rate. |
| Forecasting at the list rate. | Retries and discarded output are real spend the rate card never mentions, so the projection starts low and stays low. | Use your measured effective rate, which already includes whatever waste your system produces. |
| Publishing a single number. | It's read as a commitment, and the first miss destroys trust in every forecast that follows. | Publish a range with its assumptions written down, and widen it deliberately around launches. |
Run this check tonight
- Write down what you think next month costs before you compute it. The gap against the computed figure is worth knowing.
- Check whether your forecast uses the list rate or your own effective rate. If it's the list rate, expect to run low.
- Confirm the forecast decomposes into drivers you could change, rather than a single extrapolated total.
- Find last month's forecast and compare it to the actual. If you can't find it, that's the first thing to fix.
- Widen the range for any month containing a launch, and say by how much and why.
Forecasting a launch month from drivers, not from last month
Illustrative example
A product at 2,000 active users adding a launch expected to triple traffic for one week. Costs priced at GPT-5.4 real rates, $0.0025 per 1k input and $0.015 per 1k output. Usage per user is modelled from a steady-state month.
$800 as the central figure, published as a $700 to $950 range. Forecasting the total from last month's $440 would have said about $530 and missed by a third.
Every number, with its confidence and source
| Figure | What it means | Confidence | Source |
|---|---|---|---|
| $700 to $950 | modelled forecast range for a launch month at 2,000 active users | estimated | Central figure $800, from driver-level arithmetic at real GPT-5.4 rates (price book, effective 2026-07-02) with a 24% effective-rate uplift. Shown as a range because launch-week traffic is the dominant uncertainty. |
| $0.22 | modelled steady-state model cost per active user per month | calculated | (40 x $0.0025) + (8 x $0.015), GPT-5.4 rates per 1k tokens from the price book. Per-user token volumes are modelled. |
What a generic answer can’t know
A forecast needs your usage curve per feature and per user, your real effective rate, and knowledge of what you're about to ship. None of that lives in a provider's billing data. It lives in your own request stream. Culpa reads it on your infrastructure, keeps your prompts and responses there, and counts the calls to run your plan.
Questions founders ask next
How far ahead can an LLM burn forecast be trusted?
One month is reasonable if your drivers are stable, and a quarter is a planning aid rather than a number to commit to. Anything further out is dominated by product decisions you haven't made yet, so widen the range accordingly.
Should a forecast be a single number or a range?
A range, always, with the assumptions stated. A single number gets read as a commitment and the first miss costs you credibility on every forecast afterwards.
How do I know whether my forecasting is getting better?
Store every forecast when you make it, then score it against the actual when the period closes. A forecast nobody scores can't improve, because nobody knows in which direction it's wrong.
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.
Free, no card, no account
Run the free Cost Leak Scan
It shows your most expensive conversation before you install anything.
Keep reading
Sources: OpenAI API pricing. Last reviewed 2026-08-01. Plain text version.