Find the Buying Committee
Outcome: a person table covering the buying committee at each qualified account, with a measured coverage rate and a per-account contact cap.
- Surface
- App and MCP server
- Level
- Intermediate
- Uses
- find_people_within_company · headcount_by_department
- Credits
- ~0.3 per person found
- Prerequisite
- Lesson 05's qualified accounts
Map roles, not titles
A B2B purchase involves several people, and they are defined by what they do in the decision, not by what their card says.
| Role in the decision | What they need | Typical seniority |
|---|---|---|
| User / practitioner | Does the work your product changes | IC to manager |
| Champion | Feels the pain, will argue internally | Manager to director |
| Economic buyer | Signs. Cares about outcome, not features | Director to C-level |
| Technical evaluator | Security, integration, data | Varies — often outside your function |
| Blocker | Owns the incumbent, or the risk | Anywhere |
Write down which roles matter for your sale before you configure any search. Most teams need the champion and the economic buyer; some need the technical evaluator; almost nobody needs all five in a first touch.
Function plus seniority beats a title list
Titles are not portable across company sizes. “Head of Growth” at 60 people and at 6,000 are different jobs, and a title list built from one segment misses the other entirely.
Filter on function
The department that owns the problem.
Add a seniority band
Per role: practitioner for users, director-and-above for champions, VP-and-above for economic buyers.
Add title keywords last
Only to narrow when function plus seniority returns too many. Never as the primary filter.
Reference: find_people_within_company.
How many per account
| Company size | Contacts | Roles to cover |
|---|---|---|
| Under 50 | 1 | Founder or the single functional lead |
| 50–200 | 2 | Champion and economic buyer |
| 200–1,000 | 2–3 | Practitioner, champion, sometimes the buyer |
| 1,000+ | 3 | And expect to need account research to find the right business unit |
Contacting five people at a 60-person company in the same week is noticed, and they will compare notes. Cap contacts by company size, and cap sequenced contacts lower than sourced contacts — sourcing three and sequencing two is a reasonable pattern.
Measure coverage
The number that matters is not how many people you found. It is what fraction of qualified accounts returned at least one usable contact.
| Coverage | Reading | Action |
|---|---|---|
| Above 85% | Healthy | Nothing |
| 70–85% | Normal for a broad list | Check the misses for a pattern |
| Under 70% | Filter too tight, or a segment with thin coverage | Widen seniority before blaming data |
Look at the accounts that returned nothing as a group. If they cluster by size, country or industry, you have found a systematic gap — and that is a targeting decision, not a data failure.
headcount_by_department is useful here: an account with a department headcount above zero but no people returned is a search-filter problem, not an absence.
Build it as the second table
Person grain, keyed on LinkedIn profile URL, carrying the company domain so it joins back to the account table.
Carry across only the account fields you will actually use — domain, company name, score, and the one or two evidence fields for personalization. Copying twenty account columns onto every person row makes the table unreadable and helps nothing.
Do this now
Write your committee map
Which roles matter for your sale, and the function plus seniority for each.
Run on five accounts
Read every person returned. Are they plausibly the right people?
Check the miss pattern
Any account returning nothing — is it a filter problem or genuine absence?
Widen seniority if coverage is low
Before adding titles or blaming the provider.
Run across qualified accounts with a cap
Per company size.
Create the person table
Person grain, LinkedIn URL key, domain carried across.
Compute coverage
Accounts with at least one contact ÷ qualified accounts.
Check your work
- You have a written committee map, by role
- Search filters on function plus seniority, not a title list
- Contact count is capped by company size
- Coverage rate computed and misses inspected for a pattern
- Person table keyed on LinkedIn URL, carrying the domain
Where this breaks
A narrow title filter produces a small, clean list with an invisible hole: accounts where nobody holds that exact title return nothing and drop out of the pipeline without registering as a failure. The qualified account count and the covered account count are different numbers, and if you only ever look at the first, you will not notice that a third of your market silently has no contacts.
Further automation
Committee coverage decays as people move. Re-checking current role quarterly — or, more cheaply, running a job-change check and re-enriching only the people who moved — keeps the map current for a fraction of the cost of rebuilding it. Job Changes & Champions covers the mechanics, and the movers are leads in their own right.
Next lesson
07 — Build an account scoring engine, turning everything you have collected into one prioritized queue.
Reference for this lesson: find_people_within_company, headcount_by_department, Person, Current role.