Savings Report
kaddo savings turns the impact metrics into approximate time/effort/value
estimates, so you can talk about Kaddo’s impact in terms non-technical stakeholders understand.
Evidence and periods
Historical estimates (all recorded project history) and monthly projections are deliberately separate and are not added together. Default assumptions are uncalibrated estimates and cannot justify High confidence.
In JSON, totals.observed_history_estimate and totals.monthly_projection are the authoritative
period-separated totals. The deprecated compatibility field total contains only the historical
estimate; it is never a combined total.
kaddo savings # Markdown to stdout (writes nothing) — scope: allkaddo report savings # aliaskaddo savings --jsonkaddo savings --scope activekaddo savings --output .kaddo/reports/savings-report.mdkaddo savings init # write an editable .kaddo/savings.ymlEvidence-based estimate, not exact ROI. These figures are estimates, not accounting savings. Calibrate the assumptions with real team data.
Assumptions: .kaddo/savings.yml
Estimates = metrics + explicit assumptions. Run kaddo savings init to create an editable
.kaddo/savings.yml (use --force to overwrite):
currency: USDhourly_cost: 40assumptions: context_preparation_minutes_saved_per_work_item: 30 rework_hours_avoided_per_resolved_drift: 2 onboarding_hours_saved_per_new_contributor: 4 review_minutes_saved_per_work_item_with_ownership: 20 clarification_minutes_saved_per_ready_work_item: 25 architecture_discovery_hours_saved_when_graph_good: 3team: expected_new_contributors_per_month: 1 expected_work_items_per_month: 8Without the file, Kaddo uses conservative defaults and says so.
What it estimates
| Driver | Formula | Source |
|---|---|---|
| Context preparation | completed Work Items × minutes saved | impact evidence |
| Review effort | Work Items with ownership × minutes saved | impact evidence |
| Clarification reduction | Work Items with acceptance criteria × minutes saved | impact evidence |
| Onboarding | new contributors × hours × Context-Readiness multiplier (Low .25 → Very High 1.0) | impact evidence |
| Architecture discovery | hours × graph-quality multiplier (empty 0 → good 1.0) | impact evidence |
| Drift prevention | resolved drift warnings × rework_hours_avoided_per_resolved_drift | guard history |
Estimated value = estimated hours saved × hourly_cost, shown as Estimated value (never “ROI”,
“profit” or “real savings”). Defaults to scope: all like kaddo impact; --scope active
measures only the active context.
Guard history and drift prevention
Drift prevention reflects recorded guard history (kaddo guard --record), with
three distinct states:
| State | Evidence | Drift prevention |
|---|---|---|
| No history recorded | Guard history: not available | not available |
| History, 0 resolved warnings | Guard history: available · Resolved drift warnings: 0 | available, 0 h (“no resolved drift warnings recorded yet”) |
| History, resolved warnings | Resolved drift warnings: N | N × rework_hours_avoided_per_resolved_drift |
Guard history available with zero resolved warnings still counts as available evidence, but drift-prevention savings remain 0 until at least one warning is resolved.
What it does NOT estimate
No exact ROI, no individual productivity, no per-person attribution, no team benchmarking, no time
trends, no Jira/Linear/GitHub integration, no LLM, no dashboard. It never modifies code or
knowledge, and writes nothing unless you pass --output.
Confidence
Each report carries a confidence level: Low (insufficient delivery, ownership or graph evidence),
Medium (strong evidence but default assumptions and/or no resolved drift history), High
(strong evidence + calibrated assumptions in .kaddo/savings.yml + recorded resolved drift
warnings). Reaching High requires real drift-resolution evidence from kaddo guard --record.
The deprecated Impact score is not a confidence input. When shown in Markdown, it is explicitly
labelled Legacy Knowledge Impact Score and is informational only.
Calibration opportunities
When assumptions are default or not marked with calibrated_at, the additive
calibration_opportunities field explains what aggregate project evidence could calibrate context
preparation, review effort, clarification reduction and architecture discovery. It never collects
or stores personal data, changes formulas or turns an estimate into a measured saving.
Over MCP
The MCP server exposes it read-only: kaddo://savings-report (saved or in-memory)
and the kaddo_generate_savings_report tool (format · scope · output) which writes only
under .kaddo/reports/.
Using it with stakeholders
Pair it with the Impact Report: impact shows what is true about the knowledge; savings translates that into directional time and value. Always present it as an estimate to calibrate — that honesty is the point.