Champion Move Outreach
Tracks known buyers, champions, and power users for job changes. When someone who already knows your product moves to a new company, that's the highest-conversion outbound signal in B2B — they already trust you, they're in a new role trying to make an impact, and they have firsthand experience with what your product delivers.
Why this is the #1 signal: Every other signal (funding, hiring, leadership change) targets strangers. This targets people who already know, like, and trust your product. Conversion rates on champion-move outreach are 3-5x higher than cold outreach because:
- They don't need to be educated on what you do
- They have a positive experience to anchor on
- They want quick wins at the new company (bringing in a tool they trust IS a quick win)
- They can internally champion the deal because they have firsthand results to cite
When to Auto-Load
Load this composite when:
- User says "track my champions", "check for job changes", "who moved from our customer accounts", "champion tracking"
- User has a list of past buyers/users and wants to know if anyone changed jobs
- An upstream workflow (TAM Pulse) triggers a champion change check
Step 0: Configuration (One-Time Setup)
On first run for a client/user, collect and store these preferences. Skip on subsequent runs.
People to Track
| Question | Purpose | Stored As | |----------|---------|-----------| | Where does your list of people to track come from? | Defines the input source | people_source | | What categories of people are you tracking? | Determines outreach tone per person | tracked_categories |
People source options:
- CRM export (Salesforce, HubSpot) — pull closed-won contacts, active users, power users
- CSV file — manually curated list
- Supabase
peopletable — filter bylead_status = 'customer'or similar - Manual list — names + LinkedIn URLs
Tracked categories:
| Category | Who They Are | Why They Matter | Stored As | |----------|-------------|-----------------|-----------| | Past buyers | Signed the contract at their previous company | Can sign again. Know the ROI. Can articulate value to new leadership. | past_buyers | | Past champions | Advocated for your product internally, drove adoption | Will champion again. Often have stronger conviction than the original buyer. | past_champions | | Power users | Used your product daily, know it deeply | Can demonstrate value hands-on. Often become the internal expert at the new company. | power_users | | Lost deal contacts | Evaluated your product but chose a competitor or no decision | Weaker signal but still valid — they know you exist. New company = fresh start. | lost_deal_contacts |
ICP Definition (for qualifying the new company)
| Question | Purpose | Stored As | |----------|---------|-----------| | What industries do you sell to? | Filter out non-ICP companies | target_industries | | What company sizes? (employee count ranges) | Filter out too-small or too-large | target_company_size | | What geographies? | Filter if relevant | target_geographies | | Any disqualifiers? (e.g., government, non-profit, specific verticals) | Hard no's | disqualifiers | | What's the minimum viable deal? | Don't chase companies too small to pay | minimum_deal_size |
Signal Detection Config
| Question | Options | Stored As | |----------|---------|-----------| | How should we detect job changes? | LinkedIn profile monitoring / Apollo job change data / Web search / Manual check | detection_tool | | How often should we check? | Weekly / Biweekly / Monthly | check_frequency |
Outreach Config
| Question | Options | Stored As | |----------|---------|-----------| | Where do you want outreach sent? | Smartlead / Instantly / Outreach.io / CSV export | outreach_tool | | Email or multi-channel? | Email only / Email + LinkedIn | outreach_channels |
Your Company Context
| Question | Purpose | Stored As | |----------|---------|-----------| | What does your company do? (1-2 sentences) | New company research context | company_description | | What results did customers typically see? | Proof points for outreach | customer_results | | Any specific results from the tracked person's previous company? | Strongest possible proof | specific_results |
Store config in: clients/<client-name>/config/signal-outreach.json or equivalent.
Step 1: Detect Job Changes
Purpose: For each person in the tracking list, determine if they've moved to a new company.
Input Contract
tracked_people: [
{
full_name: string # Required
linkedin_url: string # Strongly recommended (most reliable for matching)
email: string | null # Previous email (will be outdated after move)
last_known_company: string # The company they were at when you knew them
last_known_title: string # Their title when you knew them
category: "past_buyer" | "past_champion" | "power_user" | "lost_deal_contact"
relationship_context: string | null # e.g. "Signed $50K deal in 2025", "Led implementation"
}
]
Process
For each person, use the configured detection_tool:
- Check current position against
last_known_company: - LinkedIn: Visit profile (or use scraping tool) → compare current company to
last_known_company - Apollo: People search by name + LinkedIn URL → check current employer
- Web search:
"{full_name}" AND ("{last_known_company}" OR "joined" OR "new role")— look for announcements - Any other tool: Must return the same output contract
- For each person, determine:
- Are they still at the same company? → No signal, skip.
- Have they moved? → Signal detected. Capture new company + new title.
- Has their profile gone dark (no updates, no activity)? → Flag for manual check.
- For each mover, extract:
- New company name
- New title
- Approximate start date at new company
- New company domain (for research in Step 2)
- Was this a promotion (higher title) or lateral move?
Output Contract
movers: [
{
person: {
full_name: string
linkedin_url: string
category: string # "past_buyer", "past_champion", etc.
relationship_context: string
previous_company: string
previous_title: string
}
move: {
new_company: string
new_company_domain: string
new_title: string
start_date: string # ISO date or approximate
days_in_new_role: integer
is_promotion: boolean # Higher title than before?
}
}
]
no_change: [
{ full_name: string, still_at: string }
]
unable_to_verify: [
{ full_name: string, reason: string } # Profile private, no data, etc.
]
Human Checkpoint
## Job Change Detection Results
Tracked: X people
Moved: Y people
No change: Z people
Unable to verify: W people
### People Who Moved
| Name | Category | Was At | Now At | New Title | Days In |
|------|----------|--------|--------|-----------|---------|
| Jane Doe | Past buyer | Acme Corp | NewCo Inc | VP Sales | 45 days |
| Bob Lee | Power user | Beta LLC | StartupX | Sales Manager | 12 days |
| ... | ... | ... | ... | ... | ... |
### Unable to Verify
| Name | Reason |
|------|--------|
| Sam Chen | LinkedIn profile set to private |
Proceed to research their new companies? (Y/n)
Step 2: Research New Company & Qualify Against ICP
Purpose: For each mover, research their new company and determine if it's a fit for your product. This is the critical gate — just because someone you know moved doesn't mean their new company is a prospect.
Input Contract
movers: [...] # From Step 1 output
icp_criteria: {
target_industries: string[]
target_company_size: string # e.g. "50-500 employees"
target_geographies: string[]
disqualifiers: strin