roi-estimator
GitHub估算投资、项目或采购的ROI、回本周期及NPV。通过明确假设与敏感性分析,生成可辩护的商业案例数据,辅助决策是否值得投入。
Trigger Scenarios
Install
npx skills add mohitagw15856/pm-claude-skills --skill roi-estimator -g -y
SKILL.md
Frontmatter
{
"name": "roi-estimator",
"description": "Estimate the ROI, payback, and NPV of an investment, project, or purchase. Use when asked to calculate ROI, build a business case, justify a purchase\/initiative, work out payback period, or compare options by return. Produces a computed ROI summary (net benefit, ROI %, payback, simple NPV) with the assumptions made explicit and a sensitivity note, so a business case is defensible."
}
ROI Estimator Skill
Every "should we spend on this?" decision needs a defensible number. This skill estimates the return — ROI %, payback period, and a simple NPV that accounts for the time value of money — from costs and expected benefits, with the assumptions stated and a sensitivity check, so a business case survives the first sceptical question instead of collapsing.
Required Inputs
Ask for these only if they aren't already provided:
- Costs — upfront cost, and any ongoing/recurring cost (per period).
- Benefits — the expected gain per period (revenue uplift, cost saved, time saved × loaded rate). Quantify; if it's an estimate, say so.
- Time horizon — over how many periods to evaluate (e.g. 3 years).
- Discount rate — for NPV (default ~10%); state it.
Output Format
ROI: [investment]
1. The numbers (via the helper):
| Metric | Value |
|---|---|
| Total cost (over horizon) | |
| Total benefit (over horizon) | |
| Net benefit | |
| ROI % | |
| Payback period | |
| Simple NPV (@ discount rate) |
2. The verdict — worth it / marginal / no, in one line, and against what bar (e.g. beats the discount-rate hurdle, payback within tolerance).
3. Assumptions — list them explicitly. The benefit is usually the soft number — flag it, and give a conservative / expected / optimistic range rather than a single point.
4. Sensitivity — the one assumption the conclusion hinges on, and at what value the decision flips.
Programmatic Helper
scripts/roi.py (stdlib only) computes ROI, payback, and NPV:
# in.json: {"upfront_cost":50000,"recurring_cost":2000,"benefit_per_period":18000,"periods":36,"discount_rate_annual":0.1,"period":"month"}
python3 scripts/roi.py in.json
python3 scripts/roi.py in.json --json
Quality Checks
- Costs include recurring/ongoing, not just upfront
- NPV is computed (time value of money), not just raw ROI
- Benefits are given as a range (conservative/expected/optimistic), not a single optimistic point
- Every assumption is listed explicitly
- A sensitivity note names the assumption the verdict hinges on and its flip point
Anti-Patterns
- Do not ignore ongoing costs — a low upfront, high-recurring option can lose to a pricier one-time buy
- Do not present a single benefit number as fact — it's the softest input; give a range and flag it
- Do not skip discounting for multi-year cases — $1 in year 3 isn't $1 today
- Do not bury the assumptions — a business case is only as credible as its stated inputs
- Do not omit payback — a great 5-year ROI with a 4-year payback may still be too slow to fund
Based On
Business-case / capital-budgeting practice — ROI, payback period, NPV, and assumption sensitivity.
Version History
- a38bc30 Current 2026-07-05 11:12


