How to enrich leads with linkedin data with AI

Sales & CRM3 AI tools7 steps6 friction points

Lead enrichment with LinkedIn data means taking a name, company, or email address and filling in the blanks: current title, seniority, department, company size, recent activity, mutual connections. For most operators running outbound sales, this is table stakes work — you can't write a relevant cold email to someone whose role you've guessed wrong. The task is repetitive, it happens at volume, and the quality of the output directly determines whether your outreach lands.

LinkedIn enrichment feels like an AI-ready problem because the core task is pattern recognition and summarization: read a profile, extract structured fields, infer fit against your ICP, write a one-line context note. A human researcher doing this is mostly reading and transcribing. That's exactly what language models do well. The appeal is real — if you have 200 leads to enrich before Monday's outreach, AI feels like the right tool to call.

ChatGPT, Claude, and Gemini can all contribute meaningfully here. They can parse raw LinkedIn profile text you paste in, extract structured fields, score leads against a written ICP, draft personalized outreach openers based on the profile, and help you maintain a consistent enrichment schema across a batch. The constraint isn't their capability — it's the data pipeline you have to build manually every single time.

Sales & CRM3 AI tools7 steps6 friction points
AI walkthrough

How to do it with AI today

A practical walkthrough using ChatGPT, Claude, and other off-the-shelf LLMs — what they're good at, what you'll have to do by hand.

Tools that work for this
ChatGPTClaudeGemini
Step-by-step
1 Export or manually collect your raw lead list — typically a CSV from Apollo, a HubSpot contact export, or a spreadsheet — and identify the fields you need to fill: current title, seniority level, company headcount, department, and a one-line outreach hook.
2 Open LinkedIn and navigate to each lead's profile. Copy the full profile text (name, headline, about section, experience, education) and paste it into your LLM of choice, along with a system prompt defining your ICP and the fields you want extracted.
3 Prompt the model to return structured output — ideally a JSON object or a table row — with the exact fields you defined. Specify the format carefully so the output drops into your spreadsheet without reformatting.
4 For leads where you want personalized outreach context, prompt the model to write a one-line opener referencing something specific from the profile — a recent role change, a shared connection type, a company milestone mentioned in the about section.
5 Paste the model's output back into your spreadsheet or CRM row by row. If you're running a batch of 20+ leads, you'll repeat this copy-paste cycle for each one — there's no native way to run a loop against live LinkedIn data from a raw LLM.
6 After enriching a batch, do a spot-check pass: ask the model to flag any fields it was uncertain about, and manually verify those rows. LinkedIn data is only as good as what was on the profile the moment you copied it.
7 Once your enriched list is clean, bring it back into your CRM or sequencer. This is another manual export-import step unless you've built a custom integration yourself.
Prompts you can copy
Here is a LinkedIn profile for a lead. Extract the following fields as JSON: current_title, seniority (IC / manager / director / VP / C-suite), department, company_size_estimate, years_in_current_role, and a one-line outreach hook. Profile text: [paste]
Score this lead against my ICP: B2B SaaS companies, 20-200 employees, ops or finance buyer, Series A or B. Return a score from 1-5 and one sentence explaining the score. Profile: [paste]
This person just changed jobs six months ago and works in revenue operations at a 50-person company. Write a two-sentence cold email opener referencing their recent transition without being creepy or generic.
I have a batch of 10 LinkedIn profiles below, pasted sequentially. For each one, return a single JSON object with: name, current_title, company, seniority_tier (junior / mid / senior / exec), and fit_score (1-5 against a Series A B2B SaaS ICP). Profiles: [paste all 10]
This lead's LinkedIn headline is 'Head of Growth @ [Company] | ex-Stripe | building the GTM engine.' What three things would you want to know before sending them a cold email about a sales workflow tool?
Reality check

Where this gets hard

The walkthrough above works — until your numbers change, the LLM hallucinates, or you have to re-paste everything next month.

No live LinkedIn connection — you manually navigate to each profile, copy the text, and paste it into the chat window. At 200 leads, this is three to four hours of grunt work before the AI even touches it.
Output format drifts across a long session. The JSON structure you carefully defined in prompt one starts slipping by prompt fifteen — fields get renamed, seniority values change format, and you spend time normalizing instead of prospecting.
Nothing writes back to your CRM. The enriched data lives in a chat thread or a local spreadsheet; getting it into HubSpot or your actual contact record is a separate manual step you have to do every time.
Context window limits constrain batch size. Pasting more than 15-20 full LinkedIn profiles in one session risks truncation or degraded output quality on the later profiles in the batch.
No memory between sessions. The ICP definition, field schema, and scoring rubric you built last week aren't there next week — you paste them in again, and subtle differences in how you prompt mean subtle differences in what you get back.
Enrichment goes stale immediately. A profile you enriched in January reflects that person's role in January. There's no mechanism to flag when a contact changes jobs, which matters a lot for outbound timing.

Tired of the friction?

Starch runs the whole workflow on live data — no copy-paste, no hallucinated numbers, no re-prompting next month.

See the Starch version →
Starch alternative

The same workflow on Starch

Starch is an agentic operating system — it builds and runs the software your work depends on, continuously, against live data. For LinkedIn enrichment, that means an agent builds you a persistent app that handles the full workflow — profile enrichment, ICP scoring, CRM sync — instead of a prompt you re-run by hand.

Starch connects directly to LinkedIn through browser automation — no API required. It navigates profiles on your behalf, extracts structured data, and writes it back to your contacts automatically, running at human-paced activity so your account stays safe.
Start from the CRM starter app, already wired for LinkedIn enrichment. Describe your ICP and the fields that matter to your sales process — title, seniority, company size, fit score — and the agent builds the schema around how you actually work, not a generic template.
Enrichment persists and stays current. When a contact's LinkedIn profile changes, Starch can detect the update on its next sync and flag the stale record in your CRM — so you're not cold-emailing someone at a job they left four months ago.
Connect HubSpot or Apollo from Starch's integration catalog, or use Starch's own CRM. Either way, enriched data lands in your actual contact records — not a spreadsheet you still have to import manually.
Describe the automation in plain English and it runs on a schedule: 'Every Monday, pull new leads added to my CRM this week, enrich them with LinkedIn data, score them against my ICP, and Slack me a prioritized list of the top 10.' Starch builds that and runs it without you touching it.
The LinkedIn Automation starter app extends the same infrastructure — so the same LinkedIn connection that handles enrichment can also run targeted outbound invites and comment activity, all from one place, without stitching together separate tools.
Get closed-beta access →
Toolkit

Starch apps for this workflow

Pick your role

See this workflow by operator

Run enrich leads with linkedin data on Starch

You're on the list! We'll be in touch soon.