AI Data Enrichment: What It Is, How to Run It, and Where It Breaks

AI can guess a company's industry, not a working email. See which CRM fields to trust to an LLM, plus a Claude workflow that checks contacts before you pay.
Grégoire Démogé October 21, 2026 (Updated October 26, 2026)

A model sounds the same when it's wrong. Ask one for a prospect's work email and it returns first.last@company.com. Right domain, right pattern, right shape. It bounces.

That's the problem I keep coming back to with AI data enrichment, often shortened to AI enrichment. It covers two jobs: inference (deciding a company's industry or a lead's ICP fit) and sourcing (finding a work email or mobile that reaches the person).

Teams now run LLM columns across thousands of rows in Clay, HubSpot, or a Claude build. The demo looks fine. The failures show up later: in matching, in silent model changes, and in cost.

Key Takeaways
  • AI data enrichment uses language models to fill or classify missing fields on company and contact records: inferring industry, persona, or ICP fit, and routing contact lookups.
  • Models can't produce a reachable work email or mobile. Those must exist in a provider's data and pass verification. Asked anyway, a model returns a plausible pattern that bounces.
  • Matching breaks often: in one large people search, 39% of matches pointed to the wrong person.
  • Accuracy moves with every model or prompt change. In one agency's test, an employment check lifted list accuracy from about 80% to about 98%, and a cheaper model on the same control prompt missed every bad record.
  • Cost per row is hard to predict. Web research swings with how much a company has online, and CRM AI fields can cost $0.10 per value with no accuracy gain over a cheap model.
  • There are five ways to run it: prompt ChatGPT or Claude, add multi-provider sourcing with verification, like FullEnrich (which also runs inside Claude and ChatGPT through its MCP), use your CRM's AI, build agents in Clay, or license one large database. Pair AI for judgment with a verified source for contacts.
  • Teams running this at volume match before they research, let the model say "unclear", label every AI value, prove it on a known list, and hand contact data to verified lookups.

Why listen to us?

I'm Grégoire Démogé, co-founder and CPO at FullEnrich, a B2B contact data platform that finds and verifies work emails, personal emails, and mobile numbers by asking multiple data providers in turn. That puts us on the sourcing side of AI enrichment.

We reject over 30% of the data our providers return because it fails our checks. Coverage tells you how often you get an answer. Validity tells you whether it's worth acting on.

What is AI data enrichment?

AI data enrichment is the use of language models and machine learning to add, classify, or update fields on B2B customer and prospect records. A model reads what you already know about a person or company, plus public sources like their website, and returns a value: an industry, a seniority level, a fit score, or a short company summary.

Traditional data enrichment matches your record against a stored database and appends what it finds. AI enrichment adds inference over live pages, can create fields nobody stores (like "sells to hospitals"), and runs on plain-language prompts. It also fails differently. A database returns stale data or nothing. A model returns something, unless you allow "Not found". Emails and mobile numbers still come from providers.

Oracle (database metadata), iManage (documents), and PIM vendors like Akeneo and inriver (product catalogs) use the term too; this guide covers B2B records.

How does AI data enrichment work?

AI data enrichment runs in four stages: match the record to a real person or company, infer descriptive fields, source contact fields across providers, and verify them before they reach your CRM. Models earn their keep in inference.

The two lanes of AI data enrichmentA record (name, company, LinkedIn URL) splits into two lanes. Lane 1, inferred fields such as industry, persona and ICP fit: an LLM reads the record and the web, returns a value with a confidence level and the source URL, or says Not found instead of guessing. Lane 2, sourced fields such as work email and mobile: providers are asked one after another, each result is checked (deliverable, in service, mobile, right person), passing results are kept and failing ones trigger the next source. Both lanes write to the CRM.Your recordname, company, LinkedIn URLLane 1: inferredindustry, persona, ICP fitLane 2: sourcedwork email, mobileAn LLM reads therecord and the webAsk provider 1,then 2, then 3…Returns a value,a confidence leveland the source URLCheck each result:deliverable? in service?mobile? right person?Or says “Not found”instead of guessingPass: keep itFail: try the next sourceYour CRMInferred fields carry a confidence level;contact fields arrive verified
Inferred fields and contact fields take different paths. Only the second lane needs a data provider and verification.

How does it match a record to the right person or company?

Matching checks identifiers like a domain, a LinkedIn URL, or a company ID against candidate profiles. Pick the wrong person, and every later field describes someone else.

That happens a lot. A people search across 84,083 records returned the wrong person 39% of the time, and a Claude Haiku check at about $0.0005 a record caught them. Narrow the candidates with plain rules first, then let the model judge the pairs.

