Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when building a quarterly bookings forecast, ARR projection, pipeline forecast, NRR projection, or commit/best-case/pipe-only board number — especially when the CRO needs to walk the board through funnel math + cohort ARR + per-stage conversion assumptions without the theatre of a single undefended number. Decomposes pipeline into commit, best-case, and pipe-only tiers; projects cohort-level NRR/GRR to surface leaky cohorts before they show up in the consolidated number; scores per-stage fun
.claude/skills/alirezarezvani-commercial-forecaster/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 116% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 133% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 137% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 143% | 0% |
Help Commercial leaders answer three questions at the forecast moment:
The skill recommends three forecast numbers + an explicit assumption block. The CRO presents the number, the board sees the assumptions, the theatre dies.
Do not use for:
finance/financial-analysisc-level-advisor/cfo-advisorc-level-advisor/cro-advisorpricing-strategist (projects revenue at prices already set)deal-deskFill assets/forecast_intake_template.md (≈ 20 min). Captures: opportunity list with stage/amount/close-date/age/last-activity; historical stage-to-stage conversion across last 4Q and last 12Q; per-cohort ARR + per-quarter retention + expansion data; funnel stage names with 12-quarter conversion history.
scripts/bookings_forecaster.py --input intake.json --profile saas --output markdownOutputs three numbers — commit, best-case, pipe-only — each with the conversion rate applied, the data window used (last-4Q vs. last-12Q weighted 70/30), and the time-to-close probability adjustment. Surfaces variance between commit and pipe-only as the pipeline-risk indicator.
The assumption block is non-optional. If you remove it, the forecast becomes theatre.
scripts/cohort_arr_projector.py --input intake.json --output markdownComputes per-cohort NRR + GRR over the projection horizon. Flags any cohort whose NRR is declining vs. the trailing-cohort average — these are the leaky cohorts that the consolidated number will hide for 2-3 quarters before the leak surfaces in the topline.
Output includes the consolidated NRR/GRR trajectory + the cohort heatmap + a leaky-cohort callout.
scripts/funnel_confidence_scorer.py --input intake.json --output markdownPer stage: mean conversion %, standard deviation, coefficient of variation (CoV = StDev / Mean), confidence band (HIGH < 10%, MEDIUM 10-25%, LOW 25-50%, VERY LOW > 50%). Recommends treatment per stage: extend-data-window, treat-as-soft-floor, or commit-quality.
Take the 3-tier bookings number + cohort heatmap + funnel confidence into the QBR / board deck. The assumption block goes on the slide with the number. If the slide has a single number and no assumption block, the slide is theatre.
scripts/bookings_forecaster.py — 3-tier bookings forecast (commit / best-case / pipe-only) with disclosed conversion-rate + data-window + weighting blockscripts/cohort_arr_projector.py — per-cohort NRR/GRR projection over horizon with leaky-cohort calloutscripts/funnel_confidence_scorer.py — per-stage CoV-based confidence bands with treatment recommendationAll scripts: stdlib only. --help and --sample work on all three.
references/saas_forecasting_canon.md — Skok, Tunguz, OpenView, BVP, Pacific Crest/KeyBanc, ProfitWell, Patrick Campbellreferences/cohort_analysis_canon.md — Andrew Chen (a16z), Brian Balfour, Skok, Ramanujam, OpenView, Lenny Rachitsky, Reforgereferences/forecast_anti_patterns.md — McKinsey, Tunguz, OpenView, MIT Sloan, Bain, Forrester, Pacific Crestforecast_anti_patterns.md.cohort_arr_projector.py flags a cohort and you suppress the flag in the deck, the leak owns you next quarter.finance/financial-analysis — backward-looking financial close, GAAP/IFRS reporting, variance vs. budget. commercial-forecaster is forward-looking pipeline math.c-level-advisor/cfo-advisor — strategic multi-year financial planning, fundraise scenarios, runway. commercial-forecaster is one input to the CFO, not the strategy.c-level-advisor/cro-advisor — strategic CRO judgment: "do we hire a VP Sales?", territory design, comp plan, when to add a sales engineer. commercial-forecaster is the math the CRO uses; cro-advisor is the judgment the CRO applies.pricing-strategist — sets the price (model + range). commercial-forecaster projects revenue at those prices. Pricing comes first; forecast comes after.deal-desk — per-deal scoring + discount approval routing. commercial-forecaster aggregates the pipeline that deal-desk operates on day-by-day.Walked one at a time by /cs:grill-commercial or the orchestrator. Recommended answer + canon citation per question. Never bundled.
Recommended: a 70/30 blend (last-4Q weighted 70%, last-12Q weighted 30%). Last-12Q alone hides recent slowdown; last-4Q alone overfits one bad quarter. Canon: Tomasz Tunguz (Theory Ventures) — forecasting studies show single-window conversion estimates miss regime change at ~3-quarter lag.
Recommended: 3x coverage is the SaaS-industry floor; below 3x means your commit is structurally unsupported. Canon: Pacific Crest / KeyBanc SaaS Survey — top-quartile SaaS companies maintain 3.0-4.5x pipeline coverage against committed bookings.
Recommended: never report a consolidated NRR without the per-cohort breakdown. Leaky cohorts hide in averages. Canon: Patrick Campbell (ProfitWell) + David Skok — cohort-driven retention decomposition surfaces leaks 2-3 quarters before consolidated NRR moves.
Recommended: CoV < 10% → commit-grade; 10-25% → moderate; 25-50% → soft floor only; > 50% → do not use this stage for forecasting. Canon: MIT Sloan forecasting research / Hyndman & Athanasopoulos (Forecasting: Principles and Practice) — CoV on the input series predicts forecast accuracy more reliably than mean.
Recommended: stage-age > 2x the median stage-duration → treat as stalled, exclude from commit, keep in pipe-only. Canon: David Skok (For Entrepreneurs) — stalled-opp identification by stage-age is the #1 forecast hygiene practice in top-decile SaaS pipelines.
Recommended: if best-case is < 50% of pipe-only, your stage-conversion assumptions are pessimistic and you're sandbagging; if best-case > 80% of pipe-only, you're hockey-sticking. Canon: McKinsey research on forecast bias + OpenView SaaS benchmarks — most teams operate in one of two failure modes: sandbagging (commit << earnings) or hockey-sticking (commit >> earnings).
Recommended: every forecast number on a board slide names (a) the conversion rate, (b) the data window, (c) the weighting choice, (d) the pipeline-coverage ratio. No assumption block = the slide is theatre. Canon: Bain & Company commercial-forecasting practice + Forrester pipeline-coverage research — undisclosed-assumption forecasts have 2.3x higher variance against actuals than disclosed-assumption forecasts.
Walk depth-first. Lock 1-3 before opening 4-7. After all 7 are answered, invoke bookings_forecaster.py → cohort_arr_projector.py → funnel_confidence_scorer.py in sequence.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 12,293 | 13,617 | +11% | 1 | 1 | 0% | 2,313 | 4,985 | +116% | 0 | 0 | — |
case-11 | fail→pass | 11,720 | 11,115 | -5% | 1 | 1 | 0% | 2,024 | 4,723 | +133% | 0 | 0 | — |
case-02 | fail→fail | 17,912 | 4,051 | -77% | 1 | 1 | 0% | 3,556 | 3,012 | -15% | 0 | 0 | — |
case-03 | fail→pass | 21,870 | 12,559 | -43% | 1 | 1 | 0% | 3,328 | 5,234 | +57% | 0 | 0 | — |
case-04 | pass→pass | 14,808 | 3,570 | -76% | 1 | 1 | 0% | 2,775 | 3,417 | +23% | 0 | 0 | — |
case-05 | pass→pass | 19,706 | 4,687 | -76% | 1 | 1 | 0% | 2,624 | 3,552 | +35% | 0 | 0 | — |
case-12 | fail→pass | 10,639 | 10,870 | +2% | 1 | 1 | 0% | 1,898 | 4,491 | +137% | 0 | 0 | — |
case-06 | pass→pass | 10,705 | 3,910 | -63% | 1 | 1 | 0% | 1,937 | 3,394 | +75% | 0 | 0 | — |
case-07 | fail→pass | 10,708 | 8,088 | -24% | 1 | 1 | 0% | 1,716 | 4,164 | +143% | 0 | 0 | — |
case-08 | pass→pass | 11,408 | 12,711 | +11% | 1 | 1 | 0% | 2,112 | 5,056 | +139% | 0 | 0 | — |
case-09 | pass→pass | 13,014 | 8,644 | -34% | 1 | 1 | 0% | 2,191 | 4,302 | +96% | 0 | 0 | — |
case-10 | fail→pass | 17,423 | 11,199 | -36% | 1 | 1 | 0% | 2,275 | 4,778 | +110% | 0 | 0 | — |
case-13 | pass→pass | 12,001 | 7,420 | -38% | 1 | 1 | 0% | 1,953 | 4,097 | +110% | 0 | 0 | — |
case-14 | fail→pass | 12,446 | 5,022 | -60% | 1 | 1 | 0% | 2,268 | 3,568 | +57% | 0 | 0 | — |
case-15 | fail→pass | 9,187 | 3,622 | -61% | 1 | 1 | 0% | 1,734 | 3,368 | +94% | 0 | 0 | — |
case-16 | pass→pass | 14,176 | 7,848 | -45% | 1 | 1 | 0% | 1,776 | 4,112 | +132% | 0 | 0 | — |
case-17 | pass→pass | 11,868 | 10,473 | -12% | 1 | 1 | 0% | 2,009 | 4,515 | +125% | 0 | 0 | — |
case-18 | pass→pass | 12,267 | 3,329 | -73% | 1 | 1 | 0% | 1,941 | 3,329 | +72% | 0 | 0 | — |
case-19 | fail→pass | 11,200 | 4,693 | -58% | 1 | 1 | 0% | 1,650 | 3,589 | +118% | 0 | 0 | — |
case-20 | pass→pass | 12,419 | 10,455 | -16% | 1 | 1 | 0% | 1,879 | 4,464 | +138% | 0 | 0 | — |
case-21 | fail→pass | 10,453 | 3,467 | -67% | 1 | 1 | 0% | 1,300 | 3,390 | +161% | 0 | 0 | — |
case-22 | fail→pass | 9,529 | 3,295 | -65% | 1 | 1 | 0% | 1,663 | 3,320 | +100% | 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, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.