business-case-builder
Installation
SKILL.md
Business Case Builder
When to use
Use whenever an initiative needs a funding decision and the "case" so far is a single optimistic revenue line with no downside scenario, no discount rate, and no stated conditions for success. Also use to stress-test someone else's business case before approving it.
What it does
Builds a driver-based (not top-line-only) economic model: revenue, cost structure, and investment broken into their actual drivers, run through the bundled NPV/IRR calculator, and stress-tested with a real sensitivity grid across revenue and discount-rate assumptions — producing not just a number, but the conditions under which that number holds.
Method
- Decompose revenue into real drivers, not a single top-line growth assumption: volume × price, or customers × ARPU × retention — whichever actually governs this business. A one-line revenue forecast is not a model, it's a guess with decimals.
- Decompose cost into COGS (variable, scales with revenue) and opex (largely fixed in the near term) by year, and be explicit about which costs actually scale and which don't — this is where most hand-built cases quietly overstate margin improvement.
- State the initial investment fully: capex, working capital, and one-time launch costs, not just the visible capex line.
- Run the bundled calculator (
scripts/npv_case.py) with a JSON config of discount rate, initial investment, and per-year revenue/COGS%/opex. It returns annual cash flows, NPV, IRR (via bisection, no external dependencies), and payback period. - Generate the sensitivity grid (built into the same script): NPV across a range of revenue swings and discount-rate swings. This is the step that turns a single confident number into an honest range.
- Read the grid for the breakeven condition: find the combination of revenue shortfall and discount rate at which NPV turns negative — that is the real risk boundary of the case, and it should be stated explicitly, not buried in an appendix.
- State the conditions required for the case to hold in plain language: "this case requires revenue to reach at least X% of plan by year 2, and holds at discount rates up to Y%" — tied directly to the sensitivity grid, not a vague "assumptions may vary" disclaimer.