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.
npx gooseworks install --claude # Then in your agent: /gooseworks <prompt> --skill champion-tracker
Detect when product champions change jobs and qualify their new companies against ICP.
Build the initial champion list from public sources. This is done by the agent, not the script.
review-site-scraper skill to pull G2/Trustpilot reviews. Extract reviewer names + companies.linkedin-post-research skill (Apify-based) to find people who posted about the product./v1/kitchen-sink/person (name + company → profile URL) or ContactOut via Orthogonal.champions.csv with required columns.Use champion_tracker.py for ongoing tracking.
APIFY_API_TOKEN in .env (for LinkedIn profile enrichment)name, linkedin_url (required); original_company, original_title, email, source, notes (optional)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.csvCheck 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.csvView status:
python3 skills/champion-tracker/scripts/champion_tracker.py status| 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 |
| 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)
--dry-run always shows cost before any API callsskills/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 outputLinkedInEnricher from skills/lead-qualification/scripts/enrich_leads.pyrequests (Python package), APIFY_API_TOKEN (env var)APIFY_API_TOKEN in .env (for LinkedIn profile enrichment)name, linkedin_url (required); original_company, original_title, email, source, notes (optional)Diagnose Meta Ads campaign performance using Meta's actual system mechanics — Breakdown Effect, Learning Phase, Auction Overlap, Pacing, and Creative Fatigue — and produce structured, testable recommendations that avoid judging segments by average CPA instead of marginal efficiency.
Pre-flight policy check for Meta ads. Takes ad copy plus advertiser context, resolves and fetches the relevant Meta transparency-center policy pages at runtime, and returns a Pass / Fix Required / Block verdict with cited findings and rewrites.
For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.