<!-- last-reviewed: 2026-06-01 · owner: Finance (Financial Analyst) -->
SOP-029 — Utilization & cost report
SOP · owner: Finance (Financial Analyst). Layer: SOP/Runbook (
docs/canon.md). Schema lives indocs/financial-system.md— not restated. Plan-phase note: the ledgers andfinance/budgets.csvdo not exist yet; until the Plan→Build gate a report says “system plan-phase; no ledger data.”
Interface Contract
- Inputs: ledger slice ← from self (ledgers maintained via SOP-028) · trigger:
usage data ready - Inputs: budget caps ← from Finance Director · trigger:
budget proposed - Outputs: daily burn-vs-budget summary → to Personal Assistant · trigger:
finance summary ready - Outputs: model-mix / cost data → to AI Systems Director · trigger:
finance summary ready - Outputs: per-venture / per-agent P&L report → to Finance Director · trigger:
review requested - Outputs: report file → to Archivist · trigger:
artifact approved - Handoff trigger (in): a reporting period closes or a report is requested
- Handoff trigger (out): the report is written, anomalies flagged, and delivered to its consumer
- Definition of Done before handoff:
- [ ] Cross-rate applied to all AI rows; unified “cost of work” computed
- [ ] Spend vs. budget computed per scope (or “no budget cap on file” stated)
- [ ] Anomalies flagged (scope >80% cap · single txn >20% scope cap · model spike) — surfaced, not buried
- [ ] Report written to
reports/finance/YYYY-MM-DD-<scope>.md; daily summary is a tight paragraph for the PA, not a full report - [ ] Finance Director review before any Principal-facing P&L
- [ ] Learnings captured to
docs/knowledge/if any - [ ] Report handed to the Archivist (0 drift)
Proposed new triggers (
usage data ready,budget proposed,finance summary ready) — reported to Operations, not added inline.review requested,artifact approvedalready exist indocs/handoff-triggers.md.
Purpose
Turn the two ledgers into legible reports — daily burn vs. budget for the PA’s briefing, model-mix for AI Systems’ cost-optimization, and per-venture/per-agent P&L for the Finance Director and Principal — with anomalies surfaced, not buried.
When to use
Daily (the burn-vs-budget summary for the PA), at period close (weekly / per-venture), or on request (a Principal decision brief, a model-mix review).
Flow
flowchart LR
A["Define scope:<br/>period / ledger / audience"] --> B["Read ledger slice"]
B --> C["Apply cross-rate →<br/>usd_equiv"]
C --> D["Aggregate:<br/>spend vs budget, P&L, model mix"]
D --> E["Flag anomalies"]
E --> W["Write report"]
W --> X{"Audience?"}
X -->|daily| PA["Tight paragraph → PA"]
X -->|P&L| FD["→ Finance Director review"]
classDef s fill:#1d4ed8,color:#fff,stroke:#1e3a8a
classDef d fill:#0f766e,color:#fff,stroke:#134e4a
class A,B,C,D,E,W,PA,FD s
class X d
Text fallback: define the scope (period / ledger / audience) → read the ledger
slice → apply the cross-rate to get usd_equiv → aggregate spend-vs-budget, P&L,
and model mix → flag anomalies → write the report → route by audience: a tight
paragraph to the PA for the daily briefing, or the full P&L to the Finance Director
for review before it reaches the Principal.
Steps
- Define scope — period, ledger(s), and audience (PA daily / Finance Director review / Principal brief).
- Read the ledgers for the period (
Grep,Glob,Read); pull matching entries. - Apply the cross-rate — convert every AI row to
usd_equivfromfinance/rates.csv; sum with money spend for “cost of work” by venture/agent. - Aggregate — spend vs. budget per scope; per-venture/per-agent totals; model mix by token volume and USD equivalent; cache-hit rate.
- Flag anomalies — scope >80% of cap, single txn >20% of scope cap, model spend spike >20% vs. prior period, entries missing required fields. Surface, don’t bury.
- Write the report to
reports/finance/YYYY-MM-DD-<scope>.md— exec summary, tables, anomalies. The daily summary is a tight paragraph for the PA, not a full report. - Deliver to the consumer (PA for daily; Finance Director for review before any Principal-facing P&L); hand the file to the Archivist.
Roles / approvers
Run by the Financial Analyst (or the Finance Director when unhired). The Finance Director reviews any P&L before it reaches the Principal. The Analyst produces data and reports; it does not approve spend, set budgets, or interpret model architecture.
Guardrails
- Anomalies surfaced, never buried — the report’s job is to make cost legible, including the uncomfortable parts.
- No invented denominators — if no budget cap is on file, say so; do not fabricate a budget to compute burn-vs-budget.
- Model-mix data only, not model recommendations — interpretation is the AI Systems Director’s.
- Never include the Principal’s personal financial information — PA-only.
- Do not restate
docs/financial-system.md— link to it.
See also: SOP-028 (ledger upkeep) · SOP-026 (spend approval) ·
docs/units/finance/charter.md · docs/handoff-triggers.md.