CtrlK
BlogDocsLog inGet started
Tessl Logo

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. Scores new companies on a 0-4 ICP fit scale. Outputs a downloadable CSV of movers with qualification verdicts.

68

Quality

83%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

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

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)
Repository
gooseworks-ai/goose-skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.