Skip to content
PALM SOUQ

FinOps guide · Forecasting

Forecasting LLM spend from usage drivers, not last month's invoice

Build a driver-based forecast of model cost: tenants, sessions, calls, tokens and price, with growth, model changes, caching and an incident reserve.

Ananya Iyer, Head of FinOps Research3 min read
forecast.h2
Tenants x sessions x calls
800 x 120 x 6
Cost per call
$0.00376
Base month
$2,166
Growth
8% / month
Month 6
$3,437
GPT-4.1 mini · 7k in / 600 out per call · list price

Procedure · 6 steps

  1. 1Choose the driversExpress model cost as active tenants x sessions per tenant x calls per session x cost per call, per feature.
  2. 2Measure each driverPull two to three months of per-tenant metering to get current values and trends for every driver.
  3. 3Price per call from token classesCompute cost per call from input, cached, output and reasoning tokens at current list or contract prices.
  4. 4Apply growth and planned changesProject tenant growth, usage deepening, model migrations and caching improvements as explicit adjustments.
  5. 5Add an incident reserveAdd a reserve for runaway loops and anomalies based on your worst observed incidents and your breaker settings.
  6. 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:

MonthTenantsModel cost
Month 1864$2,339
Month 2933$2,526
Month 31,008$2,728
Month 41,088$2,946
Month 51,175$3,182
Month 61,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.

Don't wait for a surprise $10,000 OpenAI invoice.

Route your agent traffic through PALM SOUQ in 2 minutes. Change one base URL, pass a tenant header, and every token is attributed and governed.

14-day free production trial · 100k requests included · no card required