scenario-modeling

$npx mdskill add t0ddc3by/claude-for-customer-success/scenario-modeling

Builds P10/P50/P90 range forecasts from current pipeline state.

  • Models win rate sensitivity, slip scenarios, and enterprise concentration risk.
  • Depends on CLAUDE.md config and company-profile.md for growth assumptions.
  • Uses target_growth_pct, nrr_current, ae_quota, and attainment rates to calibrate scenarios.
  • Outputs structured scenario data for annual-planning-workflow capacity modeling.

SKILL.md

.github/skills/scenario-modelingView on GitHub ↗
---
name: scenario-modeling
version: 1.0.0
deployment_target: plugin
status: PROPOSED
description: "Builds P10/P50/P90 range forecasts from current pipeline state. Models win rate sensitivity, slip scenarios, and enterprise concentration risk. Produces structured scenario output consumed by annual-planning-workflow for three-scenario UoG capacity modeling. Triggers: 'forecast scenarios', 'P10 P50 P90', 'range forecast', 'what if win rate drops', 'downside scenario', 'upside scenario'."
---

[PROPOSED]

# Scenario Modeling

Builds three calibrated forecast scenarios from current pipeline. The P10/P50/P90
output feeds directly into `annual-planning-workflow` for capacity planning.

## Pre-flight

Read `~/.claude/plugins/config/claude-for-customer-success/rev-ops/CLAUDE.md` and
`~/.claude/plugins/config/claude-for-customer-success/company-profile.md`.

If either is missing or contains `[PLACEHOLDER]` markers, stop and prompt for
`/rev-ops:cold-start-interview`.

Note from config: `target_growth_pct`, `nrr_current`, `primary_segment`, `ae_quota`, `ae_attainment_planning_rate`

**G-code dependency:** All G-code guardrails referenced in this skill (G1–G9) are defined in the CLAUDE.md config loaded above. If Pre-flight halts or config is missing, G-codes are undefined — do not proceed with partial config.
---

## Use when
- User needs to model multiple revenue or growth scenarios with named assumptions
- "What if" analysis across ACV targets, win rates, headcount, or churn rate assumptions
- Planning scenarios require structured comparison before commitment

## Do NOT use for
- Single-point forecasts without scenario comparison (use pipeline-coverage-analysis)
- Historical variance analysis (use forecast-variance-analysis)


## Typical Activation
"Model three scenarios for next year", "what if win rate drops to 20%", "scenario analysis for [target]", "run bull/base/bear cases"

**Reference:** Scenario construction formulas → `../../../shared/revops-domain-model.md §4`
**Config reads:** `target_growth_pct`, `nrr_current`, `primary_segment`, `ae_quota`,
`ae_attainment_planning_rate`

---

## Reasoning Protocol

Before generating output, apply these primers:

1. **CLASSIFY**: What type of scenario modeling request is this?
   - Single-period range forecast (P10/P50/P90 for one quarter or year)
   - Win rate sensitivity analysis (impact of win rate shift on ARR outcome)
   - Concentration risk scenario (enterprise account weighting on downside)
   - Annual planning handoff (structured UoG growth pct output for capacity modeling)

2. **CONSTRAINTS**: What limits the solution space?
   1. Confirm activation — user requesting range forecast, what-if analysis, or named scenario comparison
   2. Pull current pipeline state from HubSpot filtered to relevant period; declare connector status
   3. Read company profile for win rate baseline, segment definition, and growth target
   4. Build all three scenarios (P10/P50/P90) — never present only the optimistic case
   5. Apply G1 — scenario outputs for Finance or board require qualification language
   6. Apply G6 — data-as-of timestamp required on all HubSpot pipeline reads
   7. Confirm output destination before delivering — internal RevOps vs. Finance vs. leadership