How does an LLM infer new fields?

An LLM reads the record and the pages it can reach, then writes a value. Quality depends on whether it may answer "Not found" and whether it must show its source.

Cheap models are where quality slips. Splitting research and judgment across two models cut one build's cost per company from $0.10 to about $0.02. The catch: the cheap model started reading Google snippets and calling it done, so the prompt had to make it visit the pages. Compare cost per usable result.

How does it find contact data across providers?

Contact data comes from providers, and no single provider covers every market. Waterfall enrichment asks the next provider when one misses or fails checks. At FullEnrich, a lookup can run through 5, 10, or 15 sources and stops when a result passes every check, or when we're confident there isn't one.

How is contact data verified before it reaches the CRM?

Every email gets a status before FullEnrich returns it. DELIVERABLE carries a 2% bounce rate. HIGH_PROBABILITY covers catch-alls our checks consider likely valid, at 9%. CATCH_ALL bounces more, and INVALID is very likely to bounce.

FullEnrich email verification statusesFour statuses: DELIVERABLE, 2% bounce rate; HIGH_PROBABILITY, catch-all emails judged likely valid, 9% bounce rate; CATCH_ALL, higher bounce rate; INVALID, very likely to bounce and excluded from the most probable work email.DELIVERABLE2% bounce rateSendHIGH_PROBABILITY9% bounce rate (likely-valid catch-all)Your callCATCH_ALLHigher bounce rateTest carefullyINVALIDVery likely to bounceNever returned as best email
Every email FullEnrich returns carries one of four statuses, so you decide which tiers your sequences send to.

Catch-alls need their own rule. One agency sending about 3 million emails a month sends to a catch-all only when two providers agree, keeping bounces under 2%. Mobile checks confirm the line is in service and mobile, plus an owner-name match in the US and Canada.

Which fields can AI fill, and which can't it?

AI can infer descriptive fields like industry, persona, and ICP fit. It can't reason its way to a reachable work email or mobile number: those have to exist in a provider's data and pass verification.

Field

Usually comes from

How to check it

What goes wrong

Industry

An LLM reading the company website

Open the source URL

Vague or wrong category

Company summary

An LLM summarizing public pages

Read it against the page

Claims the page never made

Persona and seniority

The current title, parsed by a model or provider

Compare with the live title

Old role or inflated seniority

ICP fit score

A model applying your rules

Hand-score a sample

Loose rules, drifting scores

Tech stack

Provider data or web research

Open the source URL

Tools the company dropped

Work email

Data providers, then verification

Email status per address

A guessed pattern that bounces

Mobile number

Data providers, then line checks

Line type, service status, owner match

Landline, dead line, or wrong person

Personal email

Data providers, then verification

Verification status

Wrong person behind the address

The bottom three rows are where teams get hurt. OpenAI's research team argues that "language models hallucinate because standard training and evaluation procedures reward guessing over acknowledging uncertainty." An email the model never read on a page is a guess, and in your CRM it looks like a real result. "Use AI for discovery, not for clean data": let the model find a company's registration number, then let an API supply the fields.

What are the 5 ways to run AI data enrichment?

There are five common ways to run AI data enrichment, and many teams combine two: a model for judgment and a verified source for contacts. More tools in our roundup of AI solutions for GTM enrichment.

1. What do you get from prompting ChatGPT or Claude directly?

A chat model gives fast answers on descriptive fields with no setup, but nothing behind it supplies contact data.

  • What you get: Paste rows and rules, and it tags industries, summarizes companies, or sorts titles into personas in seconds.
  • Setup: Write the rules once, with a "Not found" option and a source page for each answer.
  • What operators found: One operator who moved to a Claude Code script ran a 10-column enrichment on 5,000 rows for about $12 in API calls, against $200+ in Clay credits. Each new workflow took 2 to 3 hours to set up instead of 30 minutes.
  • Limit: No provider sits behind the chat, so an unpublished email comes back as the most likely string.

2. What does multi-provider sourcing with verification add?

Multi-provider sourcing asks several data providers in turn and verifies each result before you see it. FullEnrich runs it across 25+ sources (pricing).

  • What you get: Verified work emails, personal emails, and mobiles at 1, 3, and 10 credits each. Misses aren't billed.
  • Setup: Connect the FullEnrich MCP server in Claude, ChatGPT, or Manus, or call it from the CLI or API.
  • How it fits: The model picks who to reach; FullEnrich finds the email or mobile that reaches them, also inside Clay tables on FullEnrich credits.
  • Limit: It returns data such as title and headcount, so persona and ICP fit stay with your model. Most enrichments take 30 to 90 seconds per contact because of the checks.

