Find missing fields on a contact list

Built by: Lusha
Time to build: 1 min
Difficulty: Easy
Tools: ClaudeLusha
Type: Prompt

A Claude prompt that takes a partial contact list — names without emails, LinkedIn URLs without phones, emails without titles — and fills the missing fields with verified data. Paste whatever you have, get back a complete row per contact. Built for RevOps and SDR managers running list backfill before a campaign loads.

Once Lusha is connected in Claude, the connector runs in the background — no special syntax needed. Just paste the list and run.

Images on this webpage are for illustrative purposes only. Any named individuals shown in live demo outputs are real, with last names abbreviated for privacy.

The prompt

<context>
Partial contact list. Different rows missing different fields:
some have only name and company, some have a LinkedIn URL,
some have an email but no phone. Fill the gaps.
</context>

<task>
1. Partial contact list (one row per line, any combination of fields):
   [PASTE LIST: name, company, LinkedIn URL, email, phone, title]
2. For each row, fill missing fields via Lusha.
   Use the strongest input as lookup key:
   LinkedIn URL -> full profile,
   Email -> matched person record,
   Name + company -> resolved contact,
   Name only -> ask for company before searching.
3. Return a unified table:
   Name | Current title | Company | Email (grade) | Phone |
   LinkedIn | What was missing | What got filled.
4. Flag rows where Lusha cannot match. No-match rows do not consume credits.
5. Summary at the top: total rows, filled, partial, no-match.
</task>

<constraints>
- Use the strongest available input as the lookup key (LinkedIn URL > email > name + company).
- Do not invent fields. If Lusha returns no email, the row stays partial. Don't fabricate.
- Surface email confidence grade and DNC flags inline. A partial fill without compliance signals is not a clean row.
- When a name resolves to multiple people (same name, different companies), the company input disambiguates. Show the resolution so the user can confirm.
</constraints>

What you'll get back

Input: 4-row partial list: one row with name + company only, one with a LinkedIn URL only, one same-name match testing disambiguation, one designed to fail.

Output: 3 of 4 fully filled, 1 no-match (no credit charged). The disambiguation case correctly resolves to the right company. Below is the real result from running the prompt against the live Lusha connector.

RowInputFilled outputWhat was filled
1Sean K. + [cloud observability SaaS]VP of Enterprise Sales, validated email (A+), 2 direct phones, LinkedIn URL, promoted Jan 2026Title, email, phones, LinkedIn, job start signal
2LinkedIn URL onlyLaura F., Head of RevOps and Strategy at [dev workflow SaaS], A+ email, mobile, locationName, title, company, email, phone, location
3Tori M. + [business planning SaaS] (disambiguation test)Resolved to the [business planning SaaS] Tori M. (not the [productivity SaaS] one). 2 A+ emails, mobile + office, LinkedInTitle, emails, phones, LinkedIn (correct company)
4Tyler W. + [customer messaging SaaS]No match: flagged for re-research, no credit charged

Names and company identifiers abbreviated for privacy. Full records (including company names, emails, and direct dials) are returned inside your Claude session. The same-name disambiguation case shows how the prompt resolves to the right person: input the correct company, and Lusha returns the matching record.

Three credits consumed for three filled rows. The no-match row charged nothing.

Why use Lusha

Most “enrichment” tools assume the input is clean and the missing field is obvious. Real RevOps lists are messier than that. Three patterns repeat across every CRM, every export, every webinar registration list.

Different rows need different lookup keys. A list assembled from LinkedIn Sales Navigator has URLs but no emails. A list typed by an SDR has names and companies but no LinkedIn. A list from a webinar tool has emails but no titles. The prompt routes each row to the strongest available key — LinkedIn URL first, then email, then name + company — so each lookup gives the highest-confidence result.

Same names need disambiguation by company, not by guessing. A common name can match two real people at two different companies. A prompt that returns “Tori M.” without resolving to the right company guesses. The Lusha connector resolves the right record because the company is part of the lookup key, and the prompt surfaces the resolution inline so the user can confirm.

No-match results don’t charge credits. A row that returns nothing returns nothing — the rep flags it for re-research and moves on. Lusha credits go only to successful fills. That’s an honest pricing model for list hygiene work, drawn from 300M+ verified contacts under GDPR, CCPA, SOC 2, ISO 27701, ISO 31700, and TRUSTe.

FAQ

  • What inputs does the prompt accept?

    Any combination of name, company, email, phone, or LinkedIn URL. The prompt uses the strongest available key per row — LinkedIn URL first, then email, then name plus company. If a row has only a first name, the prompt will ask for the company before searching.

  • What if the same name exists at two different companies?

    The company field disambiguates. Tori M. at Company A and Tori M. at Company B are two real people in Lusha’s data. Providing the correct company resolves to the right record. The prompt surfaces the resolution so you can confirm the right one came back.

  • Can I enrich from a LinkedIn-only export?

    Yes. LinkedIn URL is the strongest lookup key — it pulls the full verified profile in one call. Paste the URLs, run the prompt, and Claude returns name, title, company, email, phone, location, and job history per row.

  • How is this different from cleaning a CRM export?

    The CRM cleanup prompt assumes the rep has a full record per row and needs to validate decay (stale title, DNC status, role changes). This prompt assumes the rep has a partial record per row and needs to backfill. Different starting points, different output buckets. Some lists need both — run the cleanup first, then the fill on whatever the cleanup couldn’t validate.

  • Will this enrich a list that's already in my CRM?

    The Claude output is a structured table you can copy back into the CRM, or push through Lusha’s standard CRM integrations. The prompt itself doesn’t touch your CRM directly — it works on the pasted list inside your Claude session.

  • What if the field I need is something Lusha doesn't return (intent data, custom field, scoring)?

    Lusha returns verified contact and firmographic fields — title, email, phone, LinkedIn, company size, industry, location, funding, signals. Intent data and custom CRM fields are outside the prompt’s scope. For intent and signal-based enrichment, pair with the funding-companies or job-changers prompts in the prospecting gallery.

Ready to run this?

One data connection. Works in Claude, ChatGPT, your CRM, or any agent you build.