ROI Calculator
This skill helps you calculate and communicate the return on investment for influencer marketing campaigns using various methodologies appropriate for your goals and available data.
Cross-discipline (paid ads): this is the shared return-math engine for paid ads — paid-measurement-loop, attribution-reconciler, and budget-optimizer delegate ROAS/CPA/payback ratios here rather than recomputing them. Save paid runs under memory/ad/roi-calculator/.
Quick Start
Shortest invocation:
Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reach
Common scenario — compare methods before reporting:
What's the ROI of our campaign using direct revenue, EMV, and LTV-based methods?
Skill Contract
- Reads: campaign spend breakdown, results data (reach, impressions, engagements, clicks, conversions, revenue, new customers), AOV and repeat-rate data if LTV is in scope, any prior performance output from
performance-analyzer.
- Writes: ROI calculation file at
memory/influencer/roi-calculator/YYYY-MM-DD-<topic>.md containing direct ROI/ROAS, EMV, cost-efficiency metrics, attribution-modeled revenue, LTV-based ROI, by-influencer ROI, and a summary report block.
- Promotes: only with separate authorization, durable headline numbers with their attribution window, source, and uncertainty; a calculation request alone does not authorize hot-cache writes.
- Done when:
- At least one ROI methodology is computed with the inputs and formula shown.
- Each headline metric is stated against a declared, source-dated comparison target; no universal benchmark is invented.
- A bottom-line assessment (profitable / break-even / loss) and 1-3 recommendations are written.
- Primary next skill: report-generator
Handoff Summary
Emit the standard shape from skill-contract.md §Handoff Summary Format.
Data Sources
This family is Tier 1 — it works with no live integrations. Ask the user for spend and results data and compute everything from those inputs. Connectors below can pull the numbers automatically when available:
~~social platform analytics — reach, impressions, engagements, video views per platform for EMV and cost-per-metric math.
~~ecommerce / analytics — revenue, conversions, link clicks, and AOV for direct ROI and attribution.
~~CRM — new-customer counts, repeat-purchase rate, and lifetime value for LTV-based ROI.
~~influencer database — per-influencer fees and tier data for by-influencer ROI.
With zero integrations, supply the investment and results tables by hand and the skill still produces every calculation. See CONNECTORS.md for the free/keyless recipe per category.
Instructions
When a user requests ROI calculation, work the steps below. Each step has a fill-in template in references/roi-templates.md — link the step number to its block there.
Gather ROI inputs — campaign details, the investment (total spend) table, and the results-data table. (template)
Calculate direct ROI — Simple ROI = (Revenue − Investment) / Investment × 100; ROAS = Revenue / Investment. State profit and a Profitable/Break-even/Loss assessment. (template)
Calculate Earned Media Value (EMV) — impression-based (Impressions × CPM / 1000) and engagement-based (Engagements × CPE), then average. Flag EMV as directional, not absolute. (template)
Calculate cost-efficiency metrics — CPM, CPR, CPE, CPV, CPC, CPA, and CAC. Compare only against a declared, source-dated target with a compatible market, window, and attribution basis; otherwise report the metric descriptively and mark the comparison pending. (template)
Apply attribution modeling — run first-touch, last-touch, linear, time-decay, and position-based; recommend the model that fits the customer journey. (template)
Calculate customer lifetime value impact — LTV-Based ROI = (New Customers × Avg LTV − Investment) / Investment; project short- vs. long-term and compare customer quality to organic/paid. (template)
Calculate by-influencer ROI — per-influencer ROI/ROAS rank, investment efficiency, and ROI by tier (macro/micro/nano). (template)
Generate the ROI report summary — investment, returns, ROI by methodology, key metrics vs. benchmark, bottom line, and 1-3 recommendations. (template)
Produce the typed C3 ROI scope and, when complete, CVI
Declare goal, profile roi-<goal>, scope: roi, assessment_time: forecast|actual, campaign rollup_id, observation date, and the same catalog version used by ACE/ART. Follow runtime-invocation.md, resolve AARON_SKILLS_ROOT="${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || true)}", verify the scorer and typed catalog, then score all 12 ROI items through python3 "$AARON_SKILLS_ROOT/scripts/rubric-score.py" score <run.json>. If the standalone install lacks them, return score_state: NOT_SCORED / score_confidence: not_scored and do not hand-calculate or persist a typed result. Actual-only R1/R2/I1/I2/I3 items are N/A with reasons in a forecast read; they require evidence in an actual read. This 0–100 rubric result is not financial ROI % from steps 1-8: the financial outputs are evidence consumed by ROI.R items, never the CVI input themselves.
ROI.I3 Fail emits results-unverified; report I1/I2/R1/R2 as low-confidence and do not make attributable-return claims. Preserve the scorer result rather than recomputing it in prose.
For CVI, combine complete typed ACE results from fit-scorer, complete ART results from content-reviewer, and exactly one ROI result through python3 "$AARON_SKILLS_ROOT/scripts/rubric-score.py" c3-rollup <results.json>:
CVI = ( ACE_avg × ART_avg × ROI )^(1/3)
Use the typed c3-rollup.schema.json components form for real campaigns: positive budget weights for every ACE result, equal-weight ART results, and one ROI result. All components must share goal, rollup_id, observation date, assessment time, and catalog version. Keep the three aggregate scope scores beside CVI. If ACE/ART is missing, incomplete, or Unknown, emit ROI and mark CVI pending. If any component is BLOCK and therefore has no final scope score, do not emit CVI; report the blocking component instead of capping or averaging it.
Persist only with permission — save under memory/influencer/roi-calculator/ (or the paid path) only after authorization; request separate authorization for hot-cache promotion.
Example
User: "Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reach"
Output:
# ROI Calculation Summary
## Investment & Returns
| Item | Value |
|------|-------|
| Total Investment | $25,000 |
| Direct Revenue | $72,000 |
| Total Reach | 2,100,000 |
## ROI Results
### Direct ROI
- **Profit**: $47,000
- **ROI**: 188%
- **ROAS**: 2.88:1
For every $1 spent, you generated $2.88 in revenue.
### Earned Media Value
- **EMV** (directional scenario at a declared $8 CPM): $16,800
- **EMV Multiple**: 0.67x
### Cost Efficiency
- **CPM**: $11.90
- **CPA**: Unknown (conversion count was not supplied)
## Assessment: Profitable on the supplied direct-revenue basis
Direct revenue exceeds the supplied investment, but no source-dated peer target or incrementality evidence was provided. Do not infer benchmark outperformance or authorize a scale decision from this read alone; obtain verified conversions, attribution evidence, and the campaign owner's precommitted decision rule first.
The source-dated benchmark evidence template lives in references/roi-templates.md#benchmark-evidence-template.
Reference Materials
Next Best Skill
Primary: report-generator — turn the ROI numbers into a stakeholder-ready report.
Alternates (same Measure family):
- performance-analyzer — go back for deeper performance breakdowns if the ROI math exposed gaps.
- budget-optimizer — feed by-influencer and by-tier ROI into the next budget allocation.
Termination note: keep a visited-set of skills invoked this session. If the primary next skill was already run, stop and report the chain complete rather than re-invoking it. Stop after at most 3 hops in a single chain.
1---
2name: roi-calculator
3slug: aaron-roi-calculator
4displayName: "ROI Calculator · ROI 计算"
5summary: "活动投入产出核算:成本归集、收益口径与 CVI/ROI 汇总"
6description: 'Use when the user asks to "calculate influencer ROI", "prove campaign value", or "what was our ROAS"; produces direct ROI/ROAS, earned media value, attribution-modeled revenue, LTV-based ROI, and a stakeholder-ready summary. Not for building the full slide/written report — use report-generator.'
7version: "17.0.0"
8license: Apache-2.0
9compatibility: "Claude Code and compatible agent-skill hosts"
10homepage: "https://github.com/aaron-he-zhu/aaron-marketing-skills"
11when_to_use: "Use when measuring or projecting influencer campaign ROI, justifying or defending budgets, comparing ROI across campaigns or channels, evaluating individual influencer or tier value, or preparing executive-level ROI numbers. Activate when the user supplies spend and results data and wants ROI, ROAS, EMV, CPA/CAC, attribution, or LTV impact computed."
12argument-hint: "<campaign name or spend> [revenue] [results data]"
13metadata: {"author": "aaron-he-zhu", "version": "17.0.0", "discipline": "influencer", "phase": "measure", "family": "influencer-marketing", "hermes": {"tags": ["marketing", "influencer", "measure"], "category": "influencer"}, "openclaw": {"emoji": "📣", "homepage": "https://github.com/aaron-he-zhu/aaron-marketing-skills"}}
14---
15
16# ROI Calculator
17
18This skill helps you calculate and communicate the return on investment for influencer marketing campaigns using various methodologies appropriate for your goals and available data.
19
20> **Cross-discipline (paid ads):** this is the shared **return-math engine** for paid ads — [paid-measurement-loop](../../../ad/scale/paid-measurement-loop/SKILL.md), [attribution-reconciler](../../../ad/scale/attribution-reconciler/SKILL.md), and budget-optimizer delegate ROAS/CPA/payback ratios here rather than recomputing them. Save paid runs under `memory/ad/roi-calculator/`.
21
22## Quick Start
23
24Shortest invocation:
25
26```
27Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reach
28```
29
30Common scenario — compare methods before reporting:
31
32```
33What's the ROI of our campaign using direct revenue, EMV, and LTV-based methods?
34```
35
36## Skill Contract
37
38- **Reads**: campaign spend breakdown, results data (reach, impressions, engagements, clicks, conversions, revenue, new customers), AOV and repeat-rate data if LTV is in scope, any prior performance output from `performance-analyzer`.
39- **Writes**: ROI calculation file at `memory/influencer/roi-calculator/YYYY-MM-DD-<topic>.md` containing direct ROI/ROAS, EMV, cost-efficiency metrics, attribution-modeled revenue, LTV-based ROI, by-influencer ROI, and a summary report block.
40- **Promotes**: only with separate authorization, durable headline numbers with their attribution window, source, and uncertainty; a calculation request alone does not authorize hot-cache writes.
41- **Done when**:
42 1. At least one ROI methodology is computed with the inputs and formula shown.
43 2. Each headline metric is stated against a declared, source-dated comparison target; no universal benchmark is invented.
44 3. A bottom-line assessment (profitable / break-even / loss) and 1-3 recommendations are written.
45- **Primary next skill**: [report-generator](../report-generator/SKILL.md)
46
47### Handoff Summary
48
49> Emit the standard shape from [skill-contract.md §Handoff Summary Format](../../../references/skill-contract.md).
50
51## Data Sources
52
53This family is Tier 1 — it works with no live integrations. Ask the user for spend and results data and compute everything from those inputs. Connectors below can pull the numbers automatically when available:
54
55- `~~social platform analytics` — reach, impressions, engagements, video views per platform for EMV and cost-per-metric math.
56- `~~ecommerce / analytics` — revenue, conversions, link clicks, and AOV for direct ROI and attribution.
57- `~~CRM` — new-customer counts, repeat-purchase rate, and lifetime value for LTV-based ROI.
58- `~~influencer database` — per-influencer fees and tier data for by-influencer ROI.
59
60With zero integrations, supply the investment and results tables by hand and the skill still produces every calculation. See [CONNECTORS.md](../../../CONNECTORS.md) for the free/keyless recipe per category.
61
62## Instructions
63
64When a user requests ROI calculation, work the steps below. Each step has a fill-in template in [references/roi-templates.md](references/roi-templates.md) — link the step number to its block there.
65
661. **Gather ROI inputs** — campaign details, the investment (total spend) table, and the results-data table. ([template](references/roi-templates.md#step-1--roi-calculation-inputs))
67
682. **Calculate direct ROI** — Simple ROI = (Revenue − Investment) / Investment × 100; ROAS = Revenue / Investment. State profit and a Profitable/Break-even/Loss assessment. ([template](references/roi-templates.md#step-2--direct-roi-calculation))
69
703. **Calculate Earned Media Value (EMV)** — impression-based (Impressions × CPM / 1000) and engagement-based (Engagements × CPE), then average. Flag EMV as directional, not absolute. ([template](references/roi-templates.md#step-3--earned-media-value-emv))
71
724. **Calculate cost-efficiency metrics** — CPM, CPR, CPE, CPV, CPC, CPA, and CAC. Compare only against a declared, source-dated target with a compatible market, window, and attribution basis; otherwise report the metric descriptively and mark the comparison pending. ([template](references/roi-templates.md#step-4--cost-efficiency-analysis))
73
745. **Apply attribution modeling** — run first-touch, last-touch, linear, time-decay, and position-based; recommend the model that fits the customer journey. ([template](references/roi-templates.md#step-5--attribution-analysis))
75
766. **Calculate customer lifetime value impact** — LTV-Based ROI = (New Customers × Avg LTV − Investment) / Investment; project short- vs. long-term and compare customer quality to organic/paid. ([template](references/roi-templates.md#step-6--lifetime-value-analysis))
77
787. **Calculate by-influencer ROI** — per-influencer ROI/ROAS rank, investment efficiency, and ROI by tier (macro/micro/nano). ([template](references/roi-templates.md#step-7--influencer-level-roi))
79
808. **Generate the ROI report summary** — investment, returns, ROI by methodology, key metrics vs. benchmark, bottom line, and 1-3 recommendations. ([template](references/roi-templates.md#step-8--roi-summary-report))
81
829. **Produce the typed C3 ROI scope and, when complete, CVI**
83
84 Declare goal, profile `roi-<goal>`, `scope: roi`, `assessment_time: forecast|actual`, campaign `rollup_id`, observation date, and the same catalog version used by ACE/ART. Follow [`runtime-invocation.md`](../../../references/runtime-invocation.md), resolve `AARON_SKILLS_ROOT="${CLAUDE_PLUGIN_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || true)}"`, verify the scorer and typed catalog, then score all 12 ROI items through `python3 "$AARON_SKILLS_ROOT/scripts/rubric-score.py" score <run.json>`. If the standalone install lacks them, return `score_state: NOT_SCORED` / `score_confidence: not_scored` and do not hand-calculate or persist a typed result. Actual-only R1/R2/I1/I2/I3 items are N/A with reasons in a forecast read; they require evidence in an actual read. **This 0–100 rubric result is not financial ROI %** from steps 1-8: the financial outputs are evidence consumed by ROI.R items, never the CVI input themselves.
85
86 ROI.I3 Fail emits `results-unverified`; report I1/I2/R1/R2 as low-confidence and do not make attributable-return claims. Preserve the scorer result rather than recomputing it in prose.
87
88 For CVI, combine complete typed ACE results from [fit-scorer](../../discover/fit-scorer/SKILL.md), complete ART results from [content-reviewer](../../activate/content-reviewer/SKILL.md), and exactly one ROI result through `python3 "$AARON_SKILLS_ROOT/scripts/rubric-score.py" c3-rollup <results.json>`:
89
90 ```
91 CVI = ( ACE_avg × ART_avg × ROI )^(1/3)
92 ```
93
94 Use the typed [`c3-rollup.schema.json`](../../../references/c3-rollup.schema.json) `components` form for real campaigns: positive budget weights for every ACE result, equal-weight ART results, and one ROI result. All components must share goal, `rollup_id`, observation date, assessment time, and catalog version. Keep the three aggregate scope scores beside CVI. If ACE/ART is missing, incomplete, or Unknown, emit ROI and mark CVI pending. If any component is `BLOCK` and therefore has no final scope score, **do not emit CVI**; report the blocking component instead of capping or averaging it.
95
9610. **Persist only with permission** — save under `memory/influencer/roi-calculator/` (or the paid path) only after authorization; request separate authorization for hot-cache promotion.
97
98## Example
99
100**User**: "Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reach"
101
102**Output**:
103
104```markdown
105# ROI Calculation Summary
106
107## Investment & Returns
108
109| Item | Value |
110|------|-------|
111| Total Investment | $25,000 |
112| Direct Revenue | $72,000 |
113| Total Reach | 2,100,000 |
114
115## ROI Results
116
117### Direct ROI
118- **Profit**: $47,000
119- **ROI**: 188%
120- **ROAS**: 2.88:1
121
122For every $1 spent, you generated $2.88 in revenue.
123
124### Earned Media Value
125- **EMV** (directional scenario at a declared $8 CPM): $16,800
126- **EMV Multiple**: 0.67x
127
128### Cost Efficiency
129- **CPM**: $11.90
130- **CPA**: Unknown (conversion count was not supplied)
131
132## Assessment: Profitable on the supplied direct-revenue basis
133
134Direct revenue exceeds the supplied investment, but no source-dated peer target or incrementality evidence was provided. Do not infer benchmark outperformance or authorize a scale decision from this read alone; obtain verified conversions, attribution evidence, and the campaign owner's precommitted decision rule first.
135```
136
137The source-dated benchmark evidence template lives in [references/roi-templates.md#benchmark-evidence-template](references/roi-templates.md#benchmark-evidence-template).
138
139## Reference Materials
140
141- [references/roi-templates.md](references/roi-templates.md) — fill-in templates for every Instructions step, the worked example, and benchmark evidence inputs.
142- [measurement-protocol.md](../../../references/measurement-protocol.md) — read ROI/CVI deltas against a control over the readback window; do not over-claim attribution.
143- [skill-contract.md](../../../references/skill-contract.md) — shared contract and Handoff Summary format.
144- [state-model.md](../../../references/state-model.md) — memory tiers and save-path conventions.
145- [CONNECTORS.md](../../../CONNECTORS.md) — free/keyless data recipe per connector category.
146- C³ scoring: [c3-benchmark.md](../../../references/c3-benchmark.md), [c3/roi-campaign-benchmark.md](../../../references/c3/roi-campaign-benchmark.md), and [c3-rollup.schema.json](../../../references/c3-rollup.schema.json) — typed ROI and multi-component CVI contracts.
147- [performance-analyzer](../performance-analyzer/SKILL.md) — supplies the results data this skill consumes.
148- [report-generator](../report-generator/SKILL.md) — wraps these numbers into a full report.
149- [budget-optimizer](../../plan/budget-optimizer/SKILL.md) — uses ROI output to reallocate spend.
150- [campaign-planner](../../plan/campaign-planner/SKILL.md) — sets the ROI targets these results are checked against.
151
152## Next Best Skill
153
154**Primary**: [report-generator](../report-generator/SKILL.md) — turn the ROI numbers into a stakeholder-ready report.
155
156**Alternates** (same Measure family):
157
158- [performance-analyzer](../performance-analyzer/SKILL.md) — go back for deeper performance breakdowns if the ROI math exposed gaps.
159- [budget-optimizer](../../plan/budget-optimizer/SKILL.md) — feed by-influencer and by-tier ROI into the next budget allocation.
160
161Termination note: keep a visited-set of skills invoked this session. If the primary next skill was already run, stop and report the chain complete rather than re-invoking it. Stop after at most 3 hops in a single chain.