churn-rca

$npx mdskill add t0ddc3by/claude-for-customer-success/churn-rca

Analyze and export root cause analysis for full contract cancellations

  • Identifies individual customer churn events and systemic patterns in a cohort of accounts.
  • Deploys machine learning models to predict churn risk and identify contributing factors.
  • Generates structured RCA reports with timelines, root causes, and remediation pathways.
  • Exports analysis results for stakeholder review or further use in portfolio management.

SKILL.md

.github/skills/churn-rcaView on GitHub ↗
---
name: churn-rca
description: "Root 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."
version: "1.0.0"
author: [email protected]
tags: [renewals, churn, rca, root-cause, customer-success]
deployment_target: plugin
---

# /renewals:churn-rca [VALIDATED]

## Overview

`renewals:churn-rca` performs structured Root Cause Analysis on confirmed customer churn events (full contract cancellations). It supports three operations:

- **`analyze`** — individual account RCA; produces account-specific root cause findings, timeline reconstruction, OCV delivery analysis, win-back assessment, and remediation pathway
- **`cohort`** — multi-account pattern analysis; surfaces systemic drivers and generates portfolio-level escalation when churn rate meets or exceeds 25%
- **`export`** — retrieves and formats an existing RCA or cohort record for external use

**Use when:**
- A CSM or RevOps analyst needs to perform root cause analysis on a confirmed full contract cancellation
- Analyzing a batch of churned accounts to detect systemic drivers and portfolio-level patterns
- Exporting a completed RCA for stakeholder reporting or portfolio review

**Do NOT use for:**
- Contract downgrades, partial reductions, or contractions → use `renewals:downgrade-analysis`
- Active renewal negotiation or deal management
- Health score calculation or predictive churn scoring
- Real-time portfolio monitoring
- Win-back campaign execution (this skill recommends; it does not execute)

**Scope boundary — contraction redirect:**
If the scenario involves a customer reducing (not cancelling) their contract, respond with:

```
Scope redirect: This request describes a contract contraction, not full churn.
Please use renewals:downgrade-analysis for downgrade analysis.
```

Contraction signals: "reduce," "downgrade," "fewer seats," "smaller tier," "partial cancellation."

## Typical Activation
> `/renewals:churn-rca analyze "Acme Corp"` — full RCA on a single churned account with root cause taxonomy, timeline reconstruction, and win-back assessment
> `/renewals:churn-rca cohort` — multi-account pattern analysis to detect systemic churn drivers; triggers portfolio-level escalation if cohort churn rate ≥ 25%
> `/renewals:churn-rca export "Acme Corp"` — retrieve and format an existing RCA record for stakeholder reporting or portfolio review

---

## Use When
- A CSM or RevOps analyst needs to perform root cause analysis on a confirmed full contract cancellation
- Analyzing a batch of churned accounts to detect systemic drivers and portfolio-level patterns
- Exporting a completed RCA for stakeholder reporting or portfolio review

## Do NOT Use For
- Contract downgrades, partial reductions, or contractions → use `renewals:downgrade-analysis`
- Active renewal negotiation or deal management
- Health score calculation or predictive churn scoring
- Real-time portfolio monitoring
- Win-back campaign execution (this skill recommends; it does not execute)

## Typical Activation
> `/renewals:churn-rca analyze "Acme Corp"` — full RCA on a single churned account with root cause taxonomy, timeline reconstruction, and win-back assessment
> `/renewals:churn-rca cohort` — multi-account pattern analysis to detect systemic churn drivers; triggers portfolio-level escalation if cohort churn rate ≥ 25%
> `/renewals:churn-rca export "Acme Corp"` — retrieve and format an existing RCA record for stakeholder reporting or portfolio review

---

## Pre-flight

- Confirm account context (company name, CSM, churn date, ARR)
- Identify the specific analysis goal (individual RCA, cohort pattern, or export)
- Note any prior analysis or existing documentation to reference
- Check `~/.claude/plugins/config/claude-for-customer-success/company-profile.md` for company segment and escalation context

**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.
---

## Operations

### Operation: `analyze` — Individual Churn RCA

