Sample report. Invented traffic with planted waste, run through the same engine your logs would use — so the arithmetic is real even though the company is not. Audit your own logs →
TokenOps Cost Auditor
Audit sample00000000000000000000000000 · generated 2026-07-01 · 3 days of traffic · 164 calls
$0.89
estimated monthly savings (11.7% of current spend)
Current monthly spend (your 3-day window scaled to 30 days)
$7.61
Optimized projection
$6.72
Observed spend (3d window)
$0.76
Findings
5

Savings waterfall — findings ranked by monthly impact

FindingMonthly impact (USD)
#1 · D3-001 · d3 prompt bloat
$0.5000
#2 · D2-001 · d2 missing cache
$0.2468
#3 · D6-001 · d6 chatty loop
$0.0960
#4 · D4-001 · d4 retry storm
$0.0510
#5 · D5-001 · d5 unbounded max tokens
$0.0000

Spend by model

ModelObserved spend (USD)
claude-haiku-4-5 (92 calls)
$0.3302
claude-opus-4-8 (25 calls)
$0.2250
claude-sonnet-5 (30 calls)
$0.1800
gpt-5.6-luna (12 calls)
$0.0194
gpt-5.4-mini (5 calls)
$0.0064

Spend by day

UTC dayObserved spend (USD)
2026-06-10
$0.4050
2026-06-11
$0.2714
2026-06-12
$0.0846

Findings in detail

#1 by impact D3-001 low estimated $0.5000/month

Route 'rag-bloated' /v1/rag sends prompts far larger than comparable traffic producing similar-length responses (p90 6000 tokens vs corpus norm). Trim static instructions, deduplicate context, and move stable content behind prompt caching. Savings assume only half the excess is removable (0.5 safety factor).

Evidence sample (20 of max 20 calls — token counts only, never text)
When (UTC)ModelTokensNote
2026-06-11T16:00:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:03:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:06:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:10:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:13:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:16:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:20:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:23:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:26:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:30:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:33:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:36:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:40:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:43:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:46:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:50:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:53:20+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T16:56:40+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T17:00:00+00:00claude-haiku-4-56350prompt above corpus norm
2026-06-11T17:03:20+00:00claude-haiku-4-56350prompt above corpus norm
#2 by impact D2-001 low conservative $0.2468/month

Enable prompt caching for the repeated prefix on claude-sonnet-5 (30 uncached calls with an identical prefix (hash-verified)). Mark the shared system/context prefix as cacheable in your API calls; the varying suffix stays uncached.

Evidence sample (20 of max 20 calls — token counts only, never text)
When (UTC)ModelTokensNote
2026-06-10T09:00:00+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:02:10+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:04:20+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:06:30+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:08:40+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:10:50+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:13:00+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:15:10+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:17:20+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:19:30+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:21:40+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:23:50+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:26:00+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:28:10+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:30:20+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:32:30+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:34:40+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:36:50+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:39:00+00:00claude-sonnet-52200uncached repeated-prefix call
2026-06-10T09:41:10+00:00claude-sonnet-52200uncached repeated-prefix call
#3 by impact D6-001 low estimated $0.0960/month

Agent loop suspected: the same prompt prefix recurs repeatedly in this session (context re-read signature). Tag 'agent-7' issued 1 burst(s) of small sequential calls in one session (10 calls total) that are batchable. Combine related items into one request (batches of ~5) so shared context is sent once instead of per call; savings assume only the re-sent context (run-median prompt size) is eliminated.

Evidence sample (10 of max 20 calls — token counts only, never text)
When (UTC)ModelTokensNote
2026-06-12T15:00:00+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:01:05+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:02:10+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:03:15+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:04:20+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:05:25+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:06:30+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:07:35+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:08:40+00:00claude-haiku-4-51280small sequential call in burst
2026-06-12T15:09:45+00:00claude-haiku-4-51280small sequential call in burst
#4 by impact D4-001 med conservative $0.0510/month

Near-identical calls repeated in bursts on gpt-5.4-mini (tag 'support-bot': 1 burst(s) in one session, 5 calls, largest burst 5). Add retry backoff with jitter, deduplicate in-flight requests, and cache the first response for identical inputs within the burst window.

Evidence sample (5 of max 20 calls — token counts only, never text)
When (UTC)ModelTokensNote
2026-06-11T14:00:00+00:00gpt-5.4-mini700near-identical call in burst
2026-06-11T14:00:20+00:00gpt-5.4-mini700near-identical call in burst
2026-06-11T14:00:40+00:00gpt-5.4-mini700near-identical call in burst
2026-06-11T14:01:00+00:00gpt-5.4-mini700near-identical call in burst
2026-06-11T14:01:20+00:00gpt-5.4-mini700near-identical call in burst
#5 by impact D5-001 low estimated $0.0000/month

Route 'generator' /v1/chat/completions declares max_tokens around 8192 while actual completions stay under 120 tokens (p95). Oversized caps inflate timeout budgets and worst-case latency, and can reserve capacity on some plans. Set max_tokens near your observed p95 plus headroom. No direct dollar impact is claimed on your current providers.

Evidence sample (12 of max 20 calls — token counts only, never text)
When (UTC)ModelTokensNote
2026-06-12T13:00:00+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:03:20+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:06:40+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:10:00+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:13:20+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:16:40+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:20:00+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:23:20+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:26:40+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:30:00+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:33:20+00:00gpt-5.6-luna1020declared max far above completions
2026-06-12T13:36:40+00:00gpt-5.6-luna1020declared max far above completions

Pricing data provenance

Rates from pricing table version 2026-07-17, human-verified 2026-07-17. Each call is priced at the rate in effect at its timestamp.

All models in your logs were priced (0 unpriced models).

Methodology

Every number in this report is computed deterministically from your uploaded logs by a rules engine that contains no AI model calls (NFR-01). Each call is priced at the provider rate in effect at its timestamp, from a versioned, human-verified pricing table; calls on models without a verified rate card are listed as unpriced and excluded from totals rather than guessed. Monthly figures normalize the observed window to 30 days (x 30/observed-days). Savings estimates are conservative by construction: cache savings subtract estimated cache-write costs (one write per cache-lifetime window, provider-specific) and apply a 0.7 haircut when write windows cannot be estimated; prefix identity without hash evidence takes a 20% suffix haircut; prompt-bloat savings assume only half the excess is removable; model-downgrade savings are computed at the suggested model's published rates and model suitability requires your own quality evaluation; savings on prompt tokens are priced as the tokens were actually billed (cache reads at cache-read rates, never the full input rate). Waste classes can overlap on the same calls, so the headline savings total is capped at your observed monthly spend; per-finding figures are independent estimates. Spend estimates are FLOORS: provider long-context surcharges and regional data-residency multipliers are not modeled in v1. Evidence rows carry token counts and metadata only — never prompt or completion text.

Data handling

Your uploaded log file is analyzed and then deleted: raw uploads are automatically purged 7 days after report generation, purge events are written to an append-only audit log, and no prompt or completion text is ever stored. Retained data is limited to token counts, aggregates, and this report. Your data is never used for training.