---
name: moltsets-enrich-linkedin-profile
description: Use this skill when the user has one or more LinkedIn URLs and wants a complete enrichment - job data (name, title, company, firmographics) AND contact data (business email, personal email, phone).
---

# Enrich LinkedIn Profile

Full enrichment from LinkedIn URL: job/firmographic data + all contact channels.

## Triggers

"get everything for this LinkedIn", "full profile enrichment", "enrich this LinkedIn URL completely", "get their full details". Distinct from enrich-contact which only returns contact fields - this also pulls structured profile and firmographic data via `reverse_linkedin_lookup`.

## 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 call returns the full profile + business + personal email; a parallel mobile call covers phone
- Single profile: ~10–15 seconds
- Batch: scales with N - roughly N × 0.5 to N × 1 second

## Tools used (run in parallel)

1. `MoltSets:reverse_linkedin_lookup` - name, title, company, location, firmographics, business email, AND personal email in one call
2. `MoltSets:linkedin_to_mobile_phone` - mobile number (the only source for mobile)

Credits only charged on hits.

## Step 1 - Credit check

Call `MoltSets:get_billing` (free). Estimate 2 credits max per profile - the lookup plus an optional mobile call (likely less due to misses).

## Step 2 - Detect singular vs. batch

**Singular (1 URL):** pass `linkedin_url` to each tool.

**Batch (2–100 URLs):** call `reverse_linkedin_lookup` once per URL (fire these in parallel); for phone, pass a single `linkedin_urls` array to `linkedin_to_mobile_phone`. The lookup has no batch array - only the phone tool does.

Confirm batch count with user before running: "Enriching X profiles now - pulling full profile + contact data..."

## Step 3 - What to retrieve

| User says | Run |
|---|---|
| "full profile" / "everything" / no preference stated | `reverse_linkedin_lookup` (profile + both emails) paired with `linkedin_to_mobile_phone` (mobile) |
| "profile + email" | `reverse_linkedin_lookup` (profile + business + personal email come back together) |
| "profile only" / "no contact data" | `reverse_linkedin_lookup` (ignore the email/phone fields in the response) |

## Output - singular

```
Jane Smith
Head of Marketing · Acme Corp · San Francisco, US

Industry: Information Technology · 201–500 employees
LinkedIn: https://www.linkedin.com/in/janesmith

Business email:  jane@acmecorp.com (validated 2024-11-03)
Personal email:  jane.smith@gmail.com (validated 2024-09-17)
Mobile:          +1 415 555 0192
```

Show `Not found` for any empty field.

## Output - batch

| LinkedIn URL | Name | Title | Company | Business Email | Personal Email | Mobile |
|---|---|---|---|---|---|---|

Summarise hit rates at the end: "Retrieved full profiles for X/N, business emails for X/N, phones for X/N."

## Edge cases

- Slugs (e.g. `janesmith`) to construct `https://www.linkedin.com/in/janesmith`
- If `reverse_linkedin_lookup` returns nothing, fall back to contact enrichment only and note the gap
- Do not fabricate data