Performs root cause analysis on a single churned account. Produces a structured RCA document written to `context/rca-[safe_account]-[YYYY-MM-DD].md`.

**Inputs:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | Yes | `"analyze"` |
| `account_name` | string | Yes | Account name |
| `csm_name` | string | Yes | CSM who owned the account |
| `churn_reason` | string | Yes | Customer-stated or CSM-assessed churn reason |
| `churn_date` | string | No | ISO date of confirmed churn (YYYY-MM-DD); defaults to today |
| `account_stage` | string | No | Lifecycle stage at time of churn |
| `contract_value` | string | No | ARR or contract value for impact sizing |
| `tenure_months` | integer | No | Months as customer |
| `ocv_snapshot` | string | No | OCV outcome data — advisory signal for value delivery analysis |
| `early_warning_signals` | list | No | List of pre-churn signals observed |
| `notes` | string | No | CSM freeform notes |

**Scope redirect — check first:**
Before any analysis, scan `churn_reason` and `notes` for contraction signals ("reduce," "downgrade," "fewer seats," "smaller tier"). If found, return the scope redirect message and stop.

**Auto-generated fields (immutable after creation):**
- `rca_id`: `RCA-[ACCT]-[YYYYMMDD]-[SEQ]`
  - `ACCT`: first 4 alphabetic characters of `account_name`, uppercased, non-alpha stripped
  - `SEQ`: 3-digit sequence starting at `001`; scan `context/rca-[safe_account]-*.md` for the same date and increment from the highest found
- `created_at`: ISO datetime of operation
- `created_by`: session user

**safe_account derivation (for file path only):**
1. Lowercase `account_name`
2. Replace all non-alphanumeric characters with `-`
3. Collapse consecutive hyphens to a single hyphen
4. Trim to 30 characters maximum

**Output file:** `context/rca-[safe_account]-[YYYY-MM-DD].md`

**Output structure:**

```markdown
---
rca_id: [RCA-ID]
account_name: [account_name]
churn_date: [churn_date]
csm_name: [csm_name]
created_at: [ISO datetime]
created_by: [session user]
---

## Churn RCA: [Account Name]
### RCA ID: [RCA-ID]
### Churn Date: [date]
### Contract Value: [if provided; omit section if not]

## Root Cause Classification
### Primary Root Cause: [taxonomy category from the 7-category taxonomy]
### Contributing Factors: [list of secondary factors from available signals]
### Value Chain Position: [where in the value delivery chain the failure occurred]

## Timeline Reconstruction
[Key events and signals leading to churn, synthesized from: early_warning_signals,
account_stage, tenure_months, churn_date, and churn_reason. State assumptions when
fields are absent.]

## OCV Delivery Analysis
[If ocv_snapshot provided: analysis of outcome delivery status and gaps correlated
with churn timing. If not provided: omit this section entirely.]

## Remediation Pathway
### Preventable: [Yes / Possibly / No]
### Primary Prevention Lever: [what should have been done differently]
### Systemic Recommendation: [pattern recommendation for future accounts at similar stage/profile]

## Win-Back Assessment
### Win-Back Viability: [High / Medium / Low / Not viable]
### Recommended Timing: [when to re-engage]
### Win-Back Approach: [summary of recommended approach]
```

---

### Operation: `cohort` — Cohort Churn Pattern Analysis

Analyzes a batch of churn events for pattern identification and systemic root cause. Writes to `context/rca-cohort-[YYYYMMDD]-[SEQ].md`.

**Inputs:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | Yes | `"cohort"` |
| `cohort_name` | string | Yes | Descriptive name (e.g., "Q1-2026 Enterprise Churn") |
| `csm_name` | string | Yes | CSM or analyst running the cohort analysis |
| `rca_ids` | list | No | List of existing RCA IDs to include (prior individual RCAs) |
| `churn_events` | list | No | Inline churn event objects: `{account_name, churn_reason, churn_date, contract_value, account_stage}` — for events without prior individual RCAs |
| `analysis_period` | string | No | ISO date range `YYYY-MM-DD/YYYY-MM-DD` |
| `portfolio_size` | integer | No | Total accounts in the defined portfolio. Must be a positive integer > 0 |
| `notes` | string | No | Additional context |

