Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/aiskillstore-roi-calculator/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 105% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 243% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 163% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 56% | 0% |
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/.
Shortest invocation:
Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reachCommon scenario — compare methods before reporting:
What's the ROI of our campaign using direct revenue, EMV, and LTV-based methods?performance-analyzer.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.> Emit the standard shape from skill-contract.md §Handoff Summary Format.
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.
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.
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.
memory/influencer/roi-calculator/ (or the paid path) only after authorization; request separate authorization for hot-cache promotion.User: "Calculate ROI for our influencer campaign: $25K spend, $72K revenue, 2.1M reach"
Output:
markdown# 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.
Primary: report-generator — turn the ROI numbers into a stakeholder-ready report.
Alternates (same Measure family):
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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 14,112 | 13,623 | -3% | 1 | 1 | 0% | 2,607 | 5,346 | +105% | 0 | 0 | — |
case-02 | fail→fail | 21,721 | 18,549 | -15% | 1 | 1 | 0% | 4,016 | 6,146 | +53% | 0 | 0 | — |
case-03 | fail→pass | 15,001 | 15,279 | +2% | 1 | 1 | 0% | 2,903 | 5,798 | +100% | 0 | 0 | — |
case-04 | fail→fail | 18,835 | 20,635 | +10% | 1 | 1 | 0% | 2,858 | 5,929 | +107% | 0 | 0 | — |
case-05 | fail→fail | 3,968 | 10,591 | +167% | 1 | 1 | 0% | 660 | 4,396 | +566% | 0 | 0 | — |
case-06 | fail→fail | 29,268 | 32,173 | +10% | 1 | 1 | 0% | 6,177 | 8,826 | +43% | 0 | 0 | — |
case-07 | pass→pass | 9,391 | 9,314 | -1% | 1 | 1 | 0% | 1,769 | 4,407 | +149% | 0 | 0 | — |
case-08 | fail→pass | 7,698 | 13,010 | +69% | 1 | 1 | 0% | 1,509 | 5,179 | +243% | 0 | 0 | — |
case-09 | fail→pass | 11,316 | 12,189 | +8% | 1 | 1 | 0% | 1,872 | 4,916 | +163% | 0 | 0 | — |
case-10 | pass→pass | 13,826 | 15,320 | +11% | 1 | 1 | 0% | 2,779 | 5,571 | +100% | 0 | 0 | — |
case-11 | pass→pass | 9,830 | 12,630 | +28% | 1 | 1 | 0% | 1,969 | 5,113 | +160% | 0 | 0 | — |
case-12 | pass→pass | 8,221 | 8,489 | +3% | 1 | 1 | 0% | 1,735 | 4,392 | +153% | 0 | 0 | — |
case-13 | fail→pass | 23,606 | 4,569 | -81% | 1 | 1 | 0% | 2,309 | 3,597 | +56% | 0 | 0 | — |
case-14 | fail→pass | 7,369 | 6,843 | -7% | 1 | 1 | 0% | 1,605 | 4,006 | +150% | 0 | 0 | — |
case-15 | pass→pass | 15,485 | 9,058 | -42% | 1 | 1 | 0% | 2,313 | 4,141 | +79% | 0 | 0 | — |
case-16 | fail→fail | 7,029 | 10,115 | +44% | 1 | 1 | 0% | 1,318 | 4,586 | +248% | 0 | 0 | — |
case-17 | pass→pass | 4,968 | 5,200 | +5% | 1 | 1 | 0% | 785 | 3,590 | +357% | 0 | 0 | — |
case-18 | fail→pass | 6,772 | 2,442 | -64% | 1 | 1 | 0% | 1,042 | 3,162 | +203% | 0 | 0 | — |
case-19 | fail→pass | 13,552 | 8,396 | -38% | 1 | 1 | 0% | 2,070 | 4,057 | +96% | 0 | 0 | — |
case-20 | pass→pass | 11,292 | 5,062 | -55% | 1 | 1 | 0% | 1,745 | 3,579 | +105% | 0 | 0 | — |
case-21 | fail→pass | 8,302 | 2,172 | -74% | 1 | 1 | 0% | 1,240 | 3,111 | +151% | 0 | 0 | — |
case-22 | fail→pass | 6,860 | 1,871 | -73% | 1 | 1 | 0% | 1,129 | 3,001 | +166% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.