Champion Movement Monitor
Champion tracker

Track product champions for job changes and qualify their new companies against ICP. Takes a CSV of known champions (with LinkedIn URLs), creates a baseline snapshot via Apify enrichment, then detects when champions move to new companies.
--- name: champion-tracker description: > Track product champions for job changes and qualify their new companies against ICP. Takes a CSV of known champions (with LinkedIn URLs), creates a baseline snapshot via Apify enrichment, then detects when champions move to new companies. Scores new companies on a 0-4 ICP fit scale. Outputs a downloadable CSV of movers with qualification verdicts. tags: [lead-generation] --- # 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)
Overview
Detect when product champions change jobs and qualify their new companies against ICP.
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill champion-tracker -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/sales/capabilities/champion-trackerNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/6874b5a37b648bb6229e/champion-tracker.zip" -OutFile "$env:TEMP\champion-tracker.zip"; Expand-Archive "$env:TEMP\champion-tracker.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md4.4 KBskill.meta.json299 Binput/2 files · 1.1 KBscripts/1 file · 34.3 KB
Read the files here
gooseworks-ai/
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗Show the full text126 lines
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.
- Scrape reviews — Use
review-site-scraperskill to pull G2/Trustpilot reviews. Extract reviewer names + companies. - Search LinkedIn posts — Use the
linkedin-post-researchskill (Apify-based) to find people who posted about the product. - Resolve LinkedIn URLs — Use Fiber
/v1/kitchen-sink/person(name + company → profile URL) or ContactOut via Orthogonal. - Compile CSV — Merge all sources into
champions.csvwith required columns.
Phase B: Track Job Changes (script-driven, repeatable)
Use champion_tracker.py for ongoing tracking.
Script Usage
Prerequisites
APIFY_API_TOKENin.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 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-runalways 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
LinkedInEnricherfromskills/lead-qualification/scripts/enrich_leads.py - Falls back to inline implementation if import fails
- Requires:
requests(Python package),APIFY_API_TOKEN(env var)
| 1 | |
| 2 | name champion-tracker |
| 3 | description > |
| 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. |
| 9 | tags [lead-generation] |
| 10 | |
| 11 | |
| 12 | # Champion Tracker |
| 13 | |
| 14 | Detect 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 | |
| 26 | Build the initial champion list from public sources. This is done by the agent, not the script. |
| 27 | |
| 28 | **Scrape reviews** — Use `review-site-scraper` skill to pull G2/Trustpilot reviews. Extract reviewer names + companies. |
| 29 | **Search LinkedIn posts** — Use the `linkedin-post-research` skill (Apify-based) to find people who posted about the product. |
| 30 | **Resolve LinkedIn URLs** — Use Fiber `/v1/kitchen-sink/person` (name + company → profile URL) or ContactOut via Orthogonal. |
| 31 | **Compile CSV** — Merge all sources into `champions.csv` with required columns. |
| 32 | |
| 33 | ### Phase B: Track Job Changes (script-driven, repeatable) |
| 34 | |
| 35 | Use `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 | |
| 48 | # Dry run — see cost estimate |
| 49 | python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv --dry-run |
| 50 | |
| 51 | # Create baseline |
| 52 | python3 skills/champion-tracker/scripts/champion_tracker.py init -i champions.csv |
| 53 | |
| 54 | |
| 55 | **Check for job changes** (subsequent runs): |
| 56 | |
| 57 | # Dry run |
| 58 | python3 skills/champion-tracker/scripts/champion_tracker.py check --dry-run |
| 59 | |
| 60 | # Detect changes and output CSV |
| 61 | python3 skills/champion-tracker/scripts/champion_tracker.py check -o changes.csv |
| 62 | |
| 63 | |
| 64 | **View status**: |
| 65 | |
| 66 | python3 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 | |
| 108 | skills/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 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 205 listings
Similar skills
See all →
SkillAI Sales Team Orchestrator
SkillCold Email Automation
SkillABM Campaign Playbook
SkillDecision-Maker Shortlist
SkillAccount Fit Scorer
SkillApollo Hyper OrchestratorMore from gooseworks-ai
SkillAd Angle Miner
SkillAd Campaign Analyzer
SkillLead Quality Analyzer
SkillMessage Match Auditor
SkillAI Search Visibility
SkillAmazon Product Search