Home / Insights / Software Costs and Budgets

Software Costs and Budgets

AI FinOps for Product Teams: Measuring Cost per Successful Workflow

Token prices explain only part of an AI bill. This guide shows product teams how to measure the cost of a workflow that actually succeeds, with a worked example, a spreadsheet-ready formula, attribution rules, alerts and optimisations that do not quietly lower quality.

TopicsSoftware Costs and BudgetsGenerative AI and LLMsAI Agents and Automation

Key takeaways

  • Cost per token is useful for comparing models, but the number that matters to a product team is the cost of a workflow that meets your quality bar.
  • In our illustrative support-email example, model and infrastructure cost about $0.03 per run, while human review costs about $1.27 per run. Review effort, not tokens, dominates.
  • A cheaper model that lowers acceptance from 72% to 60% on a share of traffic raises total cost per successful workflow, even though the model bill falls by about a third.
  • Attribute spend with one API key or tag set per application, environment and team, and start with showback before chargeback.
  • Optimise in this order: remove wasted context, cache stable prompt prefixes, cap output, batch non-urgent work, then route by difficulty — re-testing quality after each change.

AI features rarely become expensive because one request is costly. They become expensive because requests multiply: longer prompts, more conversation history, extra retrieval, retries, agent steps and people checking the output. A monthly invoice from a model provider tells you how much you spent. It does not tell you whether the spend produced useful work.

FinOps applies financial accountability to variable technology spend. For AI, the FinOps Foundation summarises the idea in one line: measure the use case, not the token. This guide turns that principle into something a product team can run. It defines the unit to measure, walks through a complete worked example, shows how to attribute costs, and explains which optimisations are safe and which ones only move cost somewhere else.

The numbers in the example are illustrative round figures, not quotes from any provider or client project. Replace them with your own prices and measurements before making decisions.

Choose the unit: cost per successful workflow

Most AI cost dashboards start with tokens because tokens are what providers bill. Tokens are a good unit for comparing models and for spotting runaway prompts, but they are a poor unit for deciding whether a feature is worth running. A product team needs a unit that connects spend to the job the user wanted done.

We recommend cost per successful workflow: the total cost of running a workflow over a period, divided by the number of runs that met the quality bar you agreed in advance. The FinOps Foundation lists a similar metric, cost per successful outcome, alongside cost per inference, cost per million tokens, cache hit rate and model fit.

Three definitions make the metric useful:

  • Workflow. One complete unit of user value, such as “answer a customer email”, “extract and validate an invoice” or “produce a weekly account summary”. It may involve several model calls, retrieval steps and tool calls.
  • Success. A testable condition decided by product and operations, not by engineering alone. For a support reply it might be “sent with minor or no edits”. For invoice extraction it might be “all required fields correct and the invoice posted without manual correction”.
  • Total cost. Everything the workflow consumes: model tokens, retries, embeddings and vector search, other infrastructure, and the human time needed to review, correct or redo the output.

If you only divide model spend by total requests, a cheaper model that produces more rejected answers will look like a saving. Dividing total cost by successful runs exposes that trade-off.

The formula, written for a spreadsheet

For one workflow over one month:

ComponentHow to calculateWhere the data comes from
Model costΣ (input tokens × input price + output tokens × output price) for every call, including retriesProvider usage export or your own request logs
Cached inputCached tokens × cached price (often a fraction of the input price)Provider usage fields for cache reads and writes
Retrieval and infrastructureEmbedding calls, vector database, orchestration and hosting allocated per runCloud bill allocated by tag or request count
Human effortReview minutes × loaded hourly cost ÷ 60, plus rework time for failed runsWorkflow tool timestamps or a sampling study
Successful runsRuns that met the agreed quality barAcceptance flags, QA sampling or downstream outcome

Cost per successful workflow = (model cost + cached input + retrieval and infrastructure + human effort) ÷ successful runs

Keep two versions of the metric: one including human effort and one excluding it. The first tells you whether the feature is worth running. The second tells engineering whether a prompt or model change made the machine part cheaper.

A worked example: drafting replies to customer emails

Imagine a support team that receives 40,000 customer emails a month. The AI workflow has three steps:

  1. A small, inexpensive model classifies the email (topic, urgency, language).
  2. The system retrieves relevant help-centre and policy passages.
  3. A larger model drafts a reply, which an agent reviews before sending.

Inputs (illustrative)

