# Build a Prospect List from Your ICP — Ravn

Canonical: https://askravn.com/skills/build-prospect-list

Claude skill

# Build a prospect list from an ICP

Turn a description of the ideal buyer ("VPs of Operations at 51-200 person logistics companies in Texas") into a list of named people with verified work emails, using `search_people` for the profiles and Ravn's own checks for the emails.
[Download SKILL.md](https://askravn.com/skills/build-prospect-list/SKILL.md) [Start free](https://askravn.com/#start)

Install
## One command.
Installs into `~/.claude/skills` for Claude Code. In Claude, upload the downloaded file under Settings → Capabilities → Skills.
```
npx ravn skill install build-prospect-list
```

## When to use

- The user has no list yet and wants one built from criteria.
- "Find me 50 heads of marketing at Series A SaaS companies in Canada."
- If the user already has target companies, use find-decision-makers instead.

## Before you start

- Check the connection: call `get_account` with `{}` or run `npx ravn whoami`. Note lookups left this window.
- `search_people` needs your own provider key connected — run `ravn keys add pdl` first; these tools run on your own provider account. If it returns 403 `provider_key_required`, stop and tell the human to add their key. `search_business_email_by_name` and email verification are ours and need no key. Every call is one lookup; misses are free.
- Agree on a target size with the user.

## Steps

- Turn the ICP into filters. Lists mean OR within a field and AND across fields. - `title`: the job titles, with common variants. - `seniority`: Intern, Entry, Senior, Manager, Director, VP, Head, C Suite, Owner, Partner. - `industry`, `country`, `state`, `city`, `department`. - `employee_range`: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001+. - Exclusions: `exclude_company_domain` (existing customers), `exclude_industry`, `exclude_seniority`.
- Run a small test page first to check the filters return the right people.

```
{
"title": ["VP Operations", "Head of Operations", "Director of Operations"],
"industry": "logistics",
"state": "Texas",
"employee_range": ["51-200"],
"exclude_company_domain": ["currentcustomer.com"],
"limit": 5
}
```

- Show the user the five results and `total`. If they are off target, adjust the filters before spending more. If `status` is `not_found`, loosen one filter at a time.
- Page through with `limit` up to 25 and the `cursor` set to the previous `next_cursor`, until you reach the target size or `next_cursor` is empty.
- Each profile may include `business_email` and `business_email_risk_score`. For people without an email, call `search_business_email_by_name` with their name and `company.domain`:

```
{ "first_name": "Maria", "last_name": "Lopez", "company": "lonestarfreight.com" }
```

- Verify every email you plan to use with one `validate_emails` call (up to 1,000 addresses):

```
{ "emails": ["maria.lopez@lonestarfreight.com", "j.chen@haulpoint.com"] }
```

- Keep `valid`. Mark `risky` and `unknown` for review and leave them out of the send list.
- Save the list as a CSV.

## Output

A CSV with one row per person:

- `full_name`, `title`, `seniority`, `company_name`, `company_domain`, `company_size`, `city`, `state`, `country`, `linkedin_url`
- `email`, `email_source` (`search_people` or `search_business_email_by_name`)
- `rw_verdict` (`valid`, `invalid`, `risky`, `unknown`) and `rw_risk_score`
- `rw_status` (`ok` or `not_found`) for the email step
Also report: filters used, `total` matches available, people pulled, verified emails, and lookups used.

## Rules

- People who opted out are removed from the data already. Also remove anyone the user knows has asked not to be contacted. See [/privacy#optout](https://askravn.com/privacy#optout).
- Drop invalid and risky emails before the list is used for outreach.
- No FCRA uses: never build lists to screen people for credit, employment, insurance or housing.
- This is for building a working prospect list, not bulk exporting the database. Pull what the campaign needs.
- On a 429 `fair_use_exhausted` or a 403 `provider_key_required`, stop and tell the human.

## Example prompt

Build me a list of 40 operations leaders (director and up) at 51-200 person logistics companies in Texas, skip our current customers in customers.txt, with verified emails.

## More [skills](https://askravn.com/skills)
Install them all with `npx ravn skill install --all`.
- [Check Numbers Are Mobile Before TextingUse before sending SMS when someone needs to confirm each phone number is valid and a real mobile line, using number-plan checks then a live carrier lookup..](https://askravn.com/skills/check-mobile-before-sms)
- [Competitor Website Tech Stack LookupUse when someone wants to see which technologies competitor or prospect websites use, grouped by category and compared side by side..](https://askravn.com/skills/competitor-tech-stack)
- [Dedupe and Normalize a Contact ListUse when a contact CSV is messy and needs normalized emails, duplicates merged, and role, free-provider and disposable addresses flagged..](https://askravn.com/skills/dedupe-and-normalize-contacts)
- [Email Address to LinkedIn Profile LookupUse when someone has a list of email addresses and wants the person behind each one, with LinkedIn profile URL, name, title and company..](https://askravn.com/skills/email-to-linkedin-profile)
- [Enrich Any CSV with Contact and Company DataUse when someone hands over any CSV and wants it enriched, picking the right tool and column mapping, sampling, then running the full file safely..](https://askravn.com/skills/enrich-csv)
- [Enrich and Score an Inbound LeadUse when a new sign-up or form fill arrives with just an email and someone wants to know who it is, what company, and whether it fits the ICP..](https://askravn.com/skills/enrich-inbound-lead)
