---
name: moltsets-find-person
description: Use this skill whenever the user wants to find or look up a person by name and company - but does NOT already have a LinkedIn URL for them.
---

# Find Person

Resolve a person from a name + company. Prefer `MoltSets:search_linkedin_profile` (name + company in one call). Fall back to `MoltSets:search_people` to pull contacts at the company and match the target person by name.

## Triggers

Triggers include phrases like "find me [Name]", "look up [Name] at [Company]", "can you find [Name]", "search for someone named [Name]", or any request to locate a specific person without a LinkedIn URL already provided. Do NOT use this skill if the user already has a LinkedIn URL - use the enrich-contact skill instead.

## What the tools accept

**Preferred - `search_linkedin_profile`** (name + company → LinkedIn profile in one call):
- `name` OR (`first_name` + `last_name`) - the person you're looking for.
- `company` (name) OR `company_domain` (exact domain, e.g. `acme.com`).
- `count_only` (bool, free) - check whether a match exists without spending a credit.

**Fallback - `search_people`** (search by name and/or filter by company attributes). It DOES accept people-level filters now. Params:

- `query` - free-text across full name, company, and title. Put the person's NAME or role keywords here to search by name directly.
- `company` - company name. `company_domain` - exact company domain (e.g. `acme.com`), no protocol. (Note: the param is `company_domain`, not `domain`.)
- `seniority`, `industry`, `department`, `functional_area`, `country` - optional people filters (map the user's words to the exact enum values; use either `department` or `functional_area`, not both).
- `limit` - default 10, max 25 per page. `offset` - pagination; increase to page deeper.

Each `search_people` record includes `full_name`, `first_name`, `last_name`, `title`, `seniority`, `country`, `headline`, `linkedin_url`, `business_email`, company data, and `_score`. You can search by name via `query`; if several people share the name, confirm the right one against `title`/`company` in the records.

## Set Expectations

Before firing any calls, give the user a brief, dry heads-up on what's about to happen. Deadpan over enthusiastic - no filler, no corporate speak.

Facts to convey:
- A name + company lookup (or a company search with a name match on fallback)
- A few seconds total
- If the preferred lookup misses, you'll fall back to `search_people`, page deeper, or retry by company name before giving up

## Step 1 - Resolve the company domain

If the user gives a company name (e.g. "HubSpot") rather than a domain:
- Infer the domain confidently for well-known companies (HubSpot to `hubspot.com`, Salesforce to `salesforce.com`, etc.)
- For unfamiliar companies, ask the user: "What's their website domain?" before proceeding

## Step 2 - Find the person

Start with `search_linkedin_profile`: pass `name` (or `first_name` + `last_name`) plus `company_domain` (preferred) or `company`. If it returns a profile, that's your match.

If it misses, fall back to `search_people` with the name in `query` plus `company_domain` (preferred) or `company`, `limit: 25`. Then scan the returned records for the target name:

- **No name match on the first page** to page deeper with `offset` (e.g. 25, 50). If still nothing with `company_domain`, retry with `company`. Tell the user what you tried.
- **Exactly one name match** to that's the person.
- **Multiple plausible matches** (e.g. same name, or first-name-only) to present all for confirmation.

## Step 3 - Present results

**One match:**
- Show: Name | Title | Company | LinkedIn URL
- If `business_email` is present in the record, note it - the email is already in hand.
- Ask: "Is this the right person? I can pull their contact info if so."

**Multiple matches:**
- Present as a numbered list: Name | Title | Company | LinkedIn URL
- Ask the user to pick one before enriching

**No match after paging and retry:**
- Tell the user clearly and ask for more detail (full name, domain)

## After confirmation

Once the user confirms the right profile, hand off to the **enrich-contact** skill to retrieve email and/or phone. If `business_email` was already present in the search record, you already have it - only a separate call is needed for personal email or phone.

## Edge cases

- For `search_people`, pass the domain to `company_domain` (not `domain`) or the company name to `company`; put the person's name in `query`. You can also narrow with `seniority`/`department`/`country` filters.
- If the user provides a LinkedIn URL directly, skip this skill and go to enrich-contact
- Do not invent or guess LinkedIn URLs - only surface what the tool returns
- If only a first name is provided, search with that name plus the company and present every record whose `full_name` could plausibly match; ask the user to pick