**Validation — enforce before any analysis or file write:**

portfolio_size = 0 or negative:
```
Validation error: portfolio_size must be a positive integer greater than zero. Received: [value]. Provide the total number of accounts in the defined portfolio.
```

**Churn rate calculation (when portfolio_size provided):**
```
churn_rate = count(churn_events + rca_ids) / portfolio_size × 100
systemic_threshold_met = churn_rate >= 25.0
```

**Auto-generated fields (immutable after creation):**
- `cohort_id`: `RCA-COHORT-[YYYYMMDD]-[SEQ]`
  - `SEQ`: 3-digit sequence; scan `context/rca-cohort-*.md` for the same date and increment from highest found; default `001`
- `created_at`: ISO datetime
- `created_by`: session user

**Output file:** `context/rca-cohort-[YYYYMMDD]-[SEQ].md`

**Output structure:**

```markdown
---
cohort_id: [cohort_id]
cohort_name: [cohort_name]
portfolio_size: [N or "not provided"]
churn_rate: [X.X% or "not calculated — portfolio_size not provided"]
analysis_period: [period or "not specified"]
created_at: [ISO datetime]
created_by: [session user]
---

## Cohort Churn Analysis: [cohort_name]
### Cohort ID: [cohort_id]
### Analysis Period: [period]
### Churn Rate: [N/portfolio_size]% [⚠ Above threshold — systemic pattern] if >= 25%

## Pattern Analysis
### Primary Churn Drivers (ranked by frequency)
| Driver Category | Count | % of Cohort |
|----------------|-------|-------------|
| [category]     | [N]   | [%]         |

### Common Contributing Factors
[Cross-account themes identified from churn_reason signals]

### Lifecycle Stage Concentration
[Which stages have highest churn concentration; any stage-specific patterns]

## Systemic Recommendations
[Portfolio-level interventions based on pattern analysis. Produced for all cohorts;
escalation intensity increases when churn_rate >= 25%.]
[If churn_rate >= 25%: prefix section with ⚠ and address to CS Leadership and Product.]
```

---

### Operation: `export`

Retrieves and formats an existing RCA or cohort record for external use. Does not write to the filesystem — content returned in response only.

**Inputs:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | Yes | `"export"` |
| `rca_id` | string | No | Single RCA ID to export |
| `cohort_id` | string | No | Cohort ID to export |
| `format` | string | No | `"markdown"` (default) or `"summary"` |

**Validation:**
- At least one of `rca_id` or `cohort_id` must be provided:
  ```
  Export error: At least one of rca_id or cohort_id is required.
  ```

**Not-found errors:**
```
Export error: RCA record not found for rca_id [rca_id]. Verify the ID is correct and confirm the rca operation completed successfully.
```
```
Export error: RCA record not found for cohort_id [cohort_id]. Verify the ID is correct and confirm the cohort operation completed successfully.
```

**Locate source file:** Scan `context/rca-*` for a file whose frontmatter `rca_id` or `cohort_id` matches the provided value. The identifier is a match predicate against file frontmatter — never interpolated into a file path.

**Format behavior:**
- `markdown` (default): return the full document as written
- `summary`: return only the Root Cause Classification, Remediation Pathway, and Win-Back Assessment sections (or the Pattern Analysis and Systemic Recommendations for cohorts)

---

## Output Format

**Individual RCA file naming:**
```
context/rca-[safe_account]-[YYYY-MM-DD].md
```
Examples:
- `context/rca-acme-corp-2026-05-17.md`
- `context/rca-meridian-health-2026-05-01.md`

**Cohort RCA file naming:**
```
context/rca-cohort-[YYYYMMDD]-[SEQ].md
```
Examples:
- `context/rca-cohort-20260517-001.md`
- `context/rca-cohort-20260517-002.md`

**Auto-ID examples:**
- Individual: `RCA-ACME-20260517-001`, `RCA-MERI-20260501-001`
- Cohort: `RCA-COHORT-20260517-001`

