champion-tracker
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseChampion Tracker
产品拥护者跟踪工具
Detect when product champions change jobs and qualify their new companies against ICP.
检测产品拥护者的工作变动情况,并根据理想客户画像(ICP)评估其新公司是否符合要求。
When to Use
适用场景
- You have a list of known product users/champions (from reviews, LinkedIn posts, CRM exports)
- You want to detect when they change companies (high-intent re-sell signal)
- You want each job change scored against ICP before reaching out
- 你拥有已知的产品用户/拥护者列表(来自评论、LinkedIn帖子、CRM导出数据)
- 你希望检测他们是否跳槽(这是高意向的二次销售信号)
- 你希望在联系他们之前,根据ICP对每次跳槽进行评分
Two Phases
两个阶段
Phase A: Discover Champions (agent-driven, one-time)
阶段A:发现拥护者(由Agent驱动,一次性操作)
Build the initial champion list from public sources. This is done by the agent, not the script.
- Scrape reviews — Use skill to pull G2/Trustpilot reviews. Extract reviewer names + companies.
review-scraper - Search LinkedIn posts — Use Crustdata MCP to find people who posted about the product.
- Resolve LinkedIn URLs — Use Crustdata MCP to search by name + company → get profile URLs.
- Compile CSV — Merge all sources into with required columns.
champions.csv
从公开数据源构建初始拥护者列表。此步骤由Agent完成,而非脚本。
- 抓取评论 — 使用工具抓取G2/Trustpilot平台的评论,提取评论者姓名及所属公司。
review-scraper - 搜索LinkedIn帖子 — 通过Crustdata MCP查找发布过相关产品内容的用户。
- 获取LinkedIn链接 — 通过Crustdata MCP根据姓名+公司信息搜索,获取用户的个人主页链接。
- 编译CSV文件 — 将所有来源的数据合并为包含必填列的文件。
champions.csv
Phase B: Track Job Changes (script-driven, repeatable)
阶段B:跟踪工作变动(由脚本驱动,可重复执行)
Use for ongoing tracking.
champion_tracker.py使用脚本进行持续跟踪。
champion_tracker.pyScript Usage
脚本使用说明
Prerequisites
前置条件
- in
APIFY_API_TOKEN(for LinkedIn profile enrichment).env - Champion CSV with columns: ,
name(required);linkedin_url,original_company,original_title,email,source(optional)notes
- 在文件中配置
.env(用于LinkedIn个人资料数据富集)APIFY_API_TOKEN - 拥护者CSV文件需包含以下列:、
name(必填);linkedin_url、original_company、original_title、email、source(可选)notes
Commands
命令说明
Initialize baseline (first run):
bash
undefined初始化基准数据(首次运行):
bash
undefinedDry run — see cost estimate
试运行 — 查看成本估算
python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv --dry-run
python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv --dry-run
Create baseline
创建基准快照
python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv
**Check for job changes** (subsequent runs):
```bashpython3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv
**检查工作变动**(后续运行):
```bashDry run
试运行
python3 skills/champion-tracker/scripts/champion_tracker.py check --dry-run
python3 skills/champion-tracker/scripts/champion_tracker.py check --dry-run
Detect changes and output CSV
检测变动并输出CSV文件
python3 skills/champion-tracker/scripts/champion_tracker.py check -o changes.csv
**View status**:
```bash
python3 skills/champion-tracker/scripts/champion_tracker.py statuspython3 skills/champion-tracker/scripts/champion_tracker.py check -o changes.csv
**查看状态**:
```bash
python3 skills/champion-tracker/scripts/champion_tracker.py statusOutput CSV Columns
输出CSV列说明
| Column | Description |
|---|---|
| champion_name | Full name |
| linkedin_url | LinkedIn profile URL |
| previous_company | Company at baseline |
| previous_title | Title at baseline |
| new_company | Current company (changed) |
| new_title | Current title |
| change_detected_date | Date this check was run |
| position_start_date | When they started the new role |
| days_since_change | Days since new position started |
| icp_score | 0-4 ICP qualification score |
| icp_verdict | Strong Fit / Good Fit / Possible Fit / Weak Fit |
| icp_notes | Scoring breakdown |
| Email if available | |
| notes | Original notes from champion CSV |
| 列名 | 描述 |
|---|---|
| champion_name | 全名 |
| linkedin_url | LinkedIn个人主页链接 |
| previous_company | 基准快照中的原公司 |
| previous_title | 基准快照中的原职位 |
| new_company | 当前所在的新公司(已变动) |
| new_title | 当前职位 |
| change_detected_date | 本次检测的执行日期 |
| position_start_date | 新职位的入职日期 |
| days_since_change | 入职新职位的天数 |
| icp_score | 0-4分的ICP匹配度评分 |
| icp_verdict | 强匹配/良好匹配/可能匹配/弱匹配 |
| icp_notes | 评分明细 |
| (若有)邮箱地址 | |
| notes | 来自拥护者CSV文件的原始备注 |
ICP Scoring (0-4)
ICP评分标准(0-4分)
| Signal | Points | What it checks |
|---|---|---|
| B2B signal | 1.0 | Title contains sales/SDR/revenue/growth keywords |
| Outbound motion | 1.0 | Sales leadership title (VP Sales, Head of Growth, etc.) |
| Company size | 1.0 / 0.5 | SMB/mid-market = 1.0; unknown = 0.5 benefit-of-doubt |
| Seniority | 1.0 | VP, Director, Head of, C-level, Founder |
Verdicts: Strong Fit (>=3) / Good Fit (>=2) / Possible Fit (>=1.5) / Weak Fit (<1.5)
| 评分项 | 分值 | 检测内容 |
|---|---|---|
| B2B信号 | 1.0 | 职位名称包含销售/SDR/营收/增长等关键词 |
| outbound拓展潜力 | 1.0 | 销售领导层职位(如销售副总裁、增长负责人等) |
| 公司规模 | 1.0 / 0.5 | 中小企业/中型市场=1.0;规模未知=0.5(给予容错分) |
| 职位层级 | 1.0 | 副总裁、总监、负责人、高管、创始人层级 |
判定标准:强匹配(≥3分)/良好匹配(≥2分)/可能匹配(≥1.5分)/弱匹配(<1.5分)
Cost
成本说明
- ~$3 per 1,000 LinkedIn profiles enriched
- 50-80 champions ≈ $0.15-0.25 per run
- always shows cost before any API calls
--dry-run
- 每富集1000个LinkedIn个人资料约花费3美元
- 50-80名拥护者,每次运行约花费0.15-0.25美元
- 命令会在调用API前显示预估成本
--dry-run
File Structure
文件结构
skills/champion-tracker/
SKILL.md # This file
scripts/
champion_tracker.py # Main CLI script
input/
champions_template.csv # Template for manual additions
snapshots/ # Created at runtime
baseline.json # Latest full snapshot
archive/ # Timestamped copies
output/ # Created at runtime
changes-YYYY-MM-DD.csv # Generated outputskills/champion-tracker/
SKILL.md # 本文档
scripts/
champion_tracker.py # 主CLI脚本
input/
champions_template.csv # 手动添加数据的模板文件
snapshots/ # 运行时自动创建
baseline.json # 最新的完整快照
archive/ # 带时间戳的历史快照副本
output/ # 运行时自动创建
changes-YYYY-MM-DD.csv # 生成的输出文件Dependencies
依赖项
- Reuses from
LinkedInEnricherskills/lead-qualification/scripts/enrich_leads.py - Falls back to inline implementation if import fails
- Requires: (Python package),
requests(env var)APIFY_API_TOKEN
- 复用中的
skills/lead-qualification/scripts/enrich_leads.py模块LinkedInEnricher - 若导入失败,则使用内置实现
- 依赖:(Python包)、
requests(环境变量)APIFY_API_TOKEN