Vallarium

Vallarium AI Spend Audit

Prepared for: Northwind AI  ·  Engine: vallarium-cost  ·  Generated: 2026-07-11 05:42 UTC

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%).

Money-back-half guarantee

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 fraction50.0%
Estimated recoverable (credited)$445.00
Total recoverable$492.24
Recoverable share of spend32.7%

Measured waste is credited in full; estimated savings are discounted to 50% so the verdict never rests on optimism.

Findings

SeverityFindingCategoryOpportunityBasis
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

[MEDIUM] Route 'summarize' runs 12,000 calls on premium 'flagship-xl'

'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.

References: OWASP LLM cost/efficiency guidance

[MEDIUM] Uncached prefix on classify (~6,100 tokens)

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).

References: Prompt caching (provider docs)

[LOW] Over-long output on route 'chat' (1,200 calls)

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.

[LOW] 3,499 exact-duplicate requests on notify

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.

[LOW] Runaway session on agent: 2,200 calls

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.

[INFO] Route 'classify' is 36.0% of spend

'classify' accounts for $541.95 of the $1,505.46 analysed — a concentration worth watching.

Evidence: $541.95 on 'classify' (36.0% of total).

[INFO] Route 'summarize' is 33.5% of spend

'summarize' accounts for $504.13 of the $1,505.46 analysed — a concentration worth watching.

Evidence: $504.13 on 'summarize' (33.5% of total).

Spend breakdown

Total analysed spend $1,505.46 across 100,174 priced records.

By model

ModelSpendShare
balanced-m$997.3366.2%
flagship-xl$504.1333.5%
mini-s$4.000.3%

By route

RouteSpendShare
classify$541.9536.0%
summarize$504.1333.5%
chat$156.5610.4%
search$113.447.5%
rank$70.174.7%
agent$61.674.1%
notify$53.533.6%
extract$4.000.3%

By day

DateSpend
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

Methodology & assumptions

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.

Audit checklist

✓ = 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

Ingestion

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.