---
name: moltsets-email-to-complete-profile
description: Use this skill when the user has a single email address and wants it resolved into a person profile - name, title, LinkedIn - with optional mobile number and company firmographics, run in tiers so only the requested depth is paid for.
---

# Email to Complete Profile

Resolves a single email address into a person profile, and optionally a company profile, using MoltSets' reverse lookup and company search. Built as a tiered workflow so the user only pays for (and waits on) the depth they actually want.

## Before starting: confirm depth

If not already stated, ask the user how deep they want to go:

1. **Tier 1 only** — person profile from the email (name, title, company, LinkedIn).
2. **Tier 1 + phone add-on** — also try to get a mobile number. This spends a phone token per successful lookup (see `get_billing` for balance), so confirm before running it even if the user said "get everything."
3. **Tier 2** — also pull firmographic detail on the company the person works at (industry, size, revenue, location).

Don't silently run the phone add-on just because the user asked for "everything" or "the most complete profile possible" — the token cost makes it worth a direct confirmation every time, not just a one-time preference.

## Tier 1: Person profile from the email

1. Run `MoltSets:reverse_email_lookup` with `email: "{the address}"`.
2. If it resolves, you'll get the person's name, title, current company, and typically a LinkedIn URL plus other contact fields already on the record.
3. If it comes back empty, try `skip_anonymize: true` — by default the tool may return an anonymized shell record when the plaintext email doesn't resolve cleanly; this forces the full attempt. If it's still empty, the email genuinely isn't in the index — report that plainly rather than guessing.

This is the whole deliverable for a Tier 1 request. Present the profile and stop here unless the user has asked for more.

## Add-on: mobile phone number

Only run this after the user has explicitly confirmed they want it (see "Before starting" — a standing "yes always get the phone" from earlier in the same conversation counts, but don't assume it from a general "get me everything").

1. Requires a LinkedIn URL, which Tier 1 should have already surfaced. If Tier 1 didn't return one, tell the user a phone lookup isn't possible without it rather than guessing at a profile.
2. Run `MoltSets:linkedin_to_mobile_phone` with `linkedin_url: "{the profile URL from Tier 1}"`.
3. Only mobile numbers are returned, never landlines. Tokens are only charged when a number is actually found, but each hit also spends 1 phone token — mention this in the output so the user can track it against their phone-token balance (`MoltSets:get_billing`).

## Tier 2: Company profile

1. Take the company name (or domain, if the Tier 1 record includes one) from the Tier 1 result.
2. Run `MoltSets:search_companies` with `query: "{company name}"` (use `domain: "{domain}"` instead if you have a confirmed domain — it's a more precise exact match than the free-text `query`).
3. Return the firmographic fields available on the top match: industry, `linkedin_industry` (finer-grained, if present), `employee_range`, `revenue_range`, and location (city/state/country).
4. If multiple companies come back with similar names, prefer the one whose domain matches the Tier 1 record, and flag it if you had to pick between ambiguous candidates.

## Output format

Present as a short structured profile, not a table (this is a single-record lookup, not a batch):

```
Person
  Name:
  Title:
  Company:
  LinkedIn:
  Mobile:            (only if the add-on was run — note "not requested" if skipped)

Company (Tier 2 only)
  Industry:
  Employee range:
  Revenue range:
  Location:
```

If Tier 1 itself found nothing, say so directly and stop — don't attempt Tier 2 or the phone add-on against a company/LinkedIn URL you don't actually have.

## Notes

- This is a single-email workflow. For a list of emails, batch `reverse_email_lookup` using its `emails` array param (up to 100 per call) rather than looping one call per address.
- Don't confuse this with the `search_business_email_by_name` direction (name → email). This skill runs the reverse: a known email → identity and firmographics.
