churn-analysis
GitHub生成结构化流失分析报告,区分可避免与不可避免流失。涵盖指标计算、细分拆解、预警信号及高影响干预建议,支持基于专业大脑的知识检索与沉淀。
Trigger Scenarios
Install
npx skills add mohitagw15856/pm-claude-skills --skill churn-analysis -g -y
SKILL.md
Frontmatter
{
"name": "churn-analysis",
"description": "Produce a structured churn analysis that separates avoidable from unavoidable churn. Use when investigating why customers are leaving, identifying at-risk segments, calculating net revenue retention, or building a retention intervention plan. Produces a churn report with rate calculations, categorised reasons by avoidability, segment breakdown, timing analysis, early warning signals, and prioritised interventions ranked by estimated impact."
}
Churn Analysis Skill
Produce a structured churn analysis that goes beyond the headline rate — identifying why customers leave, which segments are most at risk, and what interventions will have the highest impact on retention.
Reads from / Writes to the Brain
If a professional-brain (brain/) exists, ground in it instead of re-asking for what you already know:
- Read first:
context.md(metric definitions — what "churn" means here),knowledge/, and related segmententities/. Runpython3 ../professional-brain/scripts/brain_query.py ./brain "churn"and carry each fact's provenance tag through. - 📥 Propose to the Brain: after producing, propose recording the headline retention finding to
knowledge/([data]), any retention decision todecisions/, and at-risk drivers ashypotheses/. Show them, get a yes, then write with../professional-brain/scripts/brain_write.py … --commit(append-only, dry-run by default).
Required Inputs
Ask for these if not already provided:
- Time period being analysed (e.g. Q1, last 12 months)
- Total customers at start of period and customers churned
- ARR or revenue lost to churn
- Churn reasons data — exit survey results, CSM notes, support data, or sales loss reasons
- Customer segments — by tier, industry, cohort, or product line
- Current retention rate if known
- Any recent changes — pricing, product, support model — that may have affected churn
Churn Categories
Always classify churn before analysing it:
| Category | Definition |
|---|---|
| Voluntary — avoidable | Customer left due to a problem we could have addressed (product gaps, poor onboarding, relationship failures) |
| Voluntary — unavoidable | Customer left for reasons outside our control (budget cuts, acquisition, company shutdown) |
| Involuntary | Payment failure, contract non-renewal by mistake, admin error |
The interventions for each category are different. Conflating them leads to wrong conclusions.
Output Format
Churn Analysis: [Product / Segment / Company]
Period: [Start date] — [End date] Prepared by: [Name] | Date: [Date]
Headline Numbers
| Metric | Value |
|---|---|
| Customers at start of period | [N] |
| Customers churned | [N] |
| Customer churn rate | [X]% |
| ARR at start of period | £/$/€[X] |
| ARR lost to churn | £/$/€[X] |
| Revenue churn rate (gross) | [X]% |
| ARR from expansions (same period) | £/$/€[X] |
| Net revenue retention (NRR) | [X]% |
Benchmark context:
- Customer churn rate: [X]% vs. industry benchmark [Y]% — [above / below / in line]
- NRR: [X]% — [What this means: above 100% = expansion offsets churn; below 100% = shrinking base]
Churn Breakdown by Category
| Category | Customers | % of churn | ARR lost |
|---|---|---|---|
| Voluntary — avoidable | [N] | [X]% | £/$/€[X] |
| Voluntary — unavoidable | [N] | [X]% | £/$/€[X] |
| Involuntary | [N] | [X]% | £/$/€[X] |
| Total | [N] | 100% | £/$/€[X] |
Avoidable churn as % of total churn: [X]% — this is the number we can actually influence.
Churn Reasons — Avoidable Churn Only
Rank by frequency. Include ARR weight where data allows.
| Reason | Count | % of avoidable churn | ARR lost | Representative quote |
|---|---|---|---|---|
| [Reason 1 — e.g. "Product missing key feature"] | [N] | [X]% | £/$/€[X] | "[Quote]" |
| [Reason 2] | [N] | [X]% | £/$/€[X] | "[Quote]" |
| [Reason 3] | [N] | [X]% | £/$/€[X] | "[Quote]" |
| [Reason 4] | [N] | [X]% | £/$/€[X] | "[Quote]" |
| Other | [N] | [X]% | £/$/€[X] | — |
Theme synthesis: [2–3 sentences grouping the top reasons into 2–3 themes. E.g. "The top three reasons cluster around two themes: product gaps in [area] (affecting X% of avoidable churn) and onboarding failures where customers never achieved value (Y%)."]
Churn by Segment
Identify which segments over- or under-index for churn.
By Tier
| Tier | Churn rate | vs. Overall | Notes |
|---|---|---|---|
| Enterprise | [X]% | +/-[X]pp | |
| Mid-Market | [X]% | +/-[X]pp | |
| SMB | [X]% | +/-[X]pp |
By Cohort (Acquisition Year)
| Cohort | Churn rate | Notes |
|---|---|---|
| [Year 1] | [X]% | |
| [Year 2] | [X]% | |
| [Year 3] | [X]% |
By Industry / Use Case (if data available)
| Segment | Churn rate | Notes |
|---|---|---|
| [Segment 1] | [X]% | |
| [Segment 2] | [X]% |
Key pattern: [Which segment has the highest churn rate and what likely explains it]
Timing Analysis
- Average contract length before churn: [X months]
- Highest-risk moment: [e.g. "Month 3 — when trial value has worn off but full adoption hasn't happened"]
- Churn timing distribution:
| When churn occurred | % of churned accounts |
|---|---|
| 0–3 months | [X]% |
| 3–6 months | [X]% |
| 6–12 months | [X]% |
| 12+ months | [X]% |
Early Warning Signals
Based on the churned accounts, identify the signals that preceded churn (and could have triggered earlier intervention):
| Signal | Lead time before churn | How to detect |
|---|---|---|
| [Signal 1 — e.g. "DAU/MAU dropped below 15%"] | [~X weeks] | [Usage dashboard / alert] |
| [Signal 2 — e.g. "No QBR in 90+ days"] | [~X weeks] | [CRM flag] |
| [Signal 3 — e.g. "Champion left the account"] | [~X weeks] | [LinkedIn alert / CSM tracking] |
| [Signal 4] | [~X weeks] | [Detection method] |
Intervention Recommendations
Ranked by estimated impact × feasibility.
| Intervention | Addresses | Est. churn reduction | Effort | Owner |
|---|---|---|---|---|
| [Intervention 1 — e.g. "Improve onboarding for [segment] with dedicated 30-day check-in"] | [Reason 1] | [X accounts / £X ARR] | Low / Med / High | [Team] |
| [Intervention 2] | [Reason 2] | [X accounts / £X ARR] | Low / Med / High | [Team] |
| [Intervention 3] | [Reason 3] | [X accounts / £X ARR] | Low / Med / High | [Team] |
Priority call: [Which one intervention, if implemented this quarter, would have the biggest impact and why]
What We Don't Know (Data Gaps)
- [Data gap 1 — e.g. "Exit survey response rate is only 30% — the reasons data may not be representative"]
- [Data gap 2 — e.g. "No product usage data for SMB tier — can't confirm usage signal correlation"]
- [Data gap 3]
Anti-Patterns
- Do not mix avoidable and unavoidable churn in intervention plans — recommending product fixes for customers who churned due to company shutdown wastes resources
- Do not calculate churn rate using end-of-period customer count as the denominator — this understates churn; always divide churned customers by the starting cohort
- Do not rely solely on exit survey data for churn reasons — response rates are typically low and self-selection biases the sample toward customers who are engaged enough to complete a survey
- Do not recommend interventions without linking them to a specific churn reason — interventions disconnected from root causes will not move retention
- Do not report only gross revenue churn — without net revenue retention (NRR), a healthy-looking retention number can hide a shrinking revenue base
Deeper Materials
This skill ships with support files — use them when they are available:
references/avoidability-calls.md— Avoidable or Not? The Judgment Calls in Churn Classification. Apply it while producing the output; it carries the calibration and judgment calls the method summary above compresses.templates/churn-report.md— a fill-in version of the deliverable with the quality gates inline. Offer it when the user wants to work the document themselves rather than have it generated.
Scoring Rubric (0–40)
Score any output of this skill before handing it over; 32+ is ship-quality.
| Dimension | 0 | 5 | 10 |
|---|---|---|---|
| Rate math integrity | Churn computed on end-of-period count; no NRR | Correct denominator but gross churn only | Correct denominator, gross and net side by side, benchmark context that interprets rather than decorates |
| Avoidability separation | All churn treated as one pool | Categories tabulated but interventions still address the full pool | Avoidable/unavoidable/involuntary split carried through every downstream section; interventions touch only the avoidable share |
| Segment & timing insight | Averages only | Segment table present but no over-index reading | Names the specific over-indexing cell (tier × cohort) and the highest-risk moment, with the "why" |
| Intervention linkage | Recommendations float free of causes | Each intervention names a reason but impact is unsized | Every intervention maps to a ranked reason with estimated accounts/ARR recovered, and the priority call justifies its sequencing |
Quality Checks
- Churn rate is correctly calculated (churned ÷ starting cohort, not end-of-period total)
- Avoidable and unavoidable churn are separated — interventions target avoidable churn only
- Churn reasons are customer-reported, not internally assumed
- Segment analysis identifies which segments over-index — not just averages
- Early warning signals are specific and detectable, not generic ("low engagement")
- Interventions link directly to the top churn reasons — no recommendations without a root cause match
Version History
- 54fad50 Current 2026-07-19 13:20
- a38bc30 2026-07-05 11:31


