Skip to Content

AI as an Enrichment Fallback

Outcome: a fallback column that recovers a measured share of missed rows, with every inferred value flagged as inferred and contact data explicitly excluded.

Surface
App and MCP server
Level
Intermediate
Uses
AI research agent · scrape_emails_from_website
Credits
~10 for a 20-row fallback run
Prerequisite
An enrichment run with misses in it

The rule that governs this whole lesson

AI may infer facts. It may never invent contact details.

A model asked for a work email will produce firstname.lastname@company.com. It looks right, it is unverifiable without sending, and it bounces at a rate that damages your sending domain. There is no acceptable use of a model-generated email address.

For contact recovery, the fallback is site scraping followed by verification — real addresses found on real pages, then checked.


Where AI legitimately fills a gap

Missing fieldAI fallbackReliability
Industry / categoryRead the site and classifyGood
What they sellRead the siteGood
B2B or B2CRead the siteGood
Company size bandInfer from team page, job posts, footprintModerate — band only
Country / HQRead contact or about pageGood
Tech stackRead job posts and integrations pageModerate, and complements detection
RevenueNo. Not inferable.
Email or phoneNo. Scrape and verify instead.

Notice the pattern: AI can read something that exists. It cannot know something nobody published.


Mark everything inferred

Every fallback value gets a source flag next to it.

ColumnValues
industrythe value
industry_sourceprovider / inferred / missing

Three things this buys you:

  • Scoring can weight them differently. An inferred value is weaker evidence and can score lower.
  • You can measure the fallback. Compare outcomes for inferred versus provider rows, and decide whether the column earns its cost.
  • Nobody downstream is misled. A rep looking at an account should be able to tell a fact from an inference.

Writing inferred values back to a CRM without the source flag is how a system of record quietly fills with plausible fiction. Six months later nobody can tell which fields were observed and which were guessed, and the CRM stops being trusted for anything. Carry the flag through the export.


Structuring the fallback

Run the provider enrichment first

Always. It is cheaper and more accurate.

Filter to the misses

The fallback column runs only where the provider returned nothing. Never on the whole table.

Give the agent the anchors

Domain, company name, and whatever the provider did return. Partial data improves the inference substantially.

Constrain the output

Same closed value set as the provider field, so the two columns merge cleanly.

Require the abstain

“If the website does not make this clear, answer Unknown.” An inference with no basis is worse than a gap.

Merge with the flag

One industry column, one industry_source column.


Measuring whether it is worth it

Compute two numbers after the run:

  • Recovery rate — of the rows the provider missed, what share did the fallback fill with a non-Unknown value?
  • Cost per recovered row — fallback credits ÷ rows recovered.

Then judge: below about 30% recovery, the fallback is usually not worth its cost, and the honest move is to accept the gap and let the score reflect it. Above 50% it is typically a clear win.


Do this now

Find your misses

Filter to rows where a key enrichment field is blank. Count them.

Pick one field

The one whose absence most affects your gate.

Build the fallback prompt

Anchors, constrained values, abstain instruction.

Run on 20 missed rows

Read every answer.

Verify ten by hand

Open the sites. Was the inference right?

Add the source flag

And merge into a single field.

Compute recovery rate and cost

Decide whether to keep the column.


Check your work

  • The fallback runs only on missed rows
  • No contact detail is ever model-generated
  • Every fallback value carries a source flag
  • Unknown appears in the output
  • You have a recovery rate and a cost per recovered row

Where this breaks

Letting inferred values into the same column as provider values without a flag destroys your ability to reason about data quality. Every score, every gate and every report then mixes observed facts with model guesses at an unknown ratio, and when a number looks wrong there is no way to find out why. The flag column is free. It is not optional.


Further automation

Track recovery rate over time. A rising miss rate on the provider side usually means your sourcing drifted into a segment with thinner coverage — which is worth knowing as a targeting signal, not just as a data problem.


Next lesson

11 — Classifying rows, the highest-value AI column per credit spent.

Reference for this lesson: How enrichment works, AI agents, scrape_emails_from_website, Waterfall Enrichment.