Skip to content
Back to skills

Champion Tracker

ASecurity

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.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
content-marketingpythonrustgobashapi

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned May 29, 2026

npx -y skills add levalencia/agent-god-mode --skill champion-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Champion Tracker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Champion Tracker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/levalencia-champion-tracker/badge)](https://www.skillsdirectory.com/skills/levalencia-champion-tracker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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)
- 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-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):
```bash
# 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):
```bash
# 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**:
```bash
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)

Files in this skill

  • SKILL.md4.3 KB
  • input/champions.csv1 KB
  • input/champions_template.csv69 B
  • scripts/champion_tracker.py33.6 KB
  • skill.meta.json262 B
  • snapshots/baseline.json2.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.