Skip to Content
CoursesJob Changes & Champions02 Build the champion list

Build the Champion List

Outcome: one tracked table holding three deduplicated populations, each row carrying the LinkedIn profile URL that detection depends on.

Surface
App and MCP server
Level
Intermediate
Uses
Import · linkedin_profile_enrich
Credits
~1 per champion
Prerequisite
CRM access with closed-won and closed-lost history

What to export

Three exports, from data you already have.

Past customers

Closed-won accounts, last three years. Every named contact who used or bought the product — not just the signatory.

Fields: name, email, company, title at the time, close date.

Past champions who lost

Closed-lost opportunities, same period. For each, the one individual who advocated internally — not the whole contact list on the opportunity.

Fields: same, plus the loss reason. The reason matters in lesson 06.

Past evaluators

Demo attendees, trial signups, opportunities that stalled without a decision.

Fields: same, plus what they evaluated and when.

The lost-champion list is usually several times larger than the customer list and converts well enough to justify the same weekly check. Teams that track only past customers leave most of this play’s value unclaimed.


Resolve the profile URL

Detection keys on the LinkedIn profile URL. Without it, a row cannot be checked.

You haveRoute
Profile URL alreadyNormalize it — lowercase, strip query and trailing slash
Work email at the old companyfind_linkedin_from_work_email
Name + old companyProfile lookup by name and company
Only a personal emailfind_linkedin_from_personal_email

Expect 60–80% resolution from a work email. Rows that will not resolve cannot be tracked — record them as untrackable rather than leaving them to fail silently every week.


One table, three populations

Do not build three tables. Build one, with a population column.

population past_customer | blocked_champion | past_evaluator linkedin_url the match key name, old_company, old_title relationship_date the close, loss or demo date loss_reason for blocked champions tracked true | false — untrackable rows excluded from the weekly run

One table means one weekly check, one dedupe, one cost line. The population column is what routes the message in lesson 06.


Deduplicate across populations

People appear in more than one list — a past evaluator who later became a customer, a champion at two different companies.

  • Dedupe on normalized LinkedIn URL, never on name.
  • Where someone appears twice, keep the strongest population: customer beats blocked champion beats evaluator.
  • Keep the earlier relationship date as context; the strongest relationship is what decides the message.

Enrich the current state once

Before tracking begins, establish the baseline: run linkedin_profile_enrich across the list to capture where everyone is now.

This matters because some of them have already moved, and you will not know which unless you have a baseline. Expect to find movers immediately — those are your first batch of leads, and they justify the enrichment cost on their own.


Do this now

Export the three lists from your CRM

Named individuals, not accounts.

Identify the single advocate per lost opportunity

Not the whole contact list.

Resolve profile URLs

Record unresolvable rows as untrackable.

Merge into one table with a population column

Deduplicate on normalized profile URL

Strongest population wins.

Enrich current state as the baseline

Count the movers you already have

Those are workable today.

Count the trackable population

That number is your weekly detection cost.


Check your work

  • One table, three populations, one row per person
  • Every tracked row has a normalized LinkedIn URL
  • Untrackable rows are flagged rather than silently failing
  • Deduplication used profile URL, not name
  • You have a baseline of current company and title for everyone

Where this breaks

Exporting every contact on a closed-lost opportunity rather than the one advocate inflates the list with people who never cared — assistants, procurement, someone copied on a thread. They dilute your conversion rate, cost the same to track weekly, and receiving a warm “we worked together” message will confuse them. One named advocate per opportunity, chosen deliberately.


Further automation

Keep the list growing automatically: every new closed-won, closed-lost and completed demo should add its advocate to the tracked table. A champion list built once and never appended is worth less every quarter, and the append is a small CRM sync rather than a project.


Next lesson

03 — Detect the move, running the weekly check across the population you just built.

Reference for this lesson: linkedin_profile_enrich, find_linkedin_from_work_email, CRM integrations, Import.