List building skill

Build qualified B2B prospect lists using Clay, LinkedIn Sales Navigator, and multi-source discovery.

by LeadMagic·MIT license·★ 62 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# 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

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of List building

LeadMagic/main1 file shown
SKILL.md
Show the full text173 lines

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:

  1. Import domains into Clay
  2. Run company enrichment (Clay native or Clearbit)
  3. Apply ICP filters: company size, industry, geography, funding stage
  4. 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:

  1. Define target titles and seniority
  2. Run people search (Apollo, Clay People, or LeadMagic People Search)
  3. Filter by title match and seniority
  4. 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

  • ICP filters applied before contact enrichment
  • All emails verified (verification status column populated)
  • Duplicates removed (match on email + company)
  • List quality scorecard completed
  • Companies source-attributed
  • Separate company and person tables maintained (not merged)

Common Pitfalls

  1. Enriching before filtering. Running $0.15-0.40/contact enrichment on records that fail ICP wastes 30-40% of budget. Filter first always.

  2. 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.

  3. No list quality baseline. Sending to an unscored list means you can't diagnose why reply rates are low. Score every list before launch.

  4. 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.

  5. 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
  • references/joey-gilkey-bucketing.md — Phone Intent + disposition list diagnostics
  • references/jordan-crawford-blueprint-gtm.md — PQS pain-based segments
  • 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-building
3description: >-
4 Build qualified B2B prospect lists using Clay, LinkedIn Sales Navigator, and
5 multi-source discovery. Use when the user wants to build a prospect list,
6 create a target account list, find companies matching an ICP, scrape lead
7 sources, or compile a list for outbound. Triggers on: "build a list", "prospect
8 list", "target accounts", "find companies", "scrape leads", "list building",
9 "who should we reach out to", or any request to compile prospect data.
10license: MIT
11compatibility: Claude Code, Codex, GitHub Copilot, Cursor, Gemini CLI, OpenCode, Goose, Hermes, Windsurf, Zed
12metadata:
13 version: "1.0.0"
14 author: LeadMagic
15 category: prospecting
16 tags: [list-building, prospecting, clay, leads, targeting]
17 related_skills: [icp-scoring, lead-finding, lead-enrichment, clay-automation, sales-navigator-prospecting]
18 frameworks:
19 - "Clay Waterfall Architecture"
20 - "Ziellab Lead Quality Framework"
21 - "Aaron Ross — Predictable Revenue"
22 - "Jordan Crawford — Pain-Qualified Segments (PQS)"
23 - "Joey Gilkey — Phone Intent & Disposition Science (list prioritization)"
24---
25 
26# List Building
27 
28## Overview
29 
30A qualified prospect list is the foundation of every outbound motion. Build
31it wrong and everything downstream fails — enrichment misses, verification
32flags half the list, and reps waste time on accounts that were never going
33to buy.
34 
35This skill covers building clean, qualified lists from multiple sources,
36applying ICP filters early (before expensive enrichment), and maintaining
37list hygiene. The core principle: qualify first, enrich deep later. Filtering
38out non-fits before running enrichment cuts costs by 30-40%.
39 
40## When to Use
41 
42- "Build a list of VP Sales at Series B SaaS companies"
43- "Find target accounts in the fintech space"
44- "Create a prospect list from this conference attendee file"
45- "Scrape local businesses from Google Maps for SMB outreach"
46- "Build a target account list for our ABM campaign"
47 
48## Authoritative Foundations
49 
50List building follows the Ziellab framework: filter first, enrich second.
51For **phone-led** outbound, add Joey Gilkey **Phone Intent** scoring after ICP
52filter — prioritize P1 contacts before expensive rep time. Pair pain-based
53segments (Jordan Crawford PQS) with disposition-driven list iteration
54(Gilkey Disposition Science). → `references/joey-gilkey-bucketing.md`
55 
56Clay's native table architecture supports this naturally — company enrichment
57runs first, ICP filters gate the contact enrichment, and only qualified
58accounts proceed to email and phone waterfalls.
59 
60## Prerequisites
61 
62- ICP defined (use icp-scoring first if not yet defined)
63- Source data: can start from a domain list, LinkedIn Sales Nav export,
64 conference attendee list, Google Maps scrape, or industry directory
65- Access to Clay or equivalent enrichment platform
66 
67## Step-by-Step Process
68 
69### Phase 1: Source Selection
70 
71Choose sources based on the target segment:
72 
73| Source | Best For | Data Quality |
74|---|---|---|
75| LinkedIn Sales Nav | B2B, any industry | High — verified profiles |
76| Apollo Search | US B2B, all sizes | High — 270M+ contacts |
77| Claygent web search | Founders, execs, niche | Medium — web-sourced |
78| Google Maps scrape | Local SMB | Medium — needs enrichment |
79| Conference speaker lists | Industry leaders | Very high — curated |
80| Crunchbase | Funded startups | High — funding-verified |
81| GitHub | Dev tools, tech | High — public activity |
82| Job boards (Lever, Greenhouse) | Growing companies | High — active hiring signal |
83 
84### Phase 2: Company-Level Enrichment
85 
86Before finding contacts, enrich company data:
87 
881. Import domains into Clay
892. Run company enrichment (Clay native or Clearbit)
903. Apply ICP filters: company size, industry, geography, funding stage
914. Only companies passing ICP filters proceed to contact finding
92 
93This gate typically removes 40-60% of the initial list — those credits
94are saved on contact enrichment.
95 
96### Phase 3: Contact Discovery
97 
98For qualified companies, find relevant contacts:
99 
1001. Define target titles and seniority
1012. Run people search (Apollo, Clay People, or LeadMagic People Search)
1023. Filter by title match and seniority
1034. Target 2-5 contacts per account for multi-threading
104 
105### Phase 4: List Quality Scorecard
106 
107Grade every list across 8 dimensions before uploading to a sequencer:
108 
109| Dimension | Pass Criteria |
110|---|---|
111| Domain validity | All domains resolve |
112| ICP fit | 80%+ match defined ICP |
113| Title relevance | 70%+ match target titles |
114| Email coverage | 85%+ have verified email |
115| Email verification | 98%+ verified valid |
116| Duplicate rate | Under 3% |
117| Geographic fit | 90%+ in target regions |
118| Company size fit | 80%+ in target range |
119 
120Lists scoring below 70% across dimensions should be reworked before sending.
121 
122## Output Format
123 
124Deliver a CSV with:
125- Company domain, company name, industry, employee count
126- Contact name, title, email, email verification status
127- LinkedIn URL, source attribution
128- ICP score and tier
129 
130## Quality Check
131 
132- [ ] ICP filters applied before contact enrichment
133- [ ] All emails verified (verification status column populated)
134- [ ] Duplicates removed (match on email + company)
135- [ ] List quality scorecard completed
136- [ ] Companies source-attributed
137- [ ] Separate company and person tables maintained (not merged)
138 
139## Common Pitfalls
140 
1411. **Enriching before filtering.** Running $0.15-0.40/contact enrichment on
142 records that fail ICP wastes 30-40% of budget. Filter first always.
143 
1442. **One giant table.** Combining company and person data in a single table
145 creates duplication and makes re-enrichment impossible. Separate tables
146 with domain as the join key.
147 
1483. **No list quality baseline.** Sending to an unscored list means you can't
149 diagnose why reply rates are low. Score every list before launch.
150 
1514. **Stale data acceptance.** A list built 6 months ago has 12-18% decay.
152 Re-verify and re-enrich before launching any campaign on old data.
153 
1545. **Single-source dependency.** One source never covers your full TAM.
155 Cross-reference at least two sources and reconcile differences.
156 
157## Execution Artifacts
158 
159- `references/framework-notes.md` — Named frameworks and reference tables
160- `templates/output-template.md` — Deliverable shell for agent output
161- `scripts/check-output.py` — Lightweight deliverable validator
162- `references/cold-calling-experts-index.md` — Phone Intent + bucketing router
163- `references/joey-gilkey-bucketing.md` — Phone Intent + disposition list diagnostics
164- `references/jordan-crawford-blueprint-gtm.md` — PQS pain-based segments
165 
166## Related Skills
167 
168- **icp-scoring**: Define the ICP criteria this skill filters against
169- **lead-finding**: Find individual contacts at target companies
170- **lead-enrichment**: Enrich contacts after list is built
171- **clay-automation**: Full Clay workflow for automated list building
172- **sales-navigator-prospecting**: Morgan Ingram filter-specific Sales Nav workflow after list criteria are set
173 