**Date in filename:** Date of the operation (creation date). Never updated.

**YAML frontmatter fields — individual RCA:**
```yaml
rca_id: [RCA-ID]
account_name: [verbatim from input]
churn_date: [YYYY-MM-DD]
csm_name: [verbatim from input]
created_at: [ISO datetime]
created_by: [session user email]
```

**YAML frontmatter fields — cohort RCA:**
```yaml
cohort_id: [RCA-COHORT-ID]
cohort_name: [verbatim from input]
portfolio_size: [integer or "not provided"]
churn_rate: [decimal or "not calculated"]
analysis_period: [range or "not specified"]
created_at: [ISO datetime]
created_by: [session user email]
```

**Export output:** Returned in response only. No file written.

---

## Reasoning Protocol

Before generating output, apply these primers:

1. **CLASSIFY**: What type of churn analysis request is this?
   - **Individual RCA** (`analyze`): Single churned account — root cause taxonomy, timeline reconstruction, win-back assessment.
   - **Cohort Pattern Analysis** (`cohort`): Multi-account batch — systemic driver identification, frequency ranking, portfolio-level escalation if churn rate ≥ 25%.
   - **Export** (`export`): Retrieval and formatting of an existing RCA or cohort record for stakeholder distribution.

2. **CONSTRAINTS**: What limits the solution space?
   - G4: Escalation guidance must reference the configured escalation matrix — no generic "escalate to leadership."
   - G5: RCA files containing ARR, health data, and stakeholder details are internal-only — confirm recipient authorization before distribution.
   - Never assign root cause without named evidence; never treat stated close reason as root cause without corroboration.

3. **EXPERT CHECK**: What would a veteran CS analyst verify first?
   - Is the root cause assignment based on the earliest signal in the timeline, or the most recent/dramatic one?
   - Does the cohort frequency table rank by count descending? Are systemic recommendations scaled to the churn rate severity?

4. **ANTI-PATTERNS**: Common mistakes to avoid:
   - Accepting the stated churn reason as root cause without independent corroboration — stated reasons and actual root causes diverge frequently.
   - Assigning root cause to the last signal before churn rather than the first — recency bias is the most common analytical error.
   - Including force majeure losses in process-improvement conclusions — uncontrollable losses should not drive response process changes.
   - Generating portfolio escalation from a cohort without validating the churn_rate calculation against portfolio_size.
   - Running export without validating the ID against frontmatter — never interpolate IDs into file paths.

**After execution**, verify:
- Does the root cause assignment cite specific, named evidence?
- Is the cohort churn rate calculation correct (count / portfolio_size × 100)?
- Are escalation references specific (owner, channel, SLA) — not generic?
- Confidence: [High] when data is complete and multi-signal / [Medium] when partial data available / [Low] if single-signal or inferred

---

Execute in this order for each operation:

**For `analyze`:**
1. Check `churn_reason` and `notes` for contraction signals — if found, return scope redirect and stop
2. Derive `safe_account` from `account_name` (lowercase → replace non-alphanumeric with `-` → collapse hyphens → trim to 30 chars)
3. Derive `churn_date`: use provided value or today's date in ISO format
4. Classify primary root cause from `churn_reason` using the 7-category taxonomy in `reference/churn-rca-taxonomy.md` — load on demand
5. Identify contributing factors from secondary signals in `churn_reason`, `early_warning_signals`, `notes`, and `ocv_snapshot`
6. Reconstruct timeline from `early_warning_signals`, `account_stage`, `tenure_months`, and `churn_date`; state assumptions for absent fields
7. Render OCV Delivery Analysis only if `ocv_snapshot` is provided; omit the section entirely if not
8. Assess win-back viability per root cause category using `reference/remediation-playbook.md` — load on demand
9. Derive `rca_id`: scan `context/rca-[safe_account]-*.md` for same date; set SEQ to highest found + 1, defaulting to `001`
10. Write the RCA file to `context/rca-[safe_account]-[churn_date].md`