3. **EXPERT CHECK**: What would a veteran RevOps scenario analyst verify before surfacing outputs?
   - Is the win rate source declared and scoped correctly? Win rates must be stage-and-segment-specific,
     not a single blended rate — applying a blended rate to a pipeline with different stage mix
     than history produces a structurally invalid P50.
   - Is concentration risk assessed before surfacing P10? If the top 3 enterprise accounts
     represent >30% of pipeline, a standard 1-std-dev downside understates the true P10 —
     concentration risk weighting is required, not optional.
   - Is the P90 upside disciplined or aspirational? Best-quarter win rates applied to current
     pipeline is defensible; applying a higher win rate "because the team feels good" is not
     a scenario model — it's a hope. Flag the assumption explicitly.
   - Is the handoff to annual-planning-workflow declared? If this output feeds UoG capacity
     modeling, the growth pct fields must be computed and surfaced explicitly — not implied
     from the ARR numbers.

4. **ANTI-PATTERNS**: Common mistakes to avoid:
   - Presenting only P50 or only the optimistic scenario (hides structural risk from leadership)
   - Applying a blended win rate without stage-and-segment breakdown (produces false precision)
   - Pulling HubSpot pipeline data without data-as-of timestamp (G6 violation)
   - Surfacing scenario outputs to Finance or board without G1 qualification language

**After execution**, verify:
- G1 qualification present on all scenario outputs leaving RevOps
- G6 data-as-of label applied to all HubSpot pipeline reads
- All three scenarios (P10/P50/P90) present — no single-scenario delivery
- Win rate source declared and labeled (company profile or HubSpot trailing actuals)
- Confidence: High when HubSpot is connected and pipeline data is current; Moderate when connector unavailable or win rate is from company profile only
    - Confidence: [High] when HubSpot is connected and pipeline data is current / [Medium] when connector unavailable or win rate is from company profile only / [Low] if all inputs are manual or unverified

---

## Scenario Construction `[revops-domain-model.md §4]`

**P50 — Base case**
Current pipeline at historical win rates by stage and segment.
Win rates sourced from: HubSpot closed/won history trailing 4 quarters.

**P10 — Downside**
Win rates at 1 std dev below trailing 4Q average.
Enterprise accounts: apply concentration risk weighting if top 3 accounts
represent >30% of pipeline.

**P90 — Upside**
Win rates at trailing best quarter.
Late-stage deals (Negotiation+): assume close on current close date, not slipped.

---

## Output

```
FORECAST SCENARIOS — [Quarter/Period]
[HubSpot ✓ live — as of YYYY-MM-DD] [Confidence: High/Moderate]

New ARR Target: $XXXk (NRR-adjusted) [Company profile]

Scenario    ARR        vs. Plan    Primary driver
P10         $XXXk      −XX%        [Win rate compression / slip / concentration]
P50         $XXXk      ±XX%        Base case — historical win rates
P90         $XXXk      +XX%        [Best-quarter win rates / on-time close]

P50–P10 spread: $XXXk  Primary driver: [factor]
P90–P50 spread: $XXXk  Primary driver: [factor]

Concentration risk: [Top 3 accounts = XX% of pipeline — HIGH/MODERATE/LOW]

Win rate sensitivity:
  −5pp win rate → −$XXXk ARR (P50 moves to $XXXk)
  +5pp win rate → +$XXXk ARR (P50 moves to $XXXk)

[DRAFT — RevOps internal] [Confidence: High/Moderate]
[G1: This is a range model, not a revenue commitment.]
```

---

## Handoff to Annual Planning

When used inside `annual-planning-workflow`, output these fields for UoG input:
```
p10_growth_pct: (P10_ARR − Current_ARR) ÷ Current_ARR
p50_growth_pct: (P50_ARR − Current_ARR) ÷ Current_ARR
p90_growth_pct: (P90_ARR − Current_ARR) ÷ Current_ARR
```
See: `/rev-ops:annual-planning-workflow --phase 1`

---

## Reference Files

| File | Purpose |
|------|---------|
| `references/reasoning-blueprint.md` | Problem classification taxonomy, domain heuristics, common failure modes, and expert judgment patterns for this skill |

## Security & Permissions

