Champion tracker

Track product champions for job changes and qualify their new companies against ICP.

How to use it

  1. Hit Copy SKILL.md — or use the Claude Code line below to get every file.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/sales/capabilities/champion-tracker#main ~/.claude/skills/champion-tracker

For one project only, change the path to .claude/skills/champion-tracker. This skill also uses champion_tracker.py, baseline.json — copying SKILL.md alone won't be enough. See the folder on GitHub.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text126 lines
champion-tracker/SKILL.md126 lines4.4 KBpushed 96d agoRawView on GitHub

Champion Tracker

Detect when product champions change jobs and qualify their new companies against 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

Two Phases

Phase A: Discover Champions (agent-driven, one-time)

Build the initial champion list from public sources. This is done by the agent, not the script.

  1. Scrape reviews — Use review-site-scraper skill to pull G2/Trustpilot reviews. Extract reviewer names + companies.
  2. Search LinkedIn posts — Use the linkedin-post-research skill (Apify-based) to find people who posted about the product.
  3. Resolve LinkedIn URLs — Use Fiber /v1/kitchen-sink/person (name + company → profile URL) or ContactOut via Orthogonal.
  4. Compile CSV — Merge all sources into champions.csv with required columns.

Phase B: Track Job Changes (script-driven, repeatable)

Use champion_tracker.py for ongoing tracking.

Script Usage

Prerequisites

  • APIFY_API_TOKEN in .env (for LinkedIn profile enrichment)
  • Champion CSV with columns: name, linkedin_url (required); original_company, original_title, email, source, notes (optional)

Commands

Initialize baseline (first run):

# Dry run — see cost estimate
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):

# Dry run
python3 skills/champion-tracker/scripts/champion_tracker.py check --dry-run

# Detect changes and output CSV
python3 skills/champion-tracker/scripts/champion_tracker.py check -o changes.csv

View status:

python3 skills/champion-tracker/scripts/champion_tracker.py status

Output CSV Columns

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 Email if available
notes Original notes from champion CSV

ICP Scoring (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)

Cost

  • ~$3 per 1,000 LinkedIn profiles enriched
  • 50-80 champions ≈ $0.15-0.25 per run
  • --dry-run always shows cost before any API calls

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 output

Dependencies

  • Reuses LinkedInEnricher from skills/lead-qualification/scripts/enrich_leads.py
  • Falls back to inline implementation if import fails
  • Requires: requests (Python package), APIFY_API_TOKEN (env var)
1---
2name: champion-tracker
3description: >
4 Track product champions for job changes and qualify their new companies against ICP.
5 Takes a CSV of known champions (with LinkedIn URLs), creates a baseline snapshot via
6 Apify enrichment, then detects when champions move to new companies. Scores new
7 companies on a 0-4 ICP fit scale. Outputs a downloadable CSV of movers with
8 qualification verdicts.
9tags: [lead-generation]
10---
11 
12# Champion Tracker
13 
14Detect when product champions change jobs and qualify their new companies against ICP.
15 
16## When to Use
17 
18- You have a list of known product users/champions (from reviews, LinkedIn posts, CRM exports)
19- You want to detect when they change companies (high-intent re-sell signal)
20- You want each job change scored against ICP before reaching out
21 
22## Two Phases
23 
24### Phase A: Discover Champions (agent-driven, one-time)
25 
26Build the initial champion list from public sources. This is done by the agent, not the script.
27 
281. **Scrape reviews** — Use `review-site-scraper` skill to pull G2/Trustpilot reviews. Extract reviewer names + companies.
292. **Search LinkedIn posts** — Use the `linkedin-post-research` skill (Apify-based) to find people who posted about the product.
303. **Resolve LinkedIn URLs** — Use Fiber `/v1/kitchen-sink/person` (name + company → profile URL) or ContactOut via Orthogonal.
314. **Compile CSV** — Merge all sources into `champions.csv` with required columns.
32 
33### Phase B: Track Job Changes (script-driven, repeatable)
34 
35Use `champion_tracker.py` for ongoing tracking.
36 
37## Script Usage
38 
39### Prerequisites
40 
41- `APIFY_API_TOKEN` in `.env` (for LinkedIn profile enrichment)
42- Champion CSV with columns: `name`, `linkedin_url` (required); `original_company`, `original_title`, `email`, `source`, `notes` (optional)
43 
44### Commands
45 
46**Initialize baseline** (first run):
47```bash
48# Dry run — see cost estimate
49python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv --dry-run
50 
51# Create baseline
52python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv
53```
54 
55**Check for job changes** (subsequent runs):
56```bash
57# Dry run
58python3 skills/champion-tracker/scripts/champion_tracker.py check --dry-run
59 
60# Detect changes and output CSV
61python3 skills/champion-tracker/scripts/champion_tracker.py check -o changes.csv
62```
63 
64**View status**:
65```bash
66python3 skills/champion-tracker/scripts/champion_tracker.py status
67```
68 
69## Output CSV Columns
70 
71| Column | Description |
72|--------|-------------|
73| champion_name | Full name |
74| linkedin_url | LinkedIn profile URL |
75| previous_company | Company at baseline |
76| previous_title | Title at baseline |
77| new_company | Current company (changed) |
78| new_title | Current title |
79| change_detected_date | Date this check was run |
80| position_start_date | When they started the new role |
81| days_since_change | Days since new position started |
82| icp_score | 0-4 ICP qualification score |
83| icp_verdict | Strong Fit / Good Fit / Possible Fit / Weak Fit |
84| icp_notes | Scoring breakdown |
85| email | Email if available |
86| notes | Original notes from champion CSV |
87 
88## ICP Scoring (0-4)
89 
90| Signal | Points | What it checks |
91|--------|--------|----------------|
92| B2B signal | 1.0 | Title contains sales/SDR/revenue/growth keywords |
93| Outbound motion | 1.0 | Sales leadership title (VP Sales, Head of Growth, etc.) |
94| Company size | 1.0 / 0.5 | SMB/mid-market = 1.0; unknown = 0.5 benefit-of-doubt |
95| Seniority | 1.0 | VP, Director, Head of, C-level, Founder |
96 
97**Verdicts**: Strong Fit (>=3) / Good Fit (>=2) / Possible Fit (>=1.5) / Weak Fit (<1.5)
98 
99## Cost
100 
101- ~$3 per 1,000 LinkedIn profiles enriched
102- 50-80 champions ≈ $0.15-0.25 per run
103- `--dry-run` always shows cost before any API calls
104 
105## File Structure
106 
107```
108skills/champion-tracker/
109 SKILL.md # This file
110 scripts/
111 champion_tracker.py # Main CLI script
112 input/
113 champions_template.csv # Template for manual additions
114 snapshots/ # Created at runtime
115 baseline.json # Latest full snapshot
116 archive/ # Timestamped copies
117 output/ # Created at runtime
118 changes-YYYY-MM-DD.csv # Generated output
119```
120 
121## Dependencies
122 
123- Reuses `LinkedInEnricher` from `skills/lead-qualification/scripts/enrich_leads.py`
124- Falls back to inline implementation if import fails
125- Requires: `requests` (Python package), `APIFY_API_TOKEN` (env var)
126 

Discussion

Alternatives

Also in Lead lists