**For `cohort`:**
1. Validate `portfolio_size` > 0 if provided; return validation error and stop if zero or negative
2. Collect all churn events: combine inline `churn_events` entries with any `rca_ids` references
3. Calculate `churn_rate` if `portfolio_size` provided: `count(events) / portfolio_size × 100`; flag systemic pattern if `churn_rate >= 25.0`
4. Load `reference/churn-rca-taxonomy.md` — classify each event's primary root cause
5. Build frequency table: rank drivers by count descending; alpha-sort ties
6. Identify cross-account themes from signal language in `churn_reason` fields
7. Identify lifecycle stage concentration from `account_stage` fields
8. Load `reference/cohort-analysis-framework.md` for pattern interpretation guidance — load on demand
9. Generate systemic recommendations scaled to churn rate severity; use `reference/remediation-playbook.md` — load on demand
10. Derive `cohort_id`: scan `context/rca-cohort-*.md` for same date; set SEQ to highest found + 1, defaulting to `001`
11. Write cohort file to `context/rca-cohort-[YYYYMMDD]-[SEQ].md`

**For `export`:**
1. Validate that at least one of `rca_id` or `cohort_id` is provided; return error if neither
2. Scan `context/rca-*` for a file whose frontmatter `rca_id` or `cohort_id` matches the provided value
3. If not found, return the not-found error message; stop
4. Apply format: `markdown` = return full document; `summary` = return key sections only
5. Return content in response; do not write any file

---

## Security & Permissions

- **Network access:** none
- **Filesystem read scope:** `context/rca-*` only
- **Filesystem write scope:** `context/rca-*` only (individual and cohort RCA files)
- **Subprocess execution:** none
- **Dynamic code execution:** none
- **External API calls:** none
- **Export operation:** no filesystem write — content returned in response only
- **OCV data:** read from `ocv_snapshot` input parameter only; skill never reads OCV data from the filesystem

---

## Trust & Verification

**Input sanitization:**
- `account_name` sanitized to `safe_account` (lowercase, alphanumeric + hyphens only, max 30 chars) for all filesystem path construction
- `safe_account` is derived once and used for both the filename and the `rca_id` ACCT segment
- Display names (unsanitized `account_name`) used only in document body output — never in path construction
- `churn_reason`, `notes`, `ocv_snapshot`, and all free-text fields stored verbatim in document body — never executed, interpolated into skill logic, or used in path construction

**Validation — portfolio_size:**
- Must be a positive integer greater than zero
- If `portfolio_size = 0` or negative:
  ```
  Validation error: portfolio_size must be a positive integer greater than zero. Received: [value]. Provide the total number of accounts in the defined portfolio.
  ```

**Immutable fields — locked at creation; no update operation exists:**
- Individual: `rca_id`, `created_at`, `created_by`, `account_name`, `churn_date`
- Cohort: `cohort_id`, `created_at`, `created_by`, `cohort_name`, `churn_rate`
- If revised analysis is needed, initiate a new operation — a new ID is generated

**Root cause taxonomy validation:**
- Primary root cause must be one of the 7 taxonomy categories defined in `reference/churn-rca-taxonomy.md`
- If `churn_reason` is ambiguous, apply the classification heuristics in the taxonomy file; document the rationale

**Export ID resolution:**
- File scan against `context/rca-*` for matching frontmatter value — the ID is a match predicate, never a path component
- If not found: return the not-found error message verbatim

**Display-only fields:**
- `ocv_snapshot` content and all free-text inputs are display-only — they inform the analysis narrative but are never used in logic, path construction, or calculation

---

## Reference Files

The following reference files are loaded on-demand. They are not front-loaded.

| File | Purpose |
|------|---------|
| `reference/reasoning-blueprint.md` | Reasoning framework for this skill — D1 cognitive stance, constraints, and expert orientation |
| `reference/churn-rca-taxonomy.md` | 7-category root cause taxonomy with definitions, signal vocabulary, classification heuristics, value chain position mapping, and win-back viability assessment rules per category |
| `reference/cohort-analysis-framework.md` | Cohort construction methods, pattern identification algorithm, churn rate threshold logic, lifecycle stage concentration analysis, systemic recommendation generation, and portfolio_size validation |
| `reference/remediation-playbook.md` | Prevention lever per root cause category, systemic recommendation templates, win-back timing guidance and approach templates per root cause, and escalation guidance |