AssumptionValue
Small model price$0.25 per million input tokens, $1.25 per million output tokens
Large model price$3.00 per million input tokens, $15.00 per million output tokens
Classification call1,200 input tokens, 50 output tokens
Drafting call7,500 input tokens (2,000 system prompt and instructions, 4,000 retrieved passages, 1,500 email and history), 450 output tokens
Retries8% of drafting calls are retried once (timeouts, invalid format)
Retrieval and other infrastructure$0.0004 per run
Agent cost$24 per hour, or $0.40 per minute, fully loaded
Review time1.5 minutes for every draft; rejected drafts need a further 6 minutes to write manually
Acceptance72% of drafts sent with minor or no edits

All prices and volumes are illustrative round numbers for the example, not provider quotes. Check current prices on your provider’s pricing page.

Per-run and monthly cost

LinePer runPer month (40,000 runs)
Classification (small model)$0.00036$14.50
Drafting (large model)$0.02925$1,170
Retries (8% of drafting)$0.00234$93.60
Retrieval and infrastructure$0.00040$16
Model and infrastructure subtotal$0.0324$1,294
Human review and rework$1.272$50,880
Total$1.30$52,174

Human cost per run = 0.72 × 1.5 min × $0.40 + 0.28 × 7.5 min × $0.40. Figures are rounded.

With 72% acceptance, the workflow produces 28,800 successful replies a month. That gives:

  • Model and infrastructure cost per successful workflow: $1,294 ÷ 28,800 ≈ $0.045
  • Total cost per successful workflow: $52,174 ÷ 28,800 ≈ $1.81

The model bill is real and worth managing, but it is about 2.5% of the total. The single biggest lever in this workflow is acceptance rate. In the same model, raising acceptance from 72% to 80% would reduce total monthly cost to about $44,500 and cost per successful workflow to about $1.39, without changing a single token price.

This is why the FinOps Foundation advises pairing unit cost with the quality bar: a cheap result that fails the bar does not lower the real cost per outcome.

Where cheaper is not cheaper: testing optimisations

Using the same example, here is what three common optimisations do. Each scenario changes one thing.

ScenarioChangeModel and infra per monthAcceptanceTotal cost per successful workflow
Baseline—$1,29472%$1.81
Prompt caching2,000-token stable prefix cached (95% cache reads at 0.1× input price, 5% writes at 1.25×)$1,07672%$1.80
Output capMaximum reply length reduced from 450 to 350 tokens$1,22972% (must be re-tested)$1.81
Route 40% of “simple” emails to the small model for draftingAcceptance on that 40% falls from 72% to 60%$83167.2% overall$2.10
Same routing, acceptance unchangedAcceptance on that 40% stays at 72%$83172%$1.80

Illustrative. Cache multipliers follow Anthropic’s published prompt-caching pricing (cache writes 1.25× and reads 0.1× of base input price for a 5-minute cache); other providers use different rules.

Three lessons follow:

  • Caching is close to a free win when the prefix is stable. It reduced the model bill by about 17% here without touching the output. It only works if the cached part of the prompt is genuinely identical across requests and long enough to qualify; check your provider’s minimum cacheable length and cache lifetime.
  • Output caps need a quality test. Shorter replies cost less, but if agents then add missing details by hand, the saving disappears.
  • Routing saves money only if quality holds. In the routing scenario the model bill fell by about 36%, but total cost per successful workflow rose by about 16% because more drafts had to be rewritten. The decision depends entirely on measured acceptance for the routed segment, so run the change as a controlled experiment before rolling it out.

Batch processing for work that can wait

Not every AI job needs an immediate answer. Nightly summarisation, back-office classification and bulk enrichment can often run as batch jobs. OpenAI’s Batch API, for example, offers a 50% discount compared with synchronous requests in exchange for completion within 24 hours. Customer-facing replies like the example above are not a good fit; weekly account summaries usually are.

Attribution: knowing which team, feature and environment spent what

A cost per successful workflow is only useful if you can calculate it per feature. That requires attribution from the first day of development, not after the first surprising invoice.

Practical attribution rules

  • One API key or project per application and environment. Separate production from staging and experimentation. Many provider bills lack native tags, so key-level separation is often the most reliable split.
  • A request log you control. Record workflow name, workflow run ID, step name, model, input tokens, cached tokens, output tokens, latency, retry flag and outcome for every call. A thin proxy or gateway in front of the provider makes this consistent.
  • Consistent tags in the cloud. Use the same keys for vector databases, queues and hosting: for example Team, Application, Environment, Workload and CostCenter.
  • Allocation rules for shared services. Decide how to split a shared vector database or gateway: by request count, by storage used or by a fixed share. Write the rule down so monthly numbers are comparable.
  • Showback before chargeback. Start by showing each team its spend and cost per successful workflow. Visibility alone usually changes behaviour; billing teams internally can come later, once the numbers are trusted.

