AI SkillScore RiskSalesby Gooseworks

Churn Risk Detector — find at-risk accounts before they leave

Runs on
ClaudeClaudeChatGPTChatGPTOpenClawOpenClaw

Score customer accounts for churn risk from support and usage signals

  • Scans support tickets, Slack history, NPS, usage, and billing for risk signals
  • Scores every account 0-100 across critical/high/medium/low signals
  • Tiers accounts as Red, Orange, Yellow, Green
  • Generates root-cause hypothesis and save play per Red and Orange account
  • Tracks week-over-week tier movement

Who this is for

What it does

Weekly customer health review

Replace gut-feel CSM rounds with a scored risk list and concrete save plays.

Pre-renewal triage

60 days before renewal, find every account that's drifting and intervene before the conversation gets harder.

Founder-managed CS

For early-stage teams without a CS platform, turn raw data into an actionable risk list every week.

How it works

1

Take customer list, support data, usage data, and comms history as input

2

Extract risk signals across support, communication, usage, and commercial dimensions

3

Score every account on a weighted model

4

Generate save plays for Red and Orange tiers

5

Output a weekly health report with trend deltas

Metrics this improves

Churn Rate
Lower churn rate by intervening on Red and Orange accounts before renewal
Sales

Works with

⚖ Compare side-by-side
Compare with 3 similar skills
In the same department: Sales (32 skills total)
Compare →

Similar skills

Auto-suggested by attribute overlap. Side-by-side comparison shows what differs.

Compare all 4
Sorted by attribute overlap × differentiation. Churn Risk Detector shares 15+ attributes with each.

Churn Risk Detector

Surface accounts at risk of churning before it's too late. Aggregates signals from support, communication, and usage patterns into a scored risk report with specific save actions.

Built for: Early-stage teams with no CS platform (no Gainsight, no ChurnZero). You have a spreadsheet of customers, a Slack channel, and a support inbox. This skill turns those raw signals into an actionable churn risk list.

When to Use

  • "Which customers are at risk of churning?"
  • "Run the weekly churn risk scan"
  • "Flag accounts I should worry about"
  • "Who haven't we heard from in a while?"
  • "Produce a customer health report"

Phase 0: Intake

Account Data

  1. Customer list — CSV or sheet with: company name, primary contact email, contract value (MRR/ARR), contract start date, renewal date (if known)
  2. Product/service type — What are they paying for? (Helps calibrate expected engagement)

Signal Sources (provide what you have)

  1. Support tickets — Export from Intercom, Zendesk, or email (CSV with: customer, date, subject, status, resolution time)
  2. Slack channel history — Customer Slack channel or shared channel messages
  3. NPS/CSAT scores — Recent survey results with scores and comments
  4. Usage data — Any metrics you track: logins, API calls, features used, active users (CSV export)
  5. Email/communication log — Last touchpoints per account (dates + context)
  6. Billing data — Payment failures, downgrades, discount requests

Calibration

  1. What does "healthy" look like? — Describe a healthy customer (e.g., "logs in daily, uses 3+ features, responds to emails within 24h")
  2. Known churn reasons — Why have customers churned in the past? (helps weight signals)

Phase 1: Signal Extraction

1A: Support Signal Analysis

From support ticket data, calculate per account:

SignalCalculationRisk Weight
Ticket volume spike>2x their average in last 30 daysHigh
Unresolved ticketsOpen tickets older than 7 daysHigh
Escalation languageKeywords: "cancel", "frustrated", "alternative", "not working", "disappointed"Critical
Response time degradationYour avg response time to this customer trending upMedium
Repeat issuesSame problem reported 2+ timesHigh

1B: Communication Signal Analysis

From Slack/email history:

SignalCalculationRisk Weight
Gone silentNo messages in 30+ days (was previously active)High
Decreasing frequencyMessage frequency dropped >50% vs prior 90 daysMedium
Negative sentiment shiftTone changed from positive to neutral/negativeMedium
Champion disengagementPrimary contact stopped respondingCritical
New stakeholder questionsNew person asking basic "what does this do?" questionsMedium (potential reorg)

1C: Usage Signal Analysis (if data available)

SignalCalculationRisk Weight
Login dropActive users down >30% vs prior monthHigh
Feature abandonmentStopped using a key feature they previously used regularlyHigh
Shallow usageOnly using 1 feature when they're paying for manyMedium
No growthSame number of seats/users for 6+ monthsLow
Export spikeSudden increase in data exportsCritical (may be migrating)

1D: Commercial Signal Analysis

