The questions Culpa was created to solve: Why did your OpenAI bill suddenly increase?
A sudden AI bill increase usually comes from a fairly small number of places: you made more calls, each call became more expensive, or your application started doing work you didn’t realise was happening.
The problem is that the total bill doesn’t tell you which one.
So how to find out?
I’d start with calls, but not simply calls per day. I’d look at calls relative to the workflow your customer actually ran. If customer activity stayed broadly flat but the number of model calls required to serve it increased, something inside the application changed.
Retries are an obvious example. Agent workflows make this harder because one customer action can trigger planning, retrieval, tools, reviewers and subagents. The customer may still see one answer while your provider sees dozens of calls.
Then look at cost per call.
A model change is the obvious culprit, but it isn’t the only one. Context can grow. Outputs can get longer. A fallback can quietly route work to a more expensive model. Cache behaviour can change. The same number of calls can therefore cost materially more.
Caching deserves its own check because provider accounting is not always intuitive. A workload can look almost identical from the customer’s side while a prompt or system-message change turns cheap cached input into more expensive input.
Next
Split the bill by customer, feature and conversation.
This is usually where averages stop being helpful. One customer may be consuming far more inference than everyone else. One feature may have changed behaviour. One conversation may contain hundreds of calls that disappear when you look only at monthly totals.
Then look for work that has no obvious customer owner. Background jobs, evaluations, failed workflows, scheduled tasks and missing attribution can all create legitimate provider usage without appearing in your normal product metrics.
The debugging order
- Did customer activity increase enough to explain the bill?
- Did calls per customer action change?
- Did tokens or model mix change?
- Did cache behaviour change?
- Did retries or agent work increase?
- Which customer and feature moved?
- Which conversation was most expensive?
- What work has no owner?
The important part is to keep drilling down. “OpenAI cost us $12,000” isn't the answer. Instead, you want to get to something your team can actually act on: this customer used this feature, which triggered this conversation, and the abnormal cost started here.
That is the problem we built Culpa around. Start with the dollar, then follow it backwards until the cost has an owner and a cause.
If your AI bill jumped tonight, how far could you trace it before you ended up in logs and spreadsheets?

Replies