The moment you click save, ten APIs fire in parallel and three AI models run sequentially. Carrier-verified phones, SSL audits, map-pack rank, owner contact, sales hooks — all attached to the row before the enrichment progress bar finishes.
Lead databases give you a name, a domain, and a guess at an email. Real prospecting needs map-pack rank, review sentiment, page speed, the owner's mobile, and a reason to call today. That's what enrichment actually is.
The moment a user saves a lead, Inngest fires lead/saved. Six data collectors run in parallel. Three AI stages run sequentially once data is in. The row flips to complete only when all three legs finish.
Every external data source we need fires at once. They don't wait for each other — they land into the row as they complete.
Carrier type, mobile/landline/VoIP classification, deliverability status, blacklist check. Dead numbers get flagged before the rep sees them.
Validity, quality score, free/role/disposable flags. Pattern-generated fallbacks for domains that don't publish. Zero bounce-risk sends.
Registration date, registrar, renewal window, SSL cert validity. The "expired cert" hook pays for itself on the first call.
Map-pack rank for the business's primary keyword, organic rank, top-3/top-10 flags, and the top 5 competitors who beat them.
Title, meta, H1 count, word count, content quality, PageSpeed, 30+ technographics, booking/chat widgets, contacts, blog, sitemap.
Owner name, personal emails, personal phones via reverse phone lookup. The "call the owner directly" path for agencies that live on the phone.
Once the parallel jobs land, three AI stages run in order — each one reading the output of the stage before it. Competitor discovery → insights → 18 hand-crafted sales hooks.
Scraping Dog's SERP results get parsed. Any nearby competitor on the map-pack gets upserted to your database, pre-enriched, so the next time you search the area they're already there.
Claude Haiku reads the full row and fills in: best time to call, pitch angle, digital maturity, budget signal, lifecycle stage, review sentiment summary, upsell likelihood, seasonality, and market positioning.
Claude Sonnet writes 18 hooks — 3 each across local SEO, reviews, website, SEO, social, and competitors. Every hook is specific to this business, not generic copy. Paste straight into your first email.
Finding "who runs this place" is half the battle. We burn through five strategies in order so the answer is as clean as possible — and we tell you which strategy worked.
Contact with "owner" or "founder" title scraped from the website by Firecrawl.
AI's owner_name extraction from the full website content.
First named contact found by Firecrawl anywhere on the site.
Perplexity Sonar search on the business name + city.
Claude Haiku with web search tool enabled — last-ditch.
We track three legs explicitly — Firecrawl (website), Outscraper (Google), and contact enrichment. Partial rows never show up in your main view. If a leg fails, we retry; if it keeps failing, the row lands with a clear "enrichment incomplete" badge and the rep can force a re-run.
Six APIs, three AI stages, one normalized row with 50+ signals. Every lead you save, every time — no extra cost, no extra clicks.