关于 churn-risk-detector
churn-risk-detector 面向没有客户成功平台的早期团队,整合支持、沟通、使用和账单信号,为账户评分并提出挽留行动。
主要功能
- 01分析支持与沟通信号
- 02评估使用和账单模式
- 03为账户评分并划分风险等级
- 04为高风险账户生成行动建议
- 05生成每周风险报告
适用场景
- 01找出需要重点挽留的账户
- 02每周检查客户健康状况
- 03在续约前安排联系优先级
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gooseworks-ai/ goose-skills --skill churn-risk-detector安装后在 Claude Code 中输入/churn-risk-detector确认已加载。
附带文件skill.meta.json
详细介绍
客户流失风险检测器
在为时已晚之前,找出有流失风险的客户。汇总支持服务、沟通和使用模式中的信号,生成带有具体挽回措施的风险评分报告。
适用对象: 没有客户成功平台(如 Gainsight、ChurnZero)的早期团队。你有一份客户电子表格、一个 Slack 频道和一个支持服务收件箱。此技能会将这些原始信号转化为可采取行动的流失风险清单。
适用场景
- “哪些客户有流失风险?”
- “运行每周流失风险扫描”
- “标记出我应该担心的客户”
- “我们有多久没联系过哪些客户了?”
- “生成客户健康报告”
阶段 0:信息收集
客户数据
- 客户名单 — CSV 或电子表格,包含:公司名称、主要联系人邮箱、合同金额(MRR/ARR)、合同开始日期、续约日期(如已知)
- 产品/服务类型 — 客户付费购买的是什么?(有助于校准预期互动程度)
信号来源(提供你能提供的数据)
- 支持工单 — 从 Intercom、Zendesk 或电子邮件导出的数据(CSV,包含:客户、日期、主题、状态、解决时间)
- Slack 频道历史记录 — 客户 Slack 频道或共享频道中的消息
- NPS/CSAT 评分 — 最近的调查结果,包含评分和评论
- 使用数据 — 你跟踪的任何指标:登录次数、API 调用次数、已用功能、活跃用户(CSV 导出)
- 电子邮件/沟通记录 — 每个客户最近的联系记录(日期 + 背景信息)
- 账单数据 — 支付失败、降级、折扣请求
校准
- “健康”客户是什么样的? — 描述一位健康客户(例如:“每天登录,使用 3 个以上功能,在 24 小时内回复邮件”)
- 已知流失原因 — 过去客户流失的原因是什么?(有助于调整信号权重)
阶段 1:信号提取
1A:支持信号分析
根据支持工单数据,按客户计算:
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 工单量激增 | 过去 30 天的工单量超过其平均值的 2 倍 | 高 |
| 未解决工单 | 已开放超过 7 天的工单 | 高 |
| 升级投诉用语 | 关键词:“cancel”“frustrated”“alternative”“not working”“disappointed” | 严重 |
| 响应时间变长 | 你对该客户的平均响应时间呈上升趋势 | 中 |
| 重复问题 | 同一问题被报告 2 次以上 | 高 |
1B:沟通信号分析
根据 Slack/电子邮件历史记录:
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 突然沉默 | 30 天以上没有消息(此前一直活跃) | 高 |
| 联系频率下降 | 与之前 90 天相比,消息频率下降超过 50% | 中 |
| 情绪转差 | 语气从积极转为中性或消极 | 中 |
| 关键联系人不再参与 | 主要联系人停止回复 | 严重 |
| 新相关方提问 | 新联系人提出“这有什么用?”之类的基础问题 | 中(可能发生了组织调整) |
1C:使用信号分析(如有数据)
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 登录量下降 | 活跃用户数较上月下降超过 30% | 高 |
| 放弃功能 | 停止使用此前定期使用的关键功能 | 高 |
| 使用浅显 | 付费购买多个功能,却只使用 1 个功能 | 中 |
| 没有增长 | 席位数/用户数连续 6 个月以上保持不变 | 低 |
| 导出量激增 | 数据导出量突然增加 | 严重(可能正在迁移) |
1D:商务信号分析
| 信号 | 计算方式 | 风险权重 |
|---|---|---|
| 请求折扣 | 客户要求降低价格 | 高 |
| 咨询降级 | 客户询问更低级别的套餐 | 严重 |
| 支付失败 | 支付失败后超过 7 天仍未解决 | 高 |
| 合同即将续约 | 距续约不足 60 天,且尚未讨论续约 | 中 |
| 提及竞争对手 | 在任何渠道中提及竞争对手 | 高 |
阶段 2:风险评分
评分模型
每个账户都会获得一个综合风险评分(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
风险等级
| 等级 | 评分 | 标签 | 行动紧迫性 |
|---|---|---|---|
| Red | 70-100 | 严重风险 — 可能流失 | 本周 |
| Orange | 40-69 | 风险升高 — 需要关注 | 两周内 |
| Yellow | 20-39 | 早期预警 — 密切监控 | 30 天内 |
| Green | 0-19 | 健康 — 无需采取行动 | 常规跟进 |
阶段 3:生成挽回方案
为每个 Red 和 Orange 账户生成具体的挽回方案:
挽回方案模板
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].
阶段 4:输出格式
# 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]
将文件保存到当前工作目录下的 risk-report-[YYYY-MM-DD].md。
定时安排
每周运行:
0 8 * * 1 python3 run_skill.py churn-risk-detector --client <client-name>
费用
| 组成部分 | 费用 |
|---|---|
| 所有信号分析 | 免费(LLM 推理) |
| Slack/电子邮件解析 | 免费 |
| 总计 | 免费 |
所需工具
- 来自 CSV/表格的输入数据(支持工单、使用情况、NPS)
- 可选: 读取 Slack 频道以获取沟通信号
- 无外部 API 费用 — 纯分析
触发短语
- “哪些客户面临风险?”
- “运行流失风险扫描”
- “每周客户健康报告”
- “标记有风险的账户”
评论
支持 Markdown