Guides / size an llm cost plan

How to size an LLM cost plan

Size a metered plan from your token volume rather than your request count, because a credit covers one call plus one per complete 10,000 tokens. Culpa, a local-first LLM cost, margin, and forecast ledger, meters on that basis, so your tier can move when prompts grow even while traffic holds perfectly flat.

Why this happens

Sizing goes wrong in a specific and repeatable way. A team counts requests, picks the tier that covers them, and treats the decision as settled. Then prompt sizes drift upward, which they always do, and the allowance depletes faster every month against traffic that never moved. The tier change arrives looking like growth and is really prompt creep. The fix is to size on the quantity the meter actually reads, and to re-run it whenever prompts change rather than whenever traffic does.

What this usually looks like

  • Your plan was chosen from a request count and nobody wrote down the token assumption.
  • The allowance depletes earlier each month while traffic stays flat.
  • An upgrade is being discussed and nobody can say which variable moved.
  • Nobody has sized the heaviest feature separately from the average.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run a free scan

Mistakes that cost the most

MistakeWhy it hurtsDo instead
Sizing from request count alone.The meter reads tokens as well as calls, so request count sets a floor and not the answer.Compute credits per call at your real average token size, then multiply.
Sizing on an average that hides a heavy feature.One long-context feature can consume more credits than everything else combined.Size each feature separately and sum them. The total will surprise you.
Treating the sizing as a one-time decision.Prompt sizes drift upward, so a correct sizing quietly stops being correct.Re-run it whenever average tokens per call move, not whenever traffic does.

Run this check tonight

  1. Pull call count and total tokens per feature for a full month.
  2. For each feature, compute credits per call: one, plus one per complete 10,000 tokens.
  3. Multiply by that feature's call count and sum across features.
  4. Compare the total against the tier allowances and note your headroom as a percentage.
  5. Recompute at your current prompt-growth rate to see when the tier changes.

The same traffic, one tier apart

Illustrative example

An application making 400,000 calls a month, metered at one credit per call plus one per complete 10,000 combined tokens, against published allowances of 1,000,000 and 2,000,000. The token growth below is modelled.

At 18,000 tokens a call: 1 + floor(18,000 / 10,000) = 2 credits
400,000 x 2 = 800,000 credits, which fits the 1,000,000 tier with 20% headroom
Prompts grow to 25,000 tokens a call: 1 + floor(25,000 / 10,000) = 3 credits
400,000 x 3 = 1,200,000 credits, which no longer fits and needs the 2,000,000 tier
Call volume never moved. The prompt did

A 39% rise in prompt size moved this application a whole tier on flat traffic. Anyone sizing from request count would read that as growth and price the upgrade against a number that never changed.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
800,000 to 1,200,000 creditsmodelled monthly credit demand for identical traffic before and after prompt growthestimated400,000 calls at 2 credits and at 3 credits, from the teardown arithmetic. A range because the token sizes and the growth are modelled.
39%modelled prompt-size increase that moved this workload a full tier at flat trafficcalculated25,000 divided by 18,000 tokens per call, from the teardown arithmetic.

What a generic answer can’t know

A plan table can't size itself against your workload, because the answer lives in your own token profile per feature and in how fast your prompts are drifting. Both are facts about your code. Culpa measures them on your infrastructure, keeps your prompts and responses there, and counts the calls to run your plan.

Questions founders ask next

How do I work out which tier I need?

Compute credits per call as one plus one per complete 10,000 combined tokens, multiply by monthly calls for each feature, and sum. Compare that total against the allowances rather than comparing your raw request count.

Why did my usage rise without more traffic?

Almost always prompt growth. The meter reads tokens as well as calls, so a longer system prompt, a larger retrieved context or a more verbose response format all consume more credits at identical request volume.

Should I size on the average or the heaviest feature?

Both. Size each feature separately and sum them, because one long-context feature can consume more than everything else combined, and an average across features hides exactly that.

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.

1

Change one base URL.

Or drop in the Python or TypeScript library.

2

Find your most expensive conversation.

In the first session, not the first week.

3

Cost your next feature before you ship it.

Base URLhttp://localhost:4545/v1Your traffic keeps flowing if Culpa ever stops.

Why the bill went up

Example dashboard

Calls 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

$0$20$40$60$8024262830020406
user_384report_generatorconv_91fprompt_v1894,220 tokens3 retries$6.81

Most expensive users

user_384$38.42
user_119$21.07
user_562$14.90
user_204$8.30
user_871$5.10

Next week forecast

Best$180
Median$240
p90$310
p99$395

Graded against reality. Accuracy shown as results land.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run a free scan

Keep reading


Sources: OpenAI API pricing. Last reviewed 2026-08-02. Plain text version.