3. What do the AI features inside your CRM fill?

CRM AI fills fields on records you already hold. HubSpot's and Dynamics 365's features don't look up new contact emails or mobiles.

  • What you get: HubSpot's data enrichment fills job title, seniority, location, and LinkedIn URL, with no email or phone. More in our guide to HubSpot enrichment.
  • Setup: Switch it on in the CRM you already pay for. Close fills fields from a web search and bills 6 credits per field populated per record.
  • What operators found: In one portal test on 50 contacts, judged by a model, smart properties and two cheaper models scored 97%, 97%, and 96%, but HubSpot charged $0.10 per value. In one client audit, HubSpot gave 10 Nestlé subsidiaries the same HQ phone and LinkedIn URL; the same auditor says single-entity companies come through clean.
  • Limit: These tools work with your records and inbox. Dynamics 365 enriches a phone or email only for people who emailed you or organized a meeting.

4. What do you get from AI research agents in Clay?

Claygent fills any field you can describe by running a web research agent across every row of a Clay table.

  • What you get: Agents that navigate websites, extract information, and make decisions. If a page says it, Claygent can usually find it.
  • Setup: Build the table and write a prompt per column. Clay's Claygent guide tells you to allow "Not found" and attach a source URL.
  • What operators found: An outreach agency spent $4K of AI usage re-categorizing 100,000 to 150,000 contacts for zero return. Outside Clay, a Firecrawl-based research agent used 100 to 200 credits on a well-documented company and 400 to 1,500+ on a sparse one.
  • Limit: You build it, maintain it, and pay per prompt unless you bring your own API key. Our Clay pricing breakdown shows how that adds up.

5. What does a single large database cover?

A large database gives you one vendor's maintained pool of contact and company records, with no prompts to write.

  • What you get: ZoomInfo describes 500M+ verified professional profiles and 122M+ company records. Our ZoomInfo pricing breakdown shows what that contract costs.
  • Setup: License the dataset and pull records into your CRM. One contract, one source.
  • What operators found: One Salesforce org's database industry codes were "wildly off": an automotive manufacturer also carried a Metals tag. Asking an LLM to choose only among the codes in your segment tends to work better.
  • Limit: Your coverage is that one dataset's coverage. Use the database for identity, and pair it with a verifier or a second source for contacts.

How do you score a target list with Claude and FullEnrich?

You score a target list by giving Claude your accounts and ICP, letting the Score Accounts skill template pull firmographics through free FullEnrich searches, and reading a ranked list where every point shows its input.

Score Accounts template page for Claude, a skill that ranks accounts out of 100 on Fit and Timing using free FullEnrich searches. The skill needs one connector and nothing else.

  1. Connect the FullEnrich MCP. In Claude, open Connectors, then Add connector, paste https://mcp.fullenrich.com/mcp, and authorize in the browser.
  2. Install the skill. Download the .zip from its template page, then in Claude open Customize, Create new skill, Upload a skill.
  3. Share accounts and your ICP. Paste domains or upload a CSV, and add 3 to 5 of your best customers so it learns Fit.
  4. Agree on the weights. Defaults: Fit 60 (industry, headcount, HQ geo, a target technology) and Timing 40 (a new buyer-team leader in 90 days, hiring growth, buyer-team size).
  5. Let it pull the data. About 4 free searches per account, and no credits spent.
  6. Read the ranked list. Each account gets a score, a tier (A at 75+, B at 50 to 74, C under 50), and its top reason.

What did a fit-first pass on eight accounts show?

We scored Qonto, Pipedrive, Swile, Pennylane, PayFit, Spendesk, lemlist, and Aircall against software companies with 200 to 1,500 employees in the US or France, running HubSpot, with fit weights of industry 30, headcount 30, HQ 20, and tech 20. Pipedrive, PayFit, Spendesk, and Aircall landed in A at 100. Pennylane, Swile, and lemlist landed in B at 70, and Qonto in C at 40.

