Audit whether the organisation's AI spend actually paid — measured against baselines, not vendor math or vibes. Use when a CFO asks what the AI tools returne...
Coding
Roi Incremental Tracking
Try itTrack your AI agent's ROI incrementally — log time saved and direct cash as deliveries happen, then close the cycle monthly with an HTML dashboard.
What it does
Track your AI agent's ROI incrementally — log time saved and direct cash as deliveries happen, then close the cycle monthly with an HTML dashboard.
The skill document
Incremental ROI Tracking
Use this skill when the user asks to measure, log, or close out the agent's ROI / value cycle.
Purpose
Measure the value the agent generates incrementally, as deliveries happen, instead of reconstructing it from memory at the end of the month. One lightweight ledger row per relevant delivery; a monthly closeout turns the ledger into numbers and a dashboard.
Files
All tracking data lives in /reports/roi/:
| File | Role |
|---|---|
config.json | User parameters (cost, hourly value, currency, cycle day) |
ledger-current.csv | Incremental ledger for the current cycle |
monthly-summary.csv | One row per closed cycle |
render_roi_report.py | Dashboard generator (copied from this skill's scripts/ folder) |
index.html | Static HTML dashboard, regenerated at closeout |
First-run setup
If /reports/roi/config.json does not exist, run setup before anything else:
- Ask the user for:
- Monthly cost of running the agent (subscription + API + infra), a single number.
- Currency symbol or code (e.g.
USD,EUR,R$). - Base hourly value of the user's time — the conservative rate used to price minutes saved.
- Optional alternative hourly scenarios (e.g. 50, 100, 180) kept for comparison only.
- Cycle start day (1–28). The cycle runs from that day to the day before it in the next month. Default: 1.
- Save the answers to
config.json:
{
"monthly_cost": 100.0,
"currency": "USD",
"base_hourly_value": 25.0,
"alternative_hourly_scenarios": [50, 100],
"cycle_start_day": 1
}
- Create
ledger-current.csvcontaining only the header row (see Ledger fields). - Copy
render_roi_report.pyfrom this skill'sscripts/directory into/reports/roi/.
Rules
- Do not run heavy continuous collection for ROI. This skill costs almost nothing to maintain.
- Add one ledger row only when a relevant delivery happens (task automated, report produced, problem caught, deal supported).
- Use conservative minutes saved. When in doubt, estimate low.
- Count direct cash only when confirmed with a closed value (invoice paid, discount obtained, refund recovered). Never count pipeline or expected revenue.
- Keep risk avoided as narrative unless the user explicitly authorizes a monetary assumption.
- If an estimate is uncertain, set
include_in_closeout=nountil the user reviews it.
Ledger fields
date,cycle_start,cycle_end,title,category,minutes_saved,cash_direct,confidence,evidence,include_in_closeout,notes
date— ISO date of the delivery (YYYY-MM-DD).cycle_start/cycle_end— ISO dates of the cycle this row belongs to (derived fromcycle_start_day).title— short name of the delivery.category— free tag (e.g.automation,report,support,sales).minutes_saved— conservative integer estimate; 0 if none.cash_direct— confirmed cash in the configured currency; 0 if none.confidence—high|medium|low.evidence— where proof lives (message link, file path, ticket id).include_in_closeout—yes|no.notes— anything else.
Monthly closeout
At the end of each cycle (when the current date reaches cycle_start_day again, or when the user asks):
- Append one summary row for the cycle to
monthly-summary.csvwith the header:
cycle_start,cycle_end,entries,minutes_saved,hours_value,cash_direct,total_value,monthly_cost,roi_cash_only,roi_cash_plus_hours,notes
where hours_value = minutes_saved / 60 * base_hourly_value, total_value = cash_direct + hours_value, and ROI values are value / monthly_cost (only rows with include_in_closeout=yes count).
- Regenerate the dashboard:
python3 /reports/roi/render_roi_report.py
-
Start a fresh
ledger-current.csvfor the new cycle (archive the old one asledger-.csvif the user wants history). -
Report to the user:
- Cash-only ROI (confirmed cash vs monthly cost);
- Cash + base-hour ROI (cash plus priced minutes vs monthly cost);
- Comparison against the previous month;
- Dashboard location (
index.html); - Major risks avoided and persistent assets created, narrated separately from money.
Once multiple closed months exist, the dashboard's multi-month chart becomes the trend view — use it in the report.
Related skills
Use when the user asks to "calculate influencer ROI", "prove campaign value", or "what was our ROAS"; produces direct ROI/ROAS, earned media value, attributi...
Daily AI agent optimization tips, tricks and self-improvement strategies. Learn cost-saving, speed, memory and automation best practices from the AI agent community. Use when: you want daily tips to optimize your AI agent, reduce costs, improve performance, or learn automation workflows. Don't use when: you need immediate config changes - use openclaw-agent-optimize for deep audits.
Unlimited organized memory for your AI agent. Store, search, and organize projects, contacts, decisions, and knowledge across categories. Never lose context...
Track every token and dollar your OpenClaw agent spends, set budget walls that actually refuse calls, and replay runs on free local models. Local-first: all data stays on this machine. Use when the user asks about cost, spend, tokens, budgets, usage reports, or what the agent has been doing.
Track, categorize, search, and analyze insights, patterns, and observations discovered during OpenClaw sessions. Use when the user wants to record, retrieve,...