Build targeted lists of potential buyers from LinkedIn based on ICP criteria. Use when user wants to find prospects, build buyer lists, search LinkedIn for customers, or define their ideal buyer profile. Not for competitor research. Can be invoked with optional campaign_id and/or criteria (e.g., "campaign_fintech_q1 VP Engineering at Series B SaaS companies in SF").
Install
npx skillscat add zuttam/business-growth-mp/list-building Install via the SkillsCat registry.
List Building Skill
Build targeted lists of potential buyers from LinkedIn based on Ideal Customer Profile (ICP) criteria. This skill is for prospecting - finding people who might buy your product or service, not for competitive analysis.
Process
Step 0: Load Defaults & Check Scope
First, check for saved decisions:
Read .business_growth/sales/DECISIONS.md if it exists. This file stores global defaults like:
- Buyer persona and target titles
- Target industries and exclusions
- Company segment preferences
- Sales Navigator availability
- Competitors to exclude
If DECISIONS.md exists:
Ask the user: "I found your saved preferences. Want to use these defaults, or customize for this specific list?"
- (A) Use defaults → Skip to Step 1, only ask list-specific questions (target lead count, any overrides)
- (B) Customize → Go through the full discovery questions below
- (C) Update defaults → Go through questions and save new answers to DECISIONS.md
If DECISIONS.md doesn't exist:
Go through the full discovery process and offer to save answers as defaults at the end.
Step 0b: Resolve Campaign Context
If campaign_id provided:
- Use it directly as the campaign context
If campaign_id not provided:
- Check for existing campaigns in
.business_growth/sales/campaigns/ - If campaigns exist, ask user:
- (A) Create new campaign → Generate a meaningful snake_case name based on criteria (e.g.,
campaign_fintech_vp_eng) - (B) Add to existing campaign → Select from available campaigns
- (A) Create new campaign → Generate a meaningful snake_case name based on criteria (e.g.,
- If no campaigns exist, create a new one
Establish campaign_id before proceeding.
Step 0c: Full Discovery (if not using defaults)
Gather context:
- Check existing campaigns in
.business_growth/sales/campaigns/to understand prior work - Review any existing ICP definitions or campaign history
Ask clarifying questions (one at a time):
- Prefer multiple choice when options are clear
- Focus on understanding: purpose, constraints, success criteria
Global questions (save to DECISIONS.md):
- "Who is your buyer? What role typically makes or influences the purchase decision?"
- "What problem does your product solve for them?"
- "Any industries where your buyers typically work? (e.g., security, fintech, healthcare)"
- "Any spaces to exclude? (e.g., no agencies, no consulting firms, no competitors)"
- "Company segment: (A) SMB (< 50 employees), (B) Mid-market (50-500), (C) Enterprise (500+), or (D) Any size?"
- "Do you have LinkedIn Sales Navigator?"
List-specific questions (always ask):
- "What's the goal for this specific list - demos, trials, partnerships?"
- "How many leads are you looking to have in this list?"
- "Any specific geography or filters for this list?"
Explore approaches:
After understanding requirements, propose 2-3 different approaches:
- Present options conversationally with trade-offs
- Lead with your recommended approach and explain why
Save decisions:
If user went through full discovery, ask: "Want me to save these as your defaults for future lists?"
If yes, create/update .business_growth/sales/DECISIONS.md
Step 1: Define ICP Criteria
Once you understand the user's goals from Step 0, nail down the specific buyer criteria. Fill in any gaps by asking targeted questions (one at a time):
- Buyer Persona: Who buys? Decision-maker vs. influencer vs. end-user
- Target Titles: VP Engineering, Head of Product, CTO, Director of Sales, etc.
- Target Industries/Verticals: Where do your buyers work? Security, fintech, healthcare, SaaS, etc.
- Company Segment: SMB (< 50), mid-market (50-500), enterprise (500+)
- Company Characteristics: Funding stage, revenue range, tech stack
- Geography: Countries, states, cities
- Exclusions: Industries to skip, competitors, company types to avoid
- Additional Filters: Years in role, keywords, specific companies to include/exclude
Step 2: Create ICP Document
Save ICP definition to .business_growth/sales/campaigns/<campaign_id>/icp.md:
# ICP Definition
## Buyer Profile
- **Buyer Persona**: <decision-maker / influencer / end-user>
- **Titles**: <list of titles>
- **Problem We Solve**: <what pain point does this buyer have?>
## Target Companies
- **Industries/Verticals**: <list of industries>
- **Company Segment**: <SMB / Mid-market / Enterprise>
- **Company Size**: <employee count or revenue range>
- **Funding Stage**: <stages>
- **Geography**: <locations>
## Exclusions
- **Industries to Skip**: <e.g., agencies, consulting, government>
- **Competitors**: <companies to exclude>
- **Other Exclusions**: <e.g., no startups under 10 people>
## List Goals
- **Target Lead Count**: <estimated number of leads>
- **Sales Navigator**: <yes/no>
## Search Strategy
- **LinkedIn Search URL**: <url>
- **Filters Applied**: <description>
## Notes
<any additional context>Step 3: Search LinkedIn
- Get browser context with
tabs_context_mcp - Navigate to the appropriate search tool:
- With Sales Navigator: Go to
linkedin.com/sales/search/people- better filters (company size, seniority, years in role), higher limits, lead saving - Without Sales Navigator: Use standard LinkedIn search at
linkedin.com/search/results/people/
- With Sales Navigator: Go to
- Apply search filters based on ICP
- Take screenshot to verify results
- Adjust filters if results don't match expected count
Important Rate Limits:
- Sales Navigator: ~100 profile views/day, can save leads to lists
- Standard LinkedIn: ~30 profiles/hour, ~100/day
- Space out searches to avoid restrictions
Step 4: Extract Lead Data
For each prospect, capture:
- Name: Full name
- Title: Current job title
- Company: Current employer
- LinkedIn URL: Profile URL
- Location: Geographic location
- Headline: Profile headline
Use read_page to extract structured data from search results or profiles.
Step 5: Save Lead List
Create .business_growth/sales/campaigns/<campaign_id>/LIST.md:
# Lead List: <Descriptive Name>
## Metadata
- **Campaign**: <campaign_id> # e.g., campaign_fintech_vp_eng
- **Created**: <ISO timestamp>
- **Source**: LinkedIn Search
- **ICP**: See icp.md
- **Total Leads**: <count>
## Leads
### 1. <Full Name>
- **LinkedIn**: <url>
- **Role**: <title> at <company>
- **Location**: <location>
- **Headline**: <headline>
### 2. <Full Name>
- **LinkedIn**: <url>
- **Role**: <title> at <company>
- **Location**: <location>
- **Headline**: <headline>
<!-- Continue for all leads -->Step 6: Report Summary
Provide summary to user:
- Total leads found
- Breakdown by title/company/location
- Recommendations for next steps (create campaign, research top prospects)
- Any issues encountered (rate limits, restricted profiles)
Browser Tools Used
| Tool | Purpose |
|---|---|
tabs_context_mcp |
Get browser context |
tabs_create_mcp |
Create new tab for LinkedIn |
navigate |
Go to LinkedIn search |
read_page |
Extract search results and profiles |
find |
Locate search filters and results |
form_input |
Enter search criteria |
computer |
Click, scroll, screenshot |
Tips for Better Results
- Use Boolean search: Combine terms with AND, OR, NOT
- Leverage 2nd degree connections: Often higher response rates
- Check for recent activity: Active profiles are more responsive
- Note shared connections: Useful for warm introductions
- Save search URL: Can rerun later for new prospects
Next Steps After List Building
Suggest to user (pass campaign_id to each):
- Use
/opportunity-master:lead-research <campaign_id>to research top prospects - Use
/opportunity-master:campaign-creation <campaign_id>to create outreach campaign - Review and prioritize list before outreach
Global Decisions File
The .business_growth/sales/DECISIONS.md file stores user preferences to avoid repetitive questions:
# Sales Decisions & Defaults
## Last Updated
<ISO timestamp>
## Buyer Profile
- **Buyer Persona**: <decision-maker / influencer / end-user>
- **Target Titles**: <list of titles>
- **Problem We Solve**: <what pain point do we address?>
## Target Market
- **Industries/Verticals**: <list of industries>
- **Company Segment**: <SMB / Mid-market / Enterprise>
- **Geography**: <default regions>
## Exclusions
- **Industries to Skip**: <e.g., agencies, consulting, government>
- **Competitors**: <companies to always exclude>
- **Other Exclusions**: <company types to avoid>
## Tools
- **Sales Navigator**: <yes/no>
## Notes
<any other standing preferences>When to update DECISIONS.md:
- First time running list-building or lead-research
- When user says "update my defaults"
- When user's ICP fundamentally changes