Goose-skills champion-tracker

install
source · Clone the upstream repo
git clone https://github.com/gooseworks-ai/goose-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/gooseworks-ai/goose-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/capabilities/champion-tracker" ~/.claude/skills/gooseworks-ai-goose-skills-champion-tracker && rm -rf "$T"
manifest: skills/capabilities/champion-tracker/SKILL.md
source content

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 Crustdata MCP to find people who posted about the product.
  3. Resolve LinkedIn URLs — Use Crustdata MCP to search by name + company → get profile URLs.
  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

ColumnDescription
champion_nameFull name
linkedin_urlLinkedIn profile URL
previous_companyCompany at baseline
previous_titleTitle at baseline
new_companyCurrent company (changed)
new_titleCurrent title
change_detected_dateDate this check was run
position_start_dateWhen they started the new role
days_since_changeDays since new position started
icp_score0-4 ICP qualification score
icp_verdictStrong Fit / Good Fit / Possible Fit / Weak Fit
icp_notesScoring breakdown
emailEmail if available
notesOriginal notes from champion CSV

ICP Scoring (0-4)

SignalPointsWhat it checks
B2B signal1.0Title contains sales/SDR/revenue/growth keywords
Outbound motion1.0Sales leadership title (VP Sales, Head of Growth, etc.)
Company size1.0 / 0.5SMB/mid-market = 1.0; unknown = 0.5 benefit-of-doubt
Seniority1.0VP, 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)