Load `reference/churn-rca-taxonomy.md` when classifying root causes during `analyze` or `cohort`.
Load `reference/cohort-analysis-framework.md` when executing `cohort` pattern analysis.
Load `reference/remediation-playbook.md` when generating remediation recommendations or win-back assessments.

---

## Examples

### Example 1 — Individual Analyze

**Input:**
```json
{
  "operation": "analyze",
  "account_name": "Meridian Health",
  "csm_name": "Sarah Chen",
  "churn_reason": "The product never integrated with their EHR system. IT gave up after 4 months of failed attempts. Exec sponsor left and no champion replaced her.",
  "churn_date": "2026-05-01",
  "account_stage": "adoption",
  "contract_value": "$48,000 ARR",
  "tenure_months": 8,
  "ocv_snapshot": "3 of 5 target outcomes partially met; integration milestone never completed; last active session 2026-03-15",
  "early_warning_signals": ["no login activity for 45 days", "IT escalation ticket opened 2026-02-01", "champion Sarah Torres promoted to new division 2026-03-01"]
}
```

**Behavior:**
- No contraction signals in `churn_reason` — proceed
- `safe_account`: `meridian-health`
- `rca_id`: `RCA-MERI-20260501-001`
- Output file: `context/rca-meridian-health-2026-05-01.md`
- Primary root cause: `product_fit_failure` (integration failure as dominant signal)
- Contributing factors: `champion_departure` (exec sponsor left, no replacement)
- OCV Delivery Analysis rendered: integration milestone never completed; 3/5 outcomes stalled
- Timeline: IT escalation at month 6, champion departure at month 7, activity gap last 45 days
- Win-Back Viability: Medium — contingent on integration resolution and new champion identification
- Preventable: Possibly — integration validation gate at 30 days would have surfaced the blocker earlier

---

### Example 2 — Cohort Analysis (Systemic Threshold Met)

**Input:**
```json
{
  "operation": "cohort",
  "cohort_name": "Q1-2026 Enterprise Churn",
  "csm_name": "Tom Liu",
  "churn_events": [
    {"account_name": "Acme Corp", "churn_reason": "ROI not demonstrated to CFO", "churn_date": "2026-01-15", "account_stage": "renewal"},
    {"account_name": "Beta Solutions", "churn_reason": "Value unclear after renewal conversation", "churn_date": "2026-02-01", "account_stage": "renewal"},
    {"account_name": "Gamma Industries", "churn_reason": "Could not show business impact to board", "churn_date": "2026-03-10", "account_stage": "maturity"}
  ],
  "portfolio_size": 10,
  "analysis_period": "2026-01-01/2026-03-31"
}
```

**Behavior:**
- `portfolio_size = 10` — positive integer, validation passes
- 3 events collected from `churn_events`
- `churn_rate = 3 / 10 × 100 = 30.0%`
- `systemic_threshold_met = true` (30.0% >= 25.0%)
- `cohort_id`: `RCA-COHORT-20260517-001`
- Output file: `context/rca-cohort-20260517-001.md`
- Primary driver: `value_not_realized` (all 3 accounts: ROI articulation failure at renewal stage)
- Stage concentration: 2/3 at renewal stage — value story not built before renewal conversation
- Systemic recommendations prefixed with ⚠, addressed to CS Leadership and Product
- Recommendation: implement 60-day pre-renewal value review as standard; build ROI case study library

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]'.
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'.
cross-system-reconciliationTraces conflicting numbers from different sources (CRM vs. Finance Sheets vs. CS platform) to their root cause. Applies data authority hierarchy: HubSpot > Finance Sheets > CS platform > Slack/Linear. Produces a reconciliation memo with source attribution and recommended resolution. Never silently resolves conflicts. Triggers: 'which number is right', 'reconcile', 'conflicting numbers', 'CRM vs Sheets', 'our ARR numbers don't match', 'why is the pipeline number different'.