SignalCalculationRisk Weight
Discount requestAsked for pricing reductionHigh
Downgrade inquiryAsked about lower tierCritical
Payment failureFailed payment not resolved in 7+ daysHigh
Contract approaching renewal<60 days to renewal with no renewal discussionMedium
Competitor mentionMentioned a competitor in any channelHigh

Phase 2: Risk Scoring

Scoring Model

Each account gets a composite risk score (0-100):

Risk Score = Σ (signal_weight × signal_present)

Weights:
  Critical signal = 25 points each
  High signal     = 15 points each
  Medium signal   = 8 points each
  Low signal      = 3 points each

Score cap: 100

Risk Tiers

TierScoreLabelAction Urgency
Red70-100Critical risk — likely to churnThis week
Orange40-69Elevated risk — needs attentionWithin 2 weeks
Yellow20-39Early warning — monitor closelyWithin 30 days
Green0-19Healthy — no action neededRoutine check-in

Phase 3: Save Play Generation

For each Red and Orange account, generate a specific save play:

Save Play Template

ACCOUNT: [Company Name]
RISK TIER: [Red/Orange]
RISK SCORE: [X/100]
MRR/ARR: $[X]

SIGNALS DETECTED:
- [Signal 1] — [Evidence: specific data point]
- [Signal 2] — [Evidence]
- [Signal 3] — [Evidence]

ROOT CAUSE HYPOTHESIS:
[1-2 sentences: What do you think is actually going wrong?
 E.g., "Champion left the company and new stakeholder hasn't been onboarded"
 or "They hit a technical limitation with [feature] that's blocking their primary use case"]

RECOMMENDED SAVE PLAY:
1. [Immediate action — e.g., "Schedule a call with [contact] this week"]
2. [Follow-up — e.g., "Send a personalized Loom showing how to solve [specific issue]"]
3. [Structural fix — e.g., "Assign a dedicated onboarding session for new stakeholder"]

TALK TRACK:
"[2-3 sentences the CSM/founder can use to open the conversation naturally,
 without saying 'we noticed you might be churning']"

ESCALATION TRIGGER:
If [specific condition] by [date], escalate to [founder/CEO call].

Phase 4: Output Format

# Churn Risk Report — Week of [DATE]
Total accounts scanned: [N]
Data sources: [list what was available]

---

## Risk Summary

| Tier | Count | Total MRR at Risk |
|------|-------|-------------------|
| 🔴 Red (Critical) | [N] | $[X] |
| 🟠 Orange (Elevated) | [N] | $[X] |
| 🟡 Yellow (Early Warning) | [N] | $[X] |
| 🟢 Green (Healthy) | [N] | $[X] |

**Total MRR at risk (Red + Orange):** $[X] ([Y]% of total MRR)

---

## 🔴 Critical Risk Accounts

### [Company Name 1] — Score: [X]/100 | MRR: $[X]
**Signals:** [bullet list]
**Root cause:** [hypothesis]
**Save play:** [specific actions]
**Owner:** [who should act]
**Deadline:** [date]

### [Company Name 2] — ...

---

## 🟠 Elevated Risk Accounts

### [Company Name] — Score: [X]/100 | MRR: $[X]
**Signals:** [bullet list]
**Recommended action:** [1-2 sentences]

---

## 🟡 Early Warning Accounts

| Account | Score | Key Signal | Suggested Action |
|---------|-------|------------|-----------------|
| [Name] | [X] | [Signal] | [Action] |
| [Name] | [X] | [Signal] | [Action] |

---

## Trends vs Last Week

- Accounts moved Red → Green: [list — wins!]
- Accounts moved Green → Yellow/Orange: [list — new risks]
- Accounts churned since last report: [list]

---

## Signal Distribution

| Signal Type | Accounts Affected |
|------------|-------------------|
| Support ticket spike | [N] |
| Gone silent | [N] |
| Usage decline | [N] |
| Competitor mention | [N] |
| Payment issue | [N] |
| Champion disengagement | [N] |

---

## Recommended Focus This Week

1. **[Account]** — [Why + what to do]
2. **[Account]** — [Why + what to do]
3. **[Account]** — [Why + what to do]

Save to clients/<client-name>/customer-success/churn-risk/risk-report-[YYYY-MM-DD].md.

Scheduling

Run weekly:

0 8 * * 1 python3 run_skill.py churn-risk-detector --client <client-name>

Cost

ComponentCost
All signal analysisFree (LLM reasoning)
Slack/email parsingFree
TotalFree

Tools Required

  • Input data from CSV/sheets (support tickets, usage, NPS)
  • Optional: Slack channel reading for communication signals
  • No external API costs — pure analysis

Trigger Phrases

  • "Which customers are at risk?"
  • "Run the churn risk scan"
  • "Weekly customer health report"
  • "Flag at-risk accounts"