Procedure · 6 steps
- 1Choose the driversExpress model cost as active tenants x sessions per tenant x calls per session x cost per call, per feature.
- 2Measure each driverPull two to three months of per-tenant metering to get current values and trends for every driver.
- 3Price per call from token classesCompute cost per call from input, cached, output and reasoning tokens at current list or contract prices.
- 4Apply growth and planned changesProject tenant growth, usage deepening, model migrations and caching improvements as explicit adjustments.
- 5Add an incident reserveAdd a reserve for runaway loops and anomalies based on your worst observed incidents and your breaker settings.
- 6Compare monthly and recalibrateCompare forecast with actuals per driver each month and update the driver that missed, not the total.
The usual forecast for model cost is last month's invoice plus a growth percentage. It works until something changes: a new feature, a model migration, a large customer onboarding, a caching fix. A driver-based forecast models the reasons spend moves, so each change can be applied explicitly and each miss can be traced to a cause.
Step 1: choose the drivers
For each feature, model cost is the product of four drivers: active tenants, sessions per tenant per month, model calls per session, and cost per call. Agent features add a fifth driver, steps per task, which is often the most volatile. Keep features separate; a summarization feature and a coding agent do not grow the same way.
Step 2: measure each driver
From per-tenant metering, pull the last two or three months. In the worked example, 800 active tenants run 120 sessions a month each, with 6 model calls per session. A typical call has 7,000 input tokens and 600 output tokens on GPT-4.1 mini at $0.40 input and $1.60 output per 1M, so cost per call is $0.00376.
Base month cost: 800 x 120 x 6 x $0.00376 = $2,166.
Step 3: project growth
Apply growth to the driver that grows. If tenant count grows 8% a month and usage per tenant is flat, the six-month projection is:
| Month | Tenants | Model cost |
|---|---|---|
| Month 1 | 864 | $2,339 |
| Month 2 | 933 | $2,526 |
| Month 3 | 1,008 | $2,728 |
| Month 4 | 1,088 | $2,946 |
| Month 5 | 1,175 | $3,182 |
| Month 6 | 1,269 | $3,437 |
Step 4: apply planned changes explicitly
- Model migrations: recompute cost per call for the affected feature from the new model's prices, from the migration month onward.
- Caching improvements: lower the effective input price by the expected hit rate times the cache discount, and verify it after launch.
- New features: add them as new rows with their own drivers, starting at a conservative adoption rate.
- Large customer onboarding: add them as a separate tenant group; one enterprise can behave like a hundred small tenants.
Step 5: add an incident reserve
Runaway loops and anomalies do not follow drivers. Add a reserve line based on your history: the worst incident cost in the last six months, adjusted for your current breaker settings. With in-path breakers, the worst incident is bounded by the breaker thresholds and is usually small; without them, the reserve should reflect the largest loop your agents could plausibly run before a human intervened.
Step 6: compare and recalibrate monthly
Each month, compare the forecast with actuals per driver, not just in total. If tenants grew as expected but calls per session rose, the forecast missed on engagement, and the fix is to update that driver and ask the product team why. A total that happens to match can hide two drivers that missed in opposite directions.
Present the forecast as a range. Run it with each driver at its recent low and high, and show finance the band rather than a single line; the width of the band is itself useful information about which driver needs attention.
Per-tenant metering makes this possible because every driver can be computed from the same ledger: active tenants from distinct tenant IDs, sessions and calls from request counts, cost per call from priced events.
Ananya Iyer
Head of FinOps Research, PALM SOUQ
Chartered accountant and former SaaS finance lead at a Chennai-based CRM company. Maintains the LLM Price Index and the margin models behind the runaway cost calculator.