Multi-step and agent workflows

Agent-style workflows make attribution harder because one user request can trigger many model and tool calls. Give every run an ID at the entry point and pass it through every step, including tool calls and sub-agents. Without a run ID you can see total tokens but cannot tell whether a cost spike came from more users, longer conversations or an agent looping.

Budgets, alerts and guardrails

Monthly budgets are necessary but too slow on their own. A prompt change on Monday can triple tokens per run before anyone reads the month-end report. Combine budgets with run-level guardrails and short-window alerts.

ControlExample settingWhy it matters
Monthly budget per applicationAlert at 50%, 80% and 100% of planFinance visibility and forecasting
Tokens per run (p95)Alert if more than 30% above the 14-day baselineCatches prompt, history or retrieval bloat early
Retry rateAlert above 12% of callsRetries are pure cost and often signal format or timeout problems
Agent step limitHard stop at an agreed number of steps per runPrevents runaway loops
Maximum output tokensSet per step, not globallyStops verbose answers without breaking structured outputs
Cache hit rateAlert if it drops below the expected levelA changed prompt prefix can silently disable caching
Cost per successful workflowAlert if 25% above baseline for three consecutive daysDetects cost or quality regressions together

Example thresholds for illustration. Set your own baselines from the first weeks of production data.

OWASP’s Top 10 for LLM applications lists Unbounded Consumption (LLM10) as a security risk, because uncontrolled usage can cause both excessive cost and denial of service. Rate limits and per-user quotas therefore serve cost control and abuse prevention at the same time.

Forecasting AI spend

AI usage is harder to forecast than traditional cloud capacity, especially in the first months. Two practices help:

  • Forecast from drivers, not last month’s invoice. Model expected workflow runs × tokens per run × price, plus infrastructure and review effort. When the product team plans a feature that doubles retrieved context, the forecast should change before the bill does.
  • Use shorter forecast windows early on. Re-forecast monthly or even fortnightly during the first quarter of a new AI feature, and agree with finance that pilots may need flexible budgets.

Sensitivity check

Run a simple sensitivity table on the drivers most likely to move. In the example:

Driver changeModel and infra per month
Baseline$1,294
Retries rise from 8% to 20%$1,434
Drafting context grows from 7,500 to 10,000 input tokens$1,618
Volume doubles to 80,000 emails$2,588
Acceptance rises from 72% to 80%$1,294 (but total cost falls to about $44,500)

Illustrative values from the worked example.

An optimisation sequence that protects quality

Apply changes in an order that starts with waste and ends with trade-offs, and re-run your evaluation set after each step.

  1. Remove context nobody uses. Trim system prompts, stop resending full conversation history when a summary works, and retrieve fewer, better passages.
  2. Cache stable prefixes. Keep instructions and reference material at the start of the prompt and unchanged between calls.
  3. Cap output per step. Ask for the format you need — fields, short replies, bullet points — and set a maximum.
  4. Batch what can wait. Move non-urgent jobs to batch processing where the provider discounts it.
  5. Route by difficulty, with evidence. Send simple tasks to smaller models only after measuring acceptance on a representative sample.
  6. Reduce human effort. Improve the steps people correct most often; in many workflows this is the largest saving available.

Instrumentation: what to log for every model call

Attribution and cost per successful workflow both depend on a request log you can trust. Provider dashboards are useful for invoices but rarely know your workflow names, users or outcomes. Log one record per model call, written by your application or gateway, and one record per workflow run.

{  "run_id": "wf_2026_000184233",  "workflow": "support_reply_draft",  "step": "draft",  "application": "support-console",  "environment": "production",  "team": "customer-support",  "model": "large-model-v3",  "route": "default",  "input_tokens": 7480,  "cached_input_tokens": 2000,  "output_tokens": 431,  "latency_ms": 2910,  "retry": false,  "status": "ok",  "prompt_version": "draft-v14"}

The workflow-level record adds the outcome: accepted, edited, rejected or escalated, plus review time where your support or workflow tool records it. Join the two on run_id to calculate cost per successful workflow for any period, model, prompt version or team.

