---
name: moltsets-search-prospects
description: Use this skill when the user wants to find a list of people by their company - company name, exact domain, industry, employee range, or revenue range.
---

# Search Prospects

Find people matching an ICP - by company attributes and by people-level filters (seniority, department, country, industry) - using `MoltSets:search_people`.

## Triggers

"find people at fintech companies", "show me contacts at SaaS companies", "who works at [company]", "search for prospects", "build me a list from [industry]", "find contacts at companies sized [employee range]", "find directors in sales at SaaS companies". Returns ranked contact records, each including title, seniority, country, LinkedIn, and business email. Records often already include `business_email` - enrich only for missing emails or phone via enrich-contact or batch-enrich-linkedin-list.

## Set Expectations

Before firing any calls, give the user a brief, dry heads-up. Deadpan over enthusiastic - no filler, no corporate speak.

Facts to work with:
- 1–2 search calls, results in ~5–10 seconds
- Records usually include `business_email` already - separate enrichment is often unnecessary for business email. If the user needs missing emails or phone, that's a separate step handled by enrich-contact or batch-enrich-linkedin-list

## Step 0 - Input Quality Gate

`search_people` filters on **both company attributes and people-level attributes**. Assess input before searching. If nothing scopes the search at all (no company anchor and no people filter), **pause and ask**.

### Request parameters
| Field | Param | Example |
|---|---|---|
| Free-text (person name, role keywords, or company) | `query` | "Jane Smith", "VP Sales", "Stripe" |
| Company name | `company` | "Stripe", "HubSpot" |
| Exact domain | `company_domain` | "stripe.com" |
| Country | `country` | "United States", "United Kingdom" |
| Seniority | `seniority` | "Director", "VP", "C Suite" |
| Industry | `industry` | "Information Technology", "Finance and Banking" |
| Department | `department` | "Sales", "Marketing" |
| Functional area | `functional_area` | "Sales", "Engineering" (use ONE of department/functional_area) |
| Employee range | (via search_companies) | "201-500", "1001-5000" |
| Page size | `limit` | default 10, max 25 |
| Pagination | `offset` | 0, 25, 50, … |

`query` is free-text across full_name / first / last / company name / title - put a person's **name** or **role keywords** here. Use `department` OR `functional_area`, not both. `employee_range`/`revenue_range` are company filters on `search_companies`; resolve a company first if you need to scope `search_people` by size or revenue.

### Enum values (use EXACT strings, casing, punctuation)
- `seniority`: Intern, Entry, Senior, Manager, Director, VP, Head, C Suite, Owner, Partner
- `industry`: Information Technology, Professional and Business Services, Finance and Banking, Education, Health and Pharmaceuticals, Manufacturing, Government and Public Administration, Retail, Food and Beverage, Creative Arts and Entertainment, Non-Profit and Social Services, Transportation and Logistics, Construction, Tourism and Hospitality, Energy, Marketing & Advertising, Telecommunications, Real Estate, Automotive, Media and Publishing, Agriculture
- `department` / `functional_area`: Operations, Sales, Information Technology, Education, Engineering, Finance, Medical & Health, Marketing, Human Resources, Design, Consulting, Legal

### Vague input triggers
Trigger this gate only if the user gives nothing to scope on - no company anchor AND no people filter (seniority/department/country/industry/name), e.g.:
- "find me some people"
- "search for prospects" (no anchor at all)

### Response when input is vague

> "I need at least one thing to search on. Which of these can you give me?
>
> - **Company** - name or domain, e.g. "Stripe", stripe.com
> - **Person name or role** - e.g. "Jane Smith", "VP of Sales"
> - **Seniority** - e.g. Director, VP, C Suite
> - **Department** - e.g. Sales, Marketing, Engineering
> - **Country** - e.g. United States
> - **Industry** - e.g. Information Technology, Finance and Banking"

Wait for response before running the search.

### What helps most
- **Domain** (`company_domain`) - most precise way to scope to one company
- **Industry + seniority + department** - strong combo for role-based ICP targeting across many companies

## Mapping user language to parameters

| User says | Where it goes | Example value |
|---|---|---|
| A person's name | `query` | "Jane Smith" |
| A role / title phrase | `query` | "VP of Marketing", "RevOps lead" |
| Company name | `company` (or `query`) | "Stripe", "HubSpot" |
| Exact company domain | `company_domain` | "stripe.com" |
| Director+ / VP / C-level | `seniority` | "Director", "VP", "C Suite" |
| Sales / marketing / engineering people | `department` or `functional_area` | "Sales", "Marketing", "Engineering" |
| In the US / UK / etc. | `country` | "United States", "United Kingdom" |
| Tech / SaaS / fintech / healthcare | `industry` | "Information Technology", "Finance and Banking", "Health and Pharmaceuticals" |

Map the user's words to the **exact enum values** above. Use `department` OR `functional_area`, never both. Exact string values matter - use the casing shown.

## Step 1 - Probe first (cheap)

Run with `limit: 1` to check result quality before fetching more. If the top result looks off-target, adjust `query` or filters before scaling.

## Step 2 - Full search

Default: `limit: 10`. Increase up to 25 (the max per page) if user wants more. Paginate with `offset` (0, 25, 50, …) for larger pulls.

## Step 3 - Present results

Each record carries response fields: `full_name`, `title`, `seniority`, `country`, `headline`, `linkedin_url`, `business_email`, company data, and `_score`. Present them:

| Name | Title | Company | Location | LinkedIn | Business email |
|---|---|---|---|---|---|

Omit `_score` unless user asks about match quality.

## After results

`business_email` is often already populated - call that out and offer to enrich only the rows missing it, plus mobile numbers.

Ask: "Some rows already have a business email. Want me to fill the gaps or add mobile numbers?"

If yes: collect LinkedIn URLs for the rows that need it to hand off to **enrich-contact** (for small batches) or **batch-enrich-linkedin-list** (for 10+).

## Edge cases

- Vague input (nothing to scope on) to Step 0 gate fires before any search runs
- Seniority, department, country, and industry are request filters - map the user's words to the exact enum values. Title also comes back as a response field for ranking
- Max 25 per call - for larger lists, use `offset` to paginate