Account fit scores from FullEnrich searchFit scores for eight target accounts: Pipedrive 100 tier A; PayFit 100 tier A; Spendesk 100 tier A; Aircall 100 tier A; Pennylane 70 tier B; Swile 70 tier B; lemlist 70 tier B; Qonto 40 tier C. Aircall's domain first matched the wrong company and was fixed by searching its LinkedIn page. Pipedrive, Spendesk, Pennylane and lemlist have a headcount that disagrees with the size band on the same record; all four are flagged, and only lemlist's conflict costs the headcount points because its band falls mostly outside the ICP.Fit score out of 100TierPipedrive100AHeadcount 1102 vs 501-1000 band: flagged, both fit ICPPayFit100ASpendesk100AHeadcount 340 vs 501-1000 band: flagged, both fit ICPAircall100ADomain matched the wrong company: fixed by LinkedIn pagePennylane70BHeadcount 1203 vs 501-1000 band: flagged, both fit ICPSwile70Blemlist70BHeadcount 271 vs 51-200 band: 0 pts, reviewQonto40CWeights: industry 30 · headcount 30 · HQ 20 · tech 20
Eight target accounts scored on fit from free FullEnrich searches. Flags mark a wrong company match and four headcounts that contradict their own size band; only the lemlist conflict changes a score.

The inputs exposed two problems before any credit was spent. The aircall.io search returned "Aircalls" with 0 employees, while Aircall's LinkedIn page returned the right company with 867. And four accounts had a headcount that contradicted the range on their own record.

Credits come in only at the next step, when the skill offers to enrich the buyer at your A-tier accounts and asks you to confirm the cost.

How do you keep CRM contacts fresh without paying for misses?

FullEnrich's CRM Refresh skill checks every CRM contact on free search first, so you pay only for the new emails you approve. People move: the Bureau of Labor Statistics puts median tenure with a current employer at 4.1 years (January 2026, U.S. wage and salary workers).

Paste a CRM export and Claude checks each contact against FullEnrich's people search. The CRM Refresh template page walks through setup.

CRM Refresh skill: how the workflow runsSix steps: connect the FullEnrich MCP in Claude; drop your CRM export; merge duplicates (free); check every contact against their current job with FullEnrich people search (free); give each contact a status of still there, moved, replaced, or not found (free); confirm the credit cost, then enrich new work emails for movers and replacements (credits). Output is a CSV with refresh_status and refresh_evidence columns.1ConnectFullEnrich MCP in Claude2Drop your CRM exportCSV or pasted rows; columns mapped3Merge duplicatessame LinkedIn URL, email, or name + companyfree4Check every contactpeople search on current jobfree5Status per contactstill there · moved · replaced · not foundfree6Confirm, then enrichnew work emails for movers and replacementscreditsOutput: CSV with refresh_status + refresh_evidence
The CRM Refresh skill: Claude does the reasoning, FullEnrich supplies the data, and credits are spent only after you approve the estimate.

What does the CRM Refresh skill return?

Each contact gets one of four statuses: still there, moved (with the new company), replaced (with the person now in the seat), or not found. On a six-row HubSpot export, it caught four things a plain export wouldn't.

FullEnrich CRM Refresh skill in Claude marking six CRM contacts as moved, still there, or not found, with zero credits spent. Two movers, one replacement, one duplicate merged, and nothing spent yet.

  • A duplicate: two Brian Niccol rows for Chipotle were merged into one contact.
  • A replacement: Niccol moved to Starbucks in September 2024, and the skill named Scott Boatwright as Chipotle's CEO since November 2024.
  • A weak match: for OpenAI's CTO seat, it rejected a Field CTO as Mira Murati's replacement.
  • A "Not found": no profile matched my name as written, so it said a LinkedIn URL would settle it instead of guessing.

What happens before credits are spent?

Claude stops, lists the paid lookups, and waits for your yes. Here, that was new work emails for the two movers and Chipotle's new CEO, about 3 credits.

Claude's CRM Refresh notes offering to enrich new work emails for about 3 credits, waiting for approval. The enrichment step is priced and parked until you approve it.

The CSV it hands back keeps your columns and adds refresh_status and refresh_evidence. Original data is never overwritten.

Where does FullEnrich plug in?

FullEnrich runs through its MCP, its enrichment API, its CLI, HubSpot, Clay, Zapier, Make, and n8n. Through the MCP, a search preview of the first 10 results is free, and exports cost 0.25 credits per contact or company.

Entry point

Best for

What it does

MCP in Claude, ChatGPT, or Manus

Ad hoc lists and agent workflows

Search, confirm, then enrich from a chat

API

Product and data teams

Enrichment, search, and reverse email lookup

CLI

Coding agents and personal agents

Available: search, enrich, and export verified contacts

HubSpot

CRM-native teams

Enrich contacts and push results back

Clay

Teams building in Clay tables

Runs on your FullEnrich credits

Zapier, Make, n8n

No-code automations

Adds enrichment as a workflow step

Why does AI enrichment fail?