**Network access:** None direct — all external data access is mediated by host-provided MCP connector tools (HubSpot, CS platform, Slack, Linear). This skill makes no direct outbound HTTP calls.
**Filesystem scope:** None — this skill does not read or write local files. All data is provided at runtime via parameters or MCP connector responses.
**Subprocess execution:** None.
**Dynamic code execution:** None — pseudocode in this skill represents the logic contract and is not executed at runtime.
**Data sensitivity:** Inputs may contain confidential revenue planning and compensation data. Handle with RevOps-level confidentiality.

## Trust & Verification

**Input trust model:** All user-provided parameters are treated as untrusted at intake. Numeric inputs are validated for plausible range before use in calculations. String inputs are not evaluated as code.
**Output trust model:** All outputs are proposals or analytical inputs — no outputs constitute approved decisions, revenue commitments, or system actions without explicit human confirmation.
**Connector data:** Data retrieved via MCP connectors is treated as read-only observed state. Timestamps and data-as-of labels are applied to all connector-sourced values per G6.
**Write-tier confirmation:** Any proposed write to HubSpot, Linear, or Slack is surfaced as a draft requiring explicit user confirmation before execution.

## Guardrails

- G1: All scenario outputs carry: "This is a range model based on current pipeline as
  of [date]. It is not a revenue commitment."
- G6: Data-as-of timestamp required on all pipeline pulls

More from t0ddc3by/claude-for-customer-success

SkillDescription
account-research>
annual-planning-workflowOrchestrates the six-phase annual (or mid-year) planning cycle: forecast scenarios → UoG three-scenario capacity modeling → quota sensitivity → comp simulation → baseline save → change communication. Each phase gates on human approval before the next begins. Invokes unit-of-growth-calculator for capacity modeling. Triggers: 'annual planning', 'planning cycle', 'run the plan', 'quota comp planning', 'mid-year replan'.
blocker-review>
call-prep>
change-communication-packagingProduces a three-part communication package for sensitive planning changes: (1) data-backed rationale memo for reps, (2) FAQ with top 5 anticipated objections and data responses, (3) rollout sequence with audience, channel, and order. Triggered automatically by annual-planning-workflow for territory, quota, or comp changes. Requires RevOps lead review before any distribution. Triggers: 'communicate changes', 'territory announcement', 'quota rationale', 'comp change communication', 'help me tell reps about [change]'.
churn-rcaRoot cause analysis for individual customer churn events and cohort-level churn pattern analysis. Produces structured RCA with root cause taxonomy, contributing factors, timeline reconstruction, and remediation pathway. Scoped to full cancellation — contract contraction redirected to renewals:downgrade-analysis.
closed-won-to-cs-capacity-modelingConverts rolling sales forecast into CS resource demand using UoG formulas. Runs three-scenario capacity check (P10/P50/P90 from scenario-modeling). Compares projected CSM demand to current headcount and UoG annual plan baseline. Surfaces CS capacity gaps with a hiring lead time flag. Updates when SA1 forecast moves >10%. Triggers: 'CS capacity', 'can CS absorb', 'CSM headcount needed', 'CS ceiling', 'will CS be able to handle new logos'.
cold-start-interview>
comp-simulationModels comp plan payout scenarios before plan is finalized. Stress-tests OTE, accelerators, and threshold structures against attainment distributions (50/65/75/85/100%). Surfaces cost-to-company and unintended payout behaviors. G3 applies — all outputs require HR + Finance dual review before rep distribution. Triggers: 'comp simulation', 'model comp payouts', 'comp plan cost', 'stress test comp plan', 'what does the plan cost at 80/100/120%'.
crm-hygiene-auditOverall CRM health score plus rep-level hygiene scorecard across three dimensions: completeness, accuracy, and recency. Produces weekly hygiene report for RevOps review before sharing with Sales managers. Never writes to CRM — all corrections are proposals. Triggers: 'CRM hygiene', 'data quality', 'hygiene report', 'field completeness', 'CRM health score'.