churn-risk-detector
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseChurn 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.
在为时已晚之前识别出有流失风险的客户账户。将来自支持、沟通和使用模式的信号整合为带有具体挽回措施的风险评分报告。
适用场景: 尚未配备客户成功平台(无Gainsight、无ChurnZero)的早期团队。你有一份客户电子表格、一个Slack频道和一个支持收件箱。本技能可将这些原始信号转化为可执行的流失风险列表。
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
阶段0:数据收集
Account Data
账户数据
- Customer list — CSV or sheet with: company name, primary contact email, contract value (MRR/ARR), contract start date, renewal date (if known)
- Product/service type — What are they paying for? (Helps calibrate expected engagement)
- 客户列表 — CSV或表格,包含:公司名称、主要联系人邮箱、合同金额(MRR/ARR)、合同开始日期、续约日期(如有)
- 产品/服务类型 — 客户付费购买的产品/服务是什么?(有助于校准预期参与度)
Signal Sources (provide what you have)
信号来源(提供你已有的数据即可)
- Support tickets — Export from Intercom, Zendesk, or email (CSV with: customer, date, subject, status, resolution time)
- Slack channel history — Customer Slack channel or shared channel messages
- NPS/CSAT scores — Recent survey results with scores and comments
- Usage data — Any metrics you track: logins, API calls, features used, active users (CSV export)
- Email/communication log — Last touchpoints per account (dates + context)
- Billing data — Payment failures, downgrades, discount requests
- 支持工单 — 从Intercom、Zendesk或邮件导出的CSV,包含:客户、日期、主题、状态、解决时长
- Slack频道历史记录 — 客户Slack频道或共享频道的消息
- NPS/CSAT评分 — 近期调研结果,包含评分和评论
- 使用数据 — 任何你追踪的指标:登录次数、API调用、功能使用情况、活跃用户数(CSV导出)
- 邮件/沟通记录 — 每个账户的最近接触记录(日期+上下文)
- 账单数据 — 支付失败、降级请求、折扣申请
Calibration
校准设置
- What does "healthy" look like? — Describe a healthy customer (e.g., "logs in daily, uses 3+ features, responds to emails within 24h")
- Known churn reasons — Why have customers churned in the past? (helps weight signals)
- “健康”客户的定义是什么? — 描述健康客户的特征(例如:“每日登录,使用3个以上功能,24小时内回复邮件”)
- 已知的流失原因 — 过往客户流失的原因是什么?(有助于为信号分配权重)
Phase 1: Signal Extraction
阶段1:信号提取
1A: Support Signal Analysis
1A:支持信号分析
From support ticket data, calculate per account:
| Signal | Calculation | Risk Weight |
|---|---|---|
| Ticket volume spike | >2x their average in last 30 days | High |
| Unresolved tickets | Open tickets older than 7 days | High |
| Escalation language | Keywords: "cancel", "frustrated", "alternative", "not working", "disappointed" | Critical |
| Response time degradation | Your avg response time to this customer trending up | Medium |
| Repeat issues | Same problem reported 2+ times | High |
从支持工单数据中,为每个账户计算以下指标:
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 工单数量激增 | 过去30天内工单数量超过平均水平的2倍 | 高 |
| 未解决工单 | 未解决工单时长超过7天 | 高 |
| 升级类语言 | 包含关键词:“取消”、“失望”、“替代方案”、“无法使用”、“不满意” | 严重 |
| 响应时长恶化 | 对该客户的平均响应时长呈上升趋势 | 中 |
| 重复问题 | 同一问题被报告2次以上 | 高 |
1B: Communication Signal Analysis
1B:沟通信号分析
From Slack/email history:
| Signal | Calculation | Risk Weight |
|---|---|---|
| Gone silent | No messages in 30+ days (was previously active) | High |
| Decreasing frequency | Message frequency dropped >50% vs prior 90 days | Medium |
| Negative sentiment shift | Tone changed from positive to neutral/negative | Medium |
| Champion disengagement | Primary contact stopped responding | Critical |
| New stakeholder questions | New person asking basic "what does this do?" questions | Medium (potential reorg) |
从Slack/邮件历史记录中提取:
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 突然沉默 | 过去30天无消息(此前为活跃状态) | 高 |
| 沟通频率下降 | 消息频率较过去90天下降超过50% | 中 |
| 负面情绪转变 | 语气从积极变为中立/负面 | 中 |
| 关键联系人失联 | 主要联系人停止回复消息 | 严重 |
| 新利益相关者疑问 | 新联系人询问基础的“这个功能有什么用?”类问题 | 中(可能存在组织变动) |
1C: Usage Signal Analysis (if data available)
1C:使用信号分析(如有可用数据)
| Signal | Calculation | Risk Weight |
|---|---|---|
| Login drop | Active users down >30% vs prior month | High |
| Feature abandonment | Stopped using a key feature they previously used regularly | High |
| Shallow usage | Only using 1 feature when they're paying for many | Medium |
| No growth | Same number of seats/users for 6+ months | Low |
| Export spike | Sudden increase in data exports | Critical (may be migrating) |
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 登录量下降 | 活跃用户数较上月下降超过30% | 高 |
| 功能弃用 | 停止使用此前经常使用的关键功能 | 高 |
| 浅度使用 | 仅使用1个功能,但付费购买了多个功能 | 中 |
| 无增长 | 席位/用户数连续6个月无变化 | 低 |
| 数据导出激增 | 数据导出量突然增加 | 严重(可能在迁移至其他平台) |
1D: Commercial Signal Analysis
1D:商业信号分析
| Signal | Calculation | Risk Weight |
|---|---|---|
| Discount request | Asked for pricing reduction | High |
| Downgrade inquiry | Asked about lower tier | Critical |
| Payment failure | Failed payment not resolved in 7+ days | High |
| Contract approaching renewal | <60 days to renewal with no renewal discussion | Medium |
| Competitor mention | Mentioned a competitor in any channel | High |
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 折扣申请 | 客户要求降低价格 | 高 |
| 降级咨询 | 客户询问更低层级的服务 | 严重 |
| 支付失败 | 支付失败且7天内未解决 | 高 |
| 合同即将到期 | 距离续约不足60天且未进行续约讨论 | 中 |
| 提及竞争对手 | 在任何渠道中提及竞争对手 | 高 |
Phase 2: Risk Scoring
阶段2:风险评分
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每个账户都会获得一个综合风险评分(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: 100Risk Tiers
风险等级
| Tier | Score | Label | Action Urgency |
|---|---|---|---|
| Red | 70-100 | Critical risk — likely to churn | This week |
| Orange | 40-69 | Elevated risk — needs attention | Within 2 weeks |
| Yellow | 20-39 | Early warning — monitor closely | Within 30 days |
| Green | 0-19 | Healthy — no action needed | Routine check-in |
| 等级 | 评分 | 标签 | 行动优先级 |
|---|---|---|---|
| 红色 | 70-100 | 严重风险 — 极有可能流失 | 本周内处理 |
| 橙色 | 40-69 | 较高风险 — 需要关注 | 2周内处理 |
| 黄色 | 20-39 | 早期预警 — 密切监控 | 30天内处理 |
| 绿色 | 0-19 | 健康 — 无需采取行动 | 常规回访 |
Phase 3: Save Play Generation
阶段3:挽回策略生成
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].ACCOUNT: [公司名称]
RISK TIER: [红色/橙色]
RISK SCORE: [X/100]
MRR/ARR: $[X]
检测到的信号:
- [信号1] — [证据:具体数据点]
- [信号2] — [证据]
- [信号3] — [证据]
根本原因假设:
[1-2句话:你认为实际存在什么问题?
例如:“关键联系人已离职,新的利益相关者尚未完成入职培训”
或 “他们遇到了[功能]的技术限制,阻碍了其核心使用场景”]
推荐的挽回策略:
1. [立即行动 — 例如:“本周与[联系人]安排一次通话”]
2. [跟进措施 — 例如:“发送个性化Loom视频,展示如何解决[具体问题]”]
3. [结构性修复 — 例如:“为新的利益相关者安排专属入职培训”]
沟通话术:
“[2-3句话,供CSM/创始人自然开启对话,
避免直接提及‘我们注意到你可能会流失’]”
升级触发条件:
如果到[日期]仍未满足[具体条件],则升级至[创始人/CEO]沟通。Phase 4: Output Format
阶段4:输出格式
markdown
undefinedmarkdown
undefinedChurn Risk Report — Week of [DATE]
流失风险报告 — [日期]当周
Total accounts scanned: [N]
Data sources: [list what was available]
扫描的账户总数: [N]
数据来源: [列出可用的数据源]
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)
| 等级 | 数量 | 风险MRR总计 |
|---|---|---|
| 🔴 红色(严重风险) | [N] | $[X] |
| 🟠 橙色(较高风险) | [N] | $[X] |
| 🟡 黄色(早期预警) | [N] | $[X] |
| 🟢 绿色(健康) | [N] | $[X] |
风险MRR总计(红色+橙色): $[X](占总MRR的[Y]%)
🔴 Critical Risk Accounts
🔴 严重风险账户
[Company Name 1] — Score: [X]/100 | MRR: $[X]
[公司名称1] — 评分: [X]/100 | MRR: $[X]
Signals: [bullet list]
Root cause: [hypothesis]
Save play: [specific actions]
Owner: [who should act]
Deadline: [date]
检测到的信号: [项目符号列表]
根本原因: [假设]
挽回策略: [具体行动]
负责人: [执行人员]
截止日期: [日期]
[Company Name 2] — ...
[公司名称2] — ...
🟠 Elevated Risk Accounts
🟠 较高风险账户
[Company Name] — Score: [X]/100 | MRR: $[X]
[公司名称] — 评分: [X]/100 | MRR: $[X]
Signals: [bullet list]
Recommended action: [1-2 sentences]
检测到的信号: [项目符号列表]
推荐行动: [1-2句话]
🟡 Early Warning Accounts
🟡 早期预警账户
| Account | Score | Key Signal | Suggested Action |
|---|---|---|---|
| [Name] | [X] | [Signal] | [Action] |
| [Name] | [X] | [Signal] | [Action] |
| 账户 | 评分 | 关键信号 | 建议行动 |
|---|---|---|---|
| [名称] | [X] | [信号] | [行动] |
| [名称] | [X] | [信号] | [行动] |
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] |
| 信号类型 | 受影响账户数量 |
|---|---|
| 支持工单激增 | [N] |
| 突然沉默 | [N] |
| 使用量下降 | [N] |
| 提及竞争对手 | [N] |
| 支付问题 | [N] |
| 关键联系人失联 | [N] |
Recommended Focus This Week
本周推荐重点关注
- [Account] — [Why + what to do]
- [Account] — [Why + what to do]
- [Account] — [Why + what to do]
Save to `clients/<client-name>/customer-success/churn-risk/risk-report-[YYYY-MM-DD].md`.- [账户] — [原因 + 行动建议]
- [账户] — [原因 + 行动建议]
- [账户] — [原因 + 行动建议]
保存至 `clients/<client-name>/customer-success/churn-risk/risk-report-[YYYY-MM-DD].md`。Scheduling
调度设置
Run weekly:
bash
0 8 * * 1 python3 run_skill.py churn-risk-detector --client <client-name>每周运行一次:
bash
0 8 * * 1 python3 run_skill.py churn-risk-detector --client <client-name>Cost
成本
| Component | Cost |
|---|---|
| All signal analysis | Free (LLM reasoning) |
| Slack/email parsing | Free |
| Total | Free |
| 组件 | 成本 |
|---|---|
| 所有信号分析 | 免费(基于LLM推理) |
| Slack/邮件解析 | 免费 |
| 总计 | 免费 |
Tools Required
所需工具
- Input data from CSV/sheets (support tickets, usage, NPS)
- Optional: Slack channel reading for communication signals
- No external API costs — pure analysis
- 来自CSV/表格的输入数据(支持工单、使用数据、NPS)
- 可选: 读取Slack频道以获取沟通信号
- 无外部API成本 — 纯分析
Trigger Phrases
触发短语
- "Which customers are at risk?"
- "Run the churn risk scan"
- "Weekly customer health report"
- "Flag at-risk accounts"
- "哪些客户存在流失风险?"
- "运行流失风险扫描"
- "每周客户健康报告"
- "标记有风险的账户"