Discussion

Alternatives

AI Sales Team — Main OrchestratorYou are a comprehensive AI sales intelligence and outreach system for Claude Code. You help founders, sales teams, agency owners, and…Sales & ecommerce · MITAuto research publicAutonomous cold email campaign launcher. Takes one target company domain, scrapes their website, generates an ICP with Claude, pulls matching leads via Prospeo, enriches emails + company descriptions, personalizes each lead with parallel Claude Code Task sub-agents (A/B/C variants), and uploads as a live Smartlead campaign. Uses local JSON files for state (no database required). Use for automated daily campaign launches after you have an initial `client-profile.yaml` from /icp-onboarding. Triggers on "auto-research", "launch an automated campaign", "daily campaign", "run the research loop".Sales & ecommerce · MITABM Campaign — DIY PlaybookABM campaign skill for Claude Code: run a full Account-Based Marketing campaign end-to-end — from ICP definition to live LinkedIn Ads. Builds targeted account lists with Vibe Prospecting, enriches and scores companies with real-time B2B data, generates personalized ad creatives with Claude Code and Figma, pushes matched audiences to LinkedIn Ads, and monitors campaigns daily at scale. The complete GTM skill for AI-driven account-based marketing in Claude Code, Codex, Hermes-Agent, and OpenClaw. No agency needed.Sales & ecommerce · MITAccount contact shortlistContact data skill for Claude Code and Codex: build a ranked shortlist of decision-makers and contacts at a target company for outbound prospecting, deal acceleration, or renewal/expansion plays. Returns verified contact data including email, phone, LinkedIn profile, title, seniority, and department. Provide a company name or domain plus optional seniority focus or use case. Use for contact data enrichment, LinkedIn profile lookup, and building outbound contact lists. Works in Claude Code, Codex, Hermes-Agent, and OpenClaw.Business & ops · MIT