Northwind AI's analysed spend was $1,505.46. We identified $937.24 of savings opportunities (62.3% of spend): $47.24 measured and $890.00 estimated. After discounting estimates to 50.0%, the guarantee-credited recoverable figure is $492.24 (32.7%) — the money-back-half guarantee is MET (threshold 20.0%).
Verdict: GUARANTEE MET — 32.7% of spend is recoverable (threshold 20.0%).
| Total spend analysed | $1,505.46 |
| Measured recoverable MEASURED (credited in full) | $47.24 |
| Estimated recoverable ESTIMATED (raw) | $890.00 |
| Estimate credit fraction | 50.0% |
| Estimated recoverable (credited) | $445.00 |
| Total recoverable | $492.24 |
| Recoverable share of spend | 32.7% |
| Severity | Finding | Category | Opportunity | Basis |
|---|---|---|---|---|
| MEDIUM | Route 'summarize' runs 12,000 calls on premium 'flagship-xl' | model-rightsizing | $403.30 | ESTIMATED |
| MEDIUM | Uncached prefix on classify (~6,100 tokens) | prompt-caching | $385.38 | ESTIMATED |
| LOW | Over-long output on route 'chat' (1,200 calls) | output-bloat | $55.20 | ESTIMATED |
| LOW | 3,499 exact-duplicate requests on notify | duplicate-requests | $47.24 | MEASURED |
| LOW | Runaway session on agent: 2,200 calls | runaway-loop | $46.12 | ESTIMATED |
| INFO | Route 'classify' is 36.0% of spend | cost-driver | — | — |
| INFO | Route 'summarize' is 33.5% of spend | cost-driver | — | — |
'summarize' sends 12,000 requests to premium model 'flagship-xl' ($504.13). Re-priced on 'balanced-m' the same tokens would cost $100.83.
Evidence: 12,000 calls on 'flagship-xl' for route 'summarize'; current $504.13 vs $100.83 on 'balanced-m'.
Opportunity: $403.30 ESTIMATED — assumption: route 'summarize' holds quality on 'balanced-m' — validate on an eval before switching
Recommendation: Run an eval of 'balanced-m' on this route; if quality holds, switch.
A ~6,100-token static prefix on model 'balanced-m' was sent uncached 26,000 times. Caching it charges the prefix at the cache-read rate after the first call.
Evidence: 26,000 uncached requests share prefix pf-classify-…; minimum input 6,100 tokens; 0 cache reads.
Opportunity: $385.38 ESTIMATED — assumption: the shared ~6,100-token prefix is cacheable and warm for ~90% of the 25,999 repeat calls
Recommendation: Enable prompt caching for this system prefix (mark it as the cacheable portion of the request).
On 'chat', 1,200 of 12,000 calls generate more than 933 output tokens (>3x the 311-token median).
Evidence: Route 'chat' median output 311 tokens; 1,200 calls exceed 933.
Opportunity: $55.20 ESTIMATED — assumption: output beyond 3x the route median is unnecessary and a max_tokens cap recovers it
Recommendation: Set a max_tokens bound sized to the task on this route.
3,500 requests share an identical fingerprint; 3,499 are redundant repeats (day 2026-06-15).
Evidence: Fingerprint rf-notify-st… seen 3,500 times; 3,499 redundant calls costing $47.24.
Opportunity: $47.24 MEASURED
Recommendation: Add an idempotency key and a short-lived response cache.
Session sess-runaway fired 2,200 calls in 1:13:18; a healthy session runs a handful. The excess looks like an unterminated loop.
Evidence: Session sess-runaway: 2,200 calls over 1:13:18; 2,195 beyond a 5-call baseline cost $46.12.
Opportunity: $46.12 ESTIMATED — assumption: iterations beyond 5 in this session produced no additional value (a runaway loop)
Recommendation: Add a per-session call cap and loop-termination guard.
'classify' accounts for $541.95 of the $1,505.46 analysed — a concentration worth watching.
Evidence: $541.95 on 'classify' (36.0% of total).
'summarize' accounts for $504.13 of the $1,505.46 analysed — a concentration worth watching.
Evidence: $504.13 on 'summarize' (33.5% of total).
Total analysed spend $1,505.46 across 100,174 priced records.
| Model | Spend | Share |
|---|---|---|
| balanced-m | $997.33 | 66.2% |
| flagship-xl | $504.13 | 33.5% |
| mini-s | $4.00 | 0.3% |
| Route | Spend | Share |
|---|---|---|
| classify | $541.95 | 36.0% |
| summarize | $504.13 | 33.5% |
| chat | $156.56 | 10.4% |
| search | $113.44 | 7.5% |
| rank | $70.17 | 4.7% |
| agent | $61.67 | 4.1% |
| notify | $53.53 | 3.6% |
| extract | $4.00 | 0.3% |
| Date | Spend |
|---|---|
| 2026-06-01 | $47.11 |
| 2026-06-02 | $48.03 |
| 2026-06-03 | $45.41 |
| 2026-06-04 | $48.91 |
| 2026-06-05 | $47.26 |
| 2026-06-06 | $47.36 |
| 2026-06-07 | $47.41 |
| 2026-06-08 | $47.15 |
| 2026-06-09 | $45.84 |
| 2026-06-10 | $47.58 |
| 2026-06-11 | $49.34 |
| 2026-06-12 | $46.05 |
| 2026-06-13 | $46.18 |
| 2026-06-14 | $46.22 |
| 2026-06-15 | $93.82 |
| 2026-06-16 | $45.41 |
| 2026-06-17 | $48.10 |
| 2026-06-18 | $47.01 |
| 2026-06-19 | $46.36 |
| 2026-06-20 | $46.84 |
| 2026-06-21 | $92.41 |
| 2026-06-22 | $45.77 |
| 2026-06-23 | $48.83 |
| 2026-06-24 | $45.78 |
| 2026-06-25 | $47.64 |
| 2026-06-26 | $46.38 |
| 2026-06-27 | $49.83 |
| 2026-06-28 | $47.53 |
| 2026-06-29 | $47.02 |
| 2026-06-30 | $46.85 |
Each opportunity is derived from the supplied data, not assumed. Numbers are labelled MEASURED (provable from the data, e.g. exact-duplicate calls) or ESTIMATED (dependent on a stated assumption, e.g. a model swap). Toward the money-back-half guarantee, measured savings count in full and estimated savings are credited at 50.0%, so the verdict never rests on optimism. Savings from different passes are treated as independent; where a route could be addressed by more than one change, the true combined saving may be lower — another reason the credited figure is deliberately conservative.
✓ = assessed on the supplied data; — = not assessable from what was provided.
| Checklist item | |
|---|---|
| ✓ | Spend broken down by model, route, and day |
| ✓ | Prompt-caching opportunity assessed (needs prefix fingerprints) |
| ✓ | Model-rightsizing assessed for premium-tier routes |
| ✓ | Exact-duplicate / retry waste assessed (needs request fingerprints) |
| ✓ | Runaway-loop waste assessed (needs session ids) |
| ✓ | Over-long output (context bloat) assessed |
| ✓ | Money-back-half guarantee evaluated |
Source 'usage.jsonl' (usage-jsonl): 100,174 rows read, 100,174 parsed, 0 dropped.
Figures labelled ESTIMATED depend on the stated assumption and are discounted before they count toward the guarantee. Validate them before acting.