A few practical rules keep the log useful:

  • Record prompt and model versions. When cost per success changes, the first question is always “what changed?”. Without versions you cannot answer it.
  • Avoid storing sensitive content by default. Token counts and identifiers are enough for cost analysis. Store prompts and outputs only where you have a clear purpose, retention rule and access control.
  • Price at analysis time, not at logging time. Store token counts and look up prices from a dated price table when you calculate cost. Prices change; your history should be recalculable.
  • Sample outcomes when full labelling is impossible. If not every run has an acceptance flag, review a random sample each week and apply the measured success rate, with its sample size, to the period.

Who owns AI costs

AI spend sits between teams. Engineering controls prompts and models, product controls features and usage, operations controls the human review step, and finance owns the budget. When nobody owns the whole picture, each team optimises its own part and total cost per successful workflow drifts. A simple responsibility split avoids that.

ActivityProduct ownerEngineering leadOperations leadFinance
Define the workflow and success conditionAccountableConsultedConsultedInformed
Instrument calls and maintain the request logInformedAccountable—Informed
Set budgets and forecastConsultedConsultedConsultedAccountable
Measure acceptance and review timeConsultedConsultedAccountableInformed
Approve model, prompt or routing changesAccountableResponsibleConsultedInformed
Monthly cost and quality reviewAccountableResponsibleResponsibleConsulted

Adapt the roles to your organisation; the important part is that one person is accountable for each activity.

Running the monthly review

Keep the review short and evidence-based. Thirty minutes with the right four people is enough if the data is ready. Useful questions:

  1. Did cost per successful workflow move, and was the cause volume, tokens per run, retries, price changes or acceptance?
  2. Which prompt, model or retrieval changes shipped this month, and what did they do to cost and quality?
  3. Where do people spend the most review time, and which AI step could reduce it?
  4. Are any alerts firing repeatedly without action? Either fix the cause or adjust the threshold.
  5. Have provider prices or terms changed since the forecast was made?

Write down decisions and owners. Over a few months, the review becomes the place where AI features are kept healthy rather than a meeting where invoices are explained after the fact.

A one-page AI FinOps checklist

  • The workflow, its success condition and its owner are written down.
  • Every model call is logged with workflow name, run ID, step, model, token counts, retry flag and outcome.
  • Production, staging and experiments use separate keys or projects.
  • Shared infrastructure has a documented allocation rule.
  • Cost per successful workflow is reported with and without human effort.
  • Alerts exist for tokens per run, retry rate, cache hit rate and cost per successful workflow.
  • Every optimisation is tested against a fixed evaluation set before rollout.
  • Prices used in forecasts show the date they were checked.

Frequently asked questions

Is AI FinOps only relevant for large companies?

No. A single AI feature can surprise a small team because usage scales with users and prompt length. The minimum version — run IDs, per-feature keys, one cost-per-success metric and two alerts — takes days, not months, to set up.

Should we self-host an open model to save money?

Sometimes. Self-hosting replaces token prices with compute, operations and engineering time. It tends to make sense with steady, high volume, strict data-residency needs or specialised fine-tuned models. Compare total cost per successful workflow for both options, including the people needed to run the infrastructure.

How do we price an AI feature for our own customers?

Start from cost per successful workflow at expected usage, add a margin for variance, and set usage limits or tiers that protect you from heavy users. Revisit the numbers whenever provider prices change.

What should we measure first if we have nothing today?

Log tokens per call with a workflow name and run ID, and agree on one success flag per workflow. Everything else in this guide builds on those two pieces of data.

Sources and methodology

Facts in this article were checked against the sources below on 6 November 2026. Directory data (ratings, review counts, rate bands and team sizes) changes over time and is shown as published on the date accessed. Illustrative examples are labelled as such and are not quotes.

  1. FinOps Foundation: FinOps for AI overview — accessed 6 November 2026. Unit economics, KPI formulas (cost per successful outcome, cache hit rate, model fit), allocation and forecasting guidance; page last updated 28 October 2026
  2. Anthropic: Prompt caching documentation — accessed 6 November 2026. Cache write 1.25× (5-minute) or 2× (1-hour) and cache read 0.1× of base input price; minimum cacheable length
  3. OpenAI: Batch API guide — accessed 6 November 2026. 50% discount versus synchronous APIs; 24-hour completion window
  4. OWASP: Top 10 for LLM Applications 2025 — accessed 6 November 2026. LLM10 Unbounded Consumption

Want a cost model for your AI feature?

Share the workflow, expected volume and quality bar. We will help you build a cost-per-success model and identify the levers worth testing first.