List Building
Overview
A qualified prospect list is the foundation of every outbound motion. Build
it wrong and everything downstream fails — enrichment misses, verification
flags half the list, and reps waste time on accounts that were never going
to buy.
This skill covers building clean, qualified lists from multiple sources,
applying ICP filters early (before expensive enrichment), and maintaining
list hygiene. The core principle: qualify first, enrich deep later. Filtering
out non-fits before running enrichment cuts costs by 30-40%.
When to Use
- "Build a list of VP Sales at Series B SaaS companies"
- "Find target accounts in the fintech space"
- "Create a prospect list from this conference attendee file"
- "Scrape local businesses from Google Maps for SMB outreach"
- "Build a target account list for our ABM campaign"
Authoritative Foundations
List building follows the Ziellab framework: filter first, enrich second.
For phone-led outbound, add Joey Gilkey Phone Intent scoring after ICP
filter — prioritize P1 contacts before expensive rep time. Pair pain-based
segments (Jordan Crawford PQS) with disposition-driven list iteration
(Gilkey Disposition Science). → references/joey-gilkey-bucketing.md
Clay's native table architecture supports this naturally — company enrichment
runs first, ICP filters gate the contact enrichment, and only qualified
accounts proceed to email and phone waterfalls.
Prerequisites
- ICP defined (use icp-scoring first if not yet defined)
- Source data: can start from a domain list, LinkedIn Sales Nav export,
conference attendee list, Google Maps scrape, or industry directory
- Access to Clay or equivalent enrichment platform
Step-by-Step Process
Phase 1: Source Selection
Choose sources based on the target segment:
| Source |
Best For |
Data Quality |
| LinkedIn Sales Nav |
B2B, any industry |
High — verified profiles |
| Apollo Search |
US B2B, all sizes |
High — 270M+ contacts |
| Claygent web search |
Founders, execs, niche |
Medium — web-sourced |
| Google Maps scrape |
Local SMB |
Medium — needs enrichment |
| Conference speaker lists |
Industry leaders |
Very high — curated |
| Crunchbase |
Funded startups |
High — funding-verified |
| GitHub |
Dev tools, tech |
High — public activity |
| Job boards (Lever, Greenhouse) |
Growing companies |
High — active hiring signal |
Phase 2: Company-Level Enrichment
Before finding contacts, enrich company data:
- Import domains into Clay
- Run company enrichment (Clay native or Clearbit)
- Apply ICP filters: company size, industry, geography, funding stage
- Only companies passing ICP filters proceed to contact finding
This gate typically removes 40-60% of the initial list — those credits
are saved on contact enrichment.
Phase 3: Contact Discovery
For qualified companies, find relevant contacts:
- Define target titles and seniority
- Run people search (Apollo, Clay People, or LeadMagic People Search)
- Filter by title match and seniority
- Target 2-5 contacts per account for multi-threading
Phase 4: List Quality Scorecard
Grade every list across 8 dimensions before uploading to a sequencer:
| Dimension |
Pass Criteria |
| Domain validity |
All domains resolve |
| ICP fit |
80%+ match defined ICP |
| Title relevance |
70%+ match target titles |
| Email coverage |
85%+ have verified email |
| Email verification |
98%+ verified valid |
| Duplicate rate |
Under 3% |
| Geographic fit |
90%+ in target regions |
| Company size fit |
80%+ in target range |
Lists scoring below 70% across dimensions should be reworked before sending.
Output Format
Deliver a CSV with:
- Company domain, company name, industry, employee count
- Contact name, title, email, email verification status
- LinkedIn URL, source attribution
- ICP score and tier
Quality Check
Common Pitfalls
Enriching before filtering. Running $0.15-0.40/contact enrichment on
records that fail ICP wastes 30-40% of budget. Filter first always.
One giant table. Combining company and person data in a single table
creates duplication and makes re-enrichment impossible. Separate tables
with domain as the join key.
No list quality baseline. Sending to an unscored list means you can't
diagnose why reply rates are low. Score every list before launch.
Stale data acceptance. A list built 6 months ago has 12-18% decay.
Re-verify and re-enrich before launching any campaign on old data.
Single-source dependency. One source never covers your full TAM.
Cross-reference at least two sources and reconcile differences.
Execution Artifacts
references/framework-notes.md — Named frameworks and reference tables
templates/output-template.md — Deliverable shell for agent output
scripts/check-output.py — Lightweight deliverable validator
references/cold-calling-experts-index.md — Phone Intent + bucketing router (repo root)
references/joey-gilkey-bucketing.md — Phone Intent + disposition list diagnostics (repo root)
../../outbound/cold-email-strategy/references/jordan-crawford-blueprint-gtm.md — PQS pain-based segments
Related Skills
- icp-scoring: Define the ICP criteria this skill filters against
- lead-finding: Find individual contacts at target companies
- lead-enrichment: Enrich contacts after list is built
- clay-automation: Full Clay workflow for automated list building
- sales-navigator-prospecting: Morgan Ingram filter-specific Sales Nav workflow after list criteria are set
1---2name: list-building3description: Build qualified B2B prospect lists using Clay, LinkedIn Sales Navigator, and multi-source discovery. Use when the user wants to build a prospect list, create a target account list, find companies matching an ICP, scrape lead sources, or compile a list for outbound. Triggers on: "build a list", "prospect list", "target accounts", "find companies", "scrape leads", "list building", "who should we reach out to", or any request to compile prospect data.4license: MIT5---67# List Building89## Overview1011A qualified prospect list is the foundation of every outbound motion. Build12it wrong and everything downstream fails — enrichment misses, verification13flags half the list, and reps waste time on accounts that were never going14to buy.1516This skill covers building clean, qualified lists from multiple sources,17applying ICP filters early (before expensive enrichment), and maintaining18list hygiene. The core principle: qualify first, enrich deep later. Filtering19out non-fits before running enrichment cuts costs by 30-40%.2021## When to Use2223- "Build a list of VP Sales at Series B SaaS companies"24- "Find target accounts in the fintech space"25- "Create a prospect list from this conference attendee file"26- "Scrape local businesses from Google Maps for SMB outreach"27- "Build a target account list for our ABM campaign"2829## Authoritative Foundations3031List building follows the Ziellab framework: filter first, enrich second.32For **phone-led** outbound, add Joey Gilkey **Phone Intent** scoring after ICP33filter — prioritize P1 contacts before expensive rep time. Pair pain-based34segments (Jordan Crawford PQS) with disposition-driven list iteration35(Gilkey Disposition Science). → `references/joey-gilkey-bucketing.md`3637Clay's native table architecture supports this naturally — company enrichment38runs first, ICP filters gate the contact enrichment, and only qualified39accounts proceed to email and phone waterfalls.4041## Prerequisites4243- ICP defined (use icp-scoring first if not yet defined)44- Source data: can start from a domain list, LinkedIn Sales Nav export,45 conference attendee list, Google Maps scrape, or industry directory46- Access to Clay or equivalent enrichment platform4748## Step-by-Step Process4950### Phase 1: Source Selection5152Choose sources based on the target segment:5354| Source | Best For | Data Quality |55|---|---|---|56| LinkedIn Sales Nav | B2B, any industry | High — verified profiles |57| Apollo Search | US B2B, all sizes | High — 270M+ contacts |58| Claygent web search | Founders, execs, niche | Medium — web-sourced |59| Google Maps scrape | Local SMB | Medium — needs enrichment |60| Conference speaker lists | Industry leaders | Very high — curated |61| Crunchbase | Funded startups | High — funding-verified |62| GitHub | Dev tools, tech | High — public activity |63| Job boards (Lever, Greenhouse) | Growing companies | High — active hiring signal |6465### Phase 2: Company-Level Enrichment6667Before finding contacts, enrich company data:68691. Import domains into Clay702. Run company enrichment (Clay native or Clearbit)713. Apply ICP filters: company size, industry, geography, funding stage724. Only companies passing ICP filters proceed to contact finding7374This gate typically removes 40-60% of the initial list — those credits75are saved on contact enrichment.7677### Phase 3: Contact Discovery7879For qualified companies, find relevant contacts:80811. Define target titles and seniority822. Run people search (Apollo, Clay People, or LeadMagic People Search)833. Filter by title match and seniority844. Target 2-5 contacts per account for multi-threading8586### Phase 4: List Quality Scorecard8788Grade every list across 8 dimensions before uploading to a sequencer:8990| Dimension | Pass Criteria |91|---|---|92| Domain validity | All domains resolve |93| ICP fit | 80%+ match defined ICP |94| Title relevance | 70%+ match target titles |95| Email coverage | 85%+ have verified email |96| Email verification | 98%+ verified valid |97| Duplicate rate | Under 3% |98| Geographic fit | 90%+ in target regions |99| Company size fit | 80%+ in target range |100101Lists scoring below 70% across dimensions should be reworked before sending.102103## Output Format104105Deliver a CSV with:106- Company domain, company name, industry, employee count107- Contact name, title, email, email verification status108- LinkedIn URL, source attribution109- ICP score and tier110111## Quality Check112113- [ ] ICP filters applied before contact enrichment114- [ ] All emails verified (verification status column populated)115- [ ] Duplicates removed (match on email + company)116- [ ] List quality scorecard completed117- [ ] Companies source-attributed118- [ ] Separate company and person tables maintained (not merged)119120## Common Pitfalls1211221. **Enriching before filtering.** Running $0.15-0.40/contact enrichment on123 records that fail ICP wastes 30-40% of budget. Filter first always.1241252. **One giant table.** Combining company and person data in a single table126 creates duplication and makes re-enrichment impossible. Separate tables127 with domain as the join key.1281293. **No list quality baseline.** Sending to an unscored list means you can't130 diagnose why reply rates are low. Score every list before launch.1311324. **Stale data acceptance.** A list built 6 months ago has 12-18% decay.133 Re-verify and re-enrich before launching any campaign on old data.1341355. **Single-source dependency.** One source never covers your full TAM.136 Cross-reference at least two sources and reconcile differences.137138## Execution Artifacts139140- `references/framework-notes.md` — Named frameworks and reference tables141- `templates/output-template.md` — Deliverable shell for agent output142- `scripts/check-output.py` — Lightweight deliverable validator143- `references/cold-calling-experts-index.md` — Phone Intent + bucketing router (repo root)144- `references/joey-gilkey-bucketing.md` — Phone Intent + disposition list diagnostics (repo root)145- `../../outbound/cold-email-strategy/references/jordan-crawford-blueprint-gtm.md` — PQS pain-based segments146147## Related Skills148149- **icp-scoring**: Define the ICP criteria this skill filters against150- **lead-finding**: Find individual contacts at target companies151- **lead-enrichment**: Enrich contacts after list is built152- **clay-automation**: Full Clay workflow for automated list building153- **sales-navigator-prospecting**: Morgan Ingram filter-specific Sales Nav workflow after list criteria are set