Operating Note: Failure-Priced ROI Ledger Week
Operating note (3 Sep 2026): The weekly measurement template for failure-priced ROI. Complements When cheap models get expensive (the why) with a ledger you can run every Monday. Part of the cost/ROI series hub; builds on Note 002 task classes and Note 003 spend policies.
Thesis
Token dashboards answer the wrong question. They show $/1M tokens while agents fail in ways that never hit the chart: silent JSON errors, retry thrash, and human cleanup on your calendar.
Failure-priced ROI means you price retries, incidents, and human minutes into the same row as model spend — then compare workflows on accepted outcomes per euro, not cheapest model sticker price. The analysis post walks through the trap; this note is the operating ledger you reuse every week.
One table. One loop. One promote and one demote decision — that is the whole governance practice.
The ledger schema
Copy this table into a spreadsheet, Notion, or your Company OS runbook. Fill one row per workflow or task class you care about (not every API call).
| Workflow / task class | Model / route | Spend (€) | Failure / retry cost* | Human minutes | Accepted outcomes |
|---|---|---|---|---|---|
| Content draft (class B) | cheap-mid / openrouter |
(example) 2.40 | (example) 1 retry, ~0.30 | (example) 15 | (example) 3 posts merged |
| PR implementer (class B) | coder-tier / cursor |
(example) 4.10 | (example) 2 silent JSON fails | (example) 45 | (example) 1 green PR |
| Publisher (class D) | frontier / gated |
(example) 1.20 | (example) 0 | (example) 10 approval | (example) 2 publishes |
* Failure / retry cost — extra model spend from retries or a qualitative tag (silent fail, rate-limit thrash) plus estimated human recovery minutes. Use placeholders until you have real numbers; keep the column anyway so failures stay visible.
Accepted outcomes — units that passed your quality bar: merged PR, published post, closed ticket, approved schema. Same definition every week or the ledger is not comparable.
Optional rollup column
After the week closes, add one derived field per row:
ROI_proxy = accepted_outcomes / (spend + failure_cost_eur + human_minutes × minute_rate)
Use your own minute_rate (fully loaded hourly ÷ 60). The absolute number matters less than week-over-week direction on the same workflows.
One-week practice loop
Run this loop once. Repeat every Monday.
- Pick 2–4 workflows — the ones where you already debate model cost (content, coding agents, data QA, publisher). Name the task class A–D for each.
- Snapshot routes — record which model or router label each workflow used at week start (OpenRouter slug, Cursor model, static allowlist — vendor-agnostic).
- Log daily for seven days — spend from gateway dashboard; failures from CI, agent logs, or your gut (“spent 40 min fixing bad JSON”). Do not wait for perfect telemetry.
- Count accepted outcomes — only units that cleared your bar. Retries that never shipped do not count.
- Fill the ledger table — one row per workflow; placeholders marked
(example)until you have real figures. - Compute ROI_proxy once — same formula as the failure-priced ROI essay; compare rows, not vendors.
- Decide one promote and one demote — promote the route with best outcomes per euro under quality; demote the lane where cheap tokens bought expensive human time. Log the decision next to the table.
If spend policies per role are already wired (Note 003), attribute rows by agent role as well as workflow — publisher rows should look expensive on purpose.
Proof
This template mirrors how I already reason about cost in public writing — no new invented case-study numbers:
- Failure-priced math — accepted outcomes ÷ (model + infra + human) from When cheap models get expensive
- Task classes A–D — same vocabulary as Note 002 so ledger rows map to routing decisions
- Weekly promote/demote — pairs with automatic model watch evals; the ledger is the economic scoreboard those evals feed
- ~€35/mo infra band tracked separately from model spend in the content org case study — keep hosting out of the model column unless you allocate a share
If you finish the week and every row has zero in the failure column, you are probably not logging silent fails yet — fix observability before optimizing routes.
Next
- Series hub: Agent cost & model selection — start here
- Theory: When cheap models get expensive
- Roles and caps: Note 003 — spend policies per agent role
Questions on failure-priced ROI or weekly cost governance — contact me with which workflows you are measuring.