ROI, NPV, IRR, payback period, and total cost of ownership analysis for investment decisions. Use when building financial justification for projects, evaluating SaaS investments, or comparing alternatives.
View on GitHubyonatangross/skillforge-claude-plugin
ork-product
plugins/ork-product/skills/business-case-analysis/SKILL.md
February 4, 2026
Select agents to install to:
npx add-skill https://github.com/yonatangross/skillforge-claude-plugin/blob/main/plugins/ork-product/skills/business-case-analysis/SKILL.md -a claude-code --skill business-case-analysisInstallation paths:
.claude/skills/business-case-analysis/# Business Case Analysis
Financial frameworks for justifying investments, evaluating projects, and comparing alternatives.
## Key Financial Metrics
### Return on Investment (ROI)
Simple measure of profitability relative to cost.
```
ROI = (Net Benefits - Total Costs) / Total Costs × 100%
```
**Example:**
```
Project cost: $500,000
Annual benefits: $200,000 over 5 years
Total benefits: $1,000,000
ROI = ($1,000,000 - $500,000) / $500,000 × 100% = 100%
```
**Limitation:** Does not account for time value of money.
### Net Present Value (NPV)
Gold standard for project evaluation—discounts future cash flows to present value.
```
NPV = Σ (Cash Flow_t / (1 + r)^t) - Initial Investment
```
Where:
- `t` = time period
- `r` = discount rate (cost of capital)
**Example:**
```python
def calculate_npv(
initial_investment: float,
cash_flows: list[float],
discount_rate: float = 0.10 # 10% typical
) -> float:
npv = -initial_investment
for t, cf in enumerate(cash_flows, start=1):
npv += cf / ((1 + discount_rate) ** t)
return npv
# Example: $500K investment, $200K/year for 5 years
npv = calculate_npv(500_000, [200_000] * 5, 0.10)
# NPV = $258,157 (positive = good investment)
```
**Decision Rule:**
- NPV > 0: Accept (creates value)
- NPV < 0: Reject (destroys value)
- NPV = 0: Indifferent
### Internal Rate of Return (IRR)
The discount rate at which NPV equals zero.
```python
def calculate_irr(cash_flows: list[float]) -> float:
"""
cash_flows[0] is initial investment (negative)
Returns the IRR as a decimal
"""
from scipy.optimize import brentq
def npv_at_rate(r):
return sum(cf / (1 + r) ** t for t, cf in enumerate(cash_flows))
return brentq(npv_at_rate, -0.99, 10.0)
# Example: -$500K initial, then $200K/year for 5 years
irr = calculate_irr([-500_000, 200_000, 200_000, 200_000, 200_000, 200_000])
# IRR ≈ 28.6%
```
**Decision Rule:**
- IRR > hurdle rate (cost of capital): Accept
- IRR < hurdle rate: