Enrich on Arrival
Outcome: an enrichment chain that runs on row creation and produces a person and company profile within your latency budget, with a defined path for the rows it cannot enrich.
- Surface
- Sync GTM app and MCP server
- Level
- Advanced
- Uses
- find_linkedin_from_work_email · linkedin_profile_enrich · enrich_organization
- Credits
- ~2–3 per lead
- Prerequisite
- Lesson 03's webhook intake
The chain
An email is enough to build a full record.
Derive the domain
From the email. Free, and it is the company identifier.
Enrich the company
enrich_organization on the domain: headcount, industry, country, funding, LinkedIn URL. Cheap, and it is what the score mostly reads.
Resolve the person
find_linkedin_from_work_email to get a profile URL, then linkedin_profile_enrich for current title, seniority and history.
Verify the email
Cheap, and it prevents a follow-up bouncing.
Two to three credits, and a form fill with three fields becomes a complete record.
Order by what the score needs
Not every lead needs the full chain. Run company enrichment first — it is cheapest and carries most of the fit score — then decide whether person-level enrichment is warranted.
1. domain from email free
2. enrich_organization ~0.5
3. fit gate free
4. person resolution + enrich ~1.5 ← only above the gate
5. verify email ~0.3On a high-volume form with a lot of unqualified traffic, that gate is the difference between a sustainable pipeline and one that costs more than the leads are worth.
Do not gate the follow-up on the fit score — gate the enrichment spend. Every inbound lead deserves a response; not every one deserves three credits of research. Those are different decisions and conflating them is how teams end up ignoring people who asked them a question.
Free-mail domains
A gmail.com address has no company behind it, so the chain above stops at step one.
| Situation | Path |
|---|---|
| Company name provided on the form | Resolve the domain from the name, then continue |
| No company, but a personal email | Try find_linkedin_from_personal_email |
| Neither resolves | Route as unenriched — a human decides |
Free-mail leads are not automatically low quality. Founders, consultants and people at companies with restrictive email policies all use personal addresses. Treat it as a different path, not a disqualification.
When enrichment misses
Roughly one in five leads will not enrich cleanly. The pipeline must still route them.
enrichment_status = complete | partial | failed
complete → score, route, follow up normally
partial → score on what exists, route with a flag
failed → route to a human queue immediatelyThe failed path is the important one. A lead nobody can enrich is not a lead nobody should contact — it is a lead that needs a person to look at it, and it should reach that person faster than the automated ones, not slower.
The latency budget
Speed to lead is the point of this course, so track where the seconds go.
| Step | Target |
|---|---|
| Submission → row created | Under 5s |
| Company enrichment | Under 10s |
| Person enrichment | Under 15s |
| Score and route | Under 2s |
| Follow-up sent | Under 60s total |
If the full chain cannot complete inside your budget, send the follow-up on partial data rather than waiting. A fast, slightly generic response beats a perfect one four minutes later.
Do this now
Build the chain in cost order
Domain, company, gate, person, verify.
Add the fit gate before person enrichment
But not before follow-up.
Build the free-mail path
Company-name resolution, then personal-email lookup.
Add the three-state enrichment status
Route failed to a human queue
Immediately, not after the automated leads.
Measure each step’s latency
Confirm the total is inside budget
Or send on partial data.
Check your work
- Company enrichment runs before person enrichment
- The gate controls enrichment spend, not whether anyone responds
- Free-mail leads have their own path
failedenrichment routes to a human faster, not slower- Total latency is measured against a written budget
Where this breaks
Blocking the follow-up on a slow or failed enrichment is the failure that defeats the purpose of the whole course. A lead who filled in a form and waited four minutes because a provider was slow has already opened a competitor’s tab. Set a timeout: if enrichment has not completed within your budget, route and respond on whatever data exists, and let enrichment catch up afterwards.
Further automation
The same chain works on any email-only list — newsletter subscribers, event registrations, historical form fills nobody enriched. Running it retrospectively over a backlog of bare addresses is one of the cheapest sources of qualified leads available, and it is the same build. See Waterfall Enrichment lesson 06.
Next lesson
05 — Form fill enrichment end to end, assembling the complete pipeline with its fallbacks.
Reference for this lesson: find_linkedin_from_work_email, linkedin_profile_enrich, enrich_organization, verify_email.