Reading a report¶
Every report — web, PDF, JSON — renders from one assembled model, so the three artifacts never disagree. This page walks the sections in reading order.
Header and executive summary¶
The header states the audit id, generation date, observed window (days of traffic), and call count. The summary leads with one number: estimated monthly savings, with the percentage of current spend it represents. Around it, four cards: current monthly spend (your observed window scaled to 30 days), the optimized projection, raw observed spend, and the findings count.
Every "monthly" figure is the observed window × 30 ÷ observed days. A 3-day sample scales by 10 — the report says so on the card, not in a footnote.
Savings waterfall¶
Findings ranked by monthly dollar impact, largest first, with proportional bars. This is the triage view: the top one or two rows usually carry most of the recoverable spend.
Spend charts¶
Observed spend by model and by UTC day — where the money went, and whether spend is trending or spiky. Chart values are observed dollars, not projections.
Findings in detail¶
Each finding card carries:
| Field | Meaning |
|---|---|
| id | stable finding id (D2-...), deep-linkable |
| severity | high ≥ $500/mo, med ≥ $50/mo, else low (D4: cluster-based; D5: informational) |
| confidence | how the estimate was grounded — verified (hash evidence), estimated, conservative, informational |
| monthly impact | the dollar estimate, computed per the class formula |
| fix | the concrete change we recommend |
| evidence | up to 20 sample calls: timestamp, model, token counts, note — never text |
Pricing provenance¶
The report states the pricing-table version and human-verification date used to price it, and lists any unpriced models excluded from totals — count and ids, so you know exactly what the totals do not include.
Methodology and data handling¶
The final sections print the methodology statement (every haircut and conservatism disclosed) and the data-handling policy — the same text on every report, so the report is self-explaining when forwarded to finance.
The JSON artifact¶
report.json carries the same model: audit metadata, totals, spend
breakdowns, findings with evidence. It is deterministic — the same upload
produces byte-identical JSON (generated_at excluded) — so you can diff two
audits of the same log and expect zero noise.