AI enrichment fails when a model may fill every field, nobody can see where a value came from, and an upstream change breaks a column unnoticed. Beyond wrong matches, five failures show up most:

  • Fabricated values: without a "Not found" option, the model fills the field anyway.
  • Model swaps: an employment check missed 100% of bad records once a cheaper model ran its control prompt.
  • Stale data: a model reading an old profile writes an outdated value in fresh formatting. Re-check dates before you trust it.
  • Writes in the wrong place: an AI agent with write access can land last year's revenue in the wrong deal fields. Route writes through a reviewed script.
  • Silent drop-offs: when a verifier runs out of credits, leads quietly fall out of campaigns. Chain a second verifier.

Compliance adds a separate risk:

  • California: under the CCPA, personal information can include inferences drawn from other personal information that could create a profile of someone's preferences and characteristics.
  • UK: the ICO says inferred special category details may count as special category data, depending on whether you intentionally draw the inference.
  • EU: under Article 6(3) of the EU AI Act, an Annex III system that profiles natural persons is always high-risk. That applies only to Annex III uses, not to every AI feature in a CRM.

This isn't legal advice.

Five habits of teams running AI enrichment at volume

Teams that run AI enrichment at volume let the model judge and make contact data prove itself, and five habits keep both sides honest.

Five habits of teams running AI enrichment at scale: match before research, allow unclear, label AI values, prove on a known list, and verify contacts. Five rules to write down before the first run.

1. Match before you research

  • Check the domain, LinkedIn URL, or company ID before any spend, because research on the wrong record costs the run and the rep's time.
  • Drop free-mail rows before any paid step. On one 28,316-record list, that removed 17,160 rows.
  • Run a cheap agent first and a deep one only on its misses, with stop conditions and strict output.

2. Let the model say "unclear"

  • Give it a code word to return when it isn't sure, since "say nothing if you're unsure" fails.
  • Add an example of a correct answer so it doesn't swing to refusing everything.
  • Return null when nothing's found, attach a source URL to each field, and flag anything inferred.

3. Label every AI value

  • Prefix every AI-written field with [Auto], and never overwrite data a human entered.
  • Keep a last-enriched date and a source on every field.
  • Let AI explain and let code score, since a model can rationalize a weak lead convincingly.

4. Prove it on a known list, then re-test

  • Set an accuracy bar before you scale. An industry-fit classifier tested on 1,000 accounts shipped only at 96% against a 95% bar. The checker was a model, so set your own bar.
  • Re-run a control prompt whenever the model or the prompt wording changes, since either can move answers a lot.

5. Hand contact data to verified lookups

  • Stop the model at the contact fields and pass them to a verified lookup.
  • Test that lookup on emails you already know, like leads who replied to you.

How do you get AI enrichment your reps can trust with FullEnrich?

Let AI find and judge, and make contact data prove itself. Your model scores accounts, tags personas, and writes summaries, citing its source and saying "Not found" when it has nothing. FullEnrich supplies the work emails, personal emails, and mobile numbers, with a status on every email and credits spent only on data that's found and verified.

Score a cold list or refresh a CRM export from Claude, since both checks run on free search. Approve enrichment only for the rows that earn it, and start with 50 free credits.

Frequently Asked Questions

Is AI enrichment accurate?

On judgment fields like industry or fit, it can be, if you test it. HubSpot's smart properties and two cheaper models scored 96% to 97% on three classification questions across 50 contacts, judged by another model. It fails on matching, where one people search returned the wrong person 39% of the time, and on model swaps.

Can ChatGPT find someone's email address or phone number?

Only if the address or number appears on a page it can read, and even then it needs a deliverability or line check. Asked for one that isn't published, a chatbot returns the most likely string, like first.last@company.com. For contact fields, use a provider that verifies emails and phone numbers.

Which way of running AI enrichment should I pick?

Pick the way that matches how your team works. A founder working one list can prompt Claude or ChatGPT and add FullEnrich through the MCP for emails and mobiles. HubSpot, Close, or Dynamics 365 teams can start with the CRM's AI and watch cost per value. Builders get the most from Clay.

Is AI enrichment GDPR compliant?

AI enrichment can be GDPR compliant, but inferring new facts about people adds obligations. Under UK GDPR, the ICO says inferred special category details may count as special category data. In California, the CCPA treats profile-building inferences as personal information. Avoid inferring sensitive traits, document why you hold each inferred field, and respect opt-outs.

What's the difference between AI enrichment and waterfall enrichment?

AI enrichment infers or classifies fields, usually descriptive ones like industry, persona, or ICP fit. Waterfall enrichment sources contact data by asking several providers in sequence until one returns a result that passes verification. They often run side by side: AI for context, the waterfall for the email or mobile you'll use.