Eliminate Inbound Lead Leakage by 35 Percent Fast
Your inbound leads don’t “go cold.” You let them leak across tabs, handoffs, and half-owned fields until the only thing left is a Slack ping that says “any update?” and a CRM record that looks finished but can’t be acted on. That’s not a sales problem. It’s a routing system with missing teeth.
This playbook builds a lead-to-first-touch engine that stops the bleed by forcing three things to be true: every lead is enriched, scored, and assigned with an explicit reason; every rep gets a context packet, not a raw form submission; and every step is observable when it fails.
Tool comparison, in the only way that matters: what each tool owns in the chain.
Perplexity is your enrichment and reality check layer. Use it to pull quick firmographic context and surface “why this company, why now” signals from public sources, then normalize it into a few fields you actually route on (ICP fit, urgency hints, likely use case). It’s fast, but you still have to constrain outputs or you’ll route on vibes.
n8n is your policy engine. Unlike Zapier/Make, it’s better when the logic turns ugly: branching by region, account matching, round-robin with exceptions, SLA timers, and retries that don’t silently die. n8n turns “lead routing policy written in invisible ink” into versioned workflows you can inspect.
Airtable is your routing truth table. Keep rep capacity, territory rules, and exception lists in one place that ops can edit without redeploying automations. One table change should alter behavior. If it doesn’t, you’re back to folklore.
Supabase is your event log and dedupe spine. Store every lead event, every assignment, every failure reason, and every retry. Not for vanity dashboards. For postmortems.
Next section: implement the exact flow—capture, enrich, score, assign, notify, and audit—plus the failure modes that prove whether your system is real.
Routing inbound leads with enrichment scoring and alerts
We had the classic “inbound is strong, follow-up is weak” problem at a 35‑rep B2B SaaS team. Forms from the website, in-product trials, webinar signups. All landing in HubSpot. The CRM looked populated. Activity looked dead.
The bottleneck wasn’t effort. It was ambiguity. Leads hit a generic queue, enrichment happened “later,” and assignment rules lived in three places: a Google Sheet for territories, a Slack message from Sales Ops about exceptions, and one half-updated HubSpot workflow. Reps weren’t ignoring leads. They were waiting for someone to tell them if the lead was real.
Implementation looked like this.
Capture: n8n ingests every inbound event via webhook. First thing it does is generate a lead_id and write the raw payload into Supabase. No parsing first. Store it. Always.
Enrich: n8n calls Perplexity with tight prompts: company, industry, headcount band, any recent trigger, and a one-line “why now.” Then n8n normalizes into fields we actually route on. ICP_tier, region_guess, urgency_hint, likely_use_case. Anything else gets dropped.
Score + assign: n8n reads Airtable as the routing truth table. Territories, rep capacity, round-robin pools, named-account exclusions. It applies rules, then writes the assignment event back to Supabase with an explicit reason string. Not “matched by workflow.” Actual reason.
Notify: rep gets a context packet in Slack. Three bullets, not a JSON dump. Plus a link to the audit trail.
Now the failure. Our first pass deduped on email only. Bad idea. Webinar platforms used personal emails, trials used work emails, same company. We ended up with two owners, two follow-ups, one confused prospect. The fix was painful: dedupe on domain + normalized company name + a fuzzy match threshold, but still allow separate contacts under one account.
And the friction you don’t notice until week two. Airtable got edited without guardrails. Someone changed “EMEA” to “Europe.” n8n didn’t fail. It routed to nobody. Silent misroutes for six hours. Why does “no match” not scream by default?
We added a hard failure path: if assignment returns null, page Ops, log failure_reason, and hold the lead in a retry queue with an SLA timer. Observable. Ugly. Real.
Want to apply this to your setup?
Making Lead Routing Reliable With Contracts And QA
If you’re thinking “cool, we’ll just copy this and inbound will behave,” here’s the part people skip: this workflow scales until it doesn’t, and when it breaks it tends to break quietly in the exact places your team assumes are safe.
The first hidden cost is taxonomy drift. You can design pristine fields like ICP_tier and region_guess, but the moment marketing renames a segment, sales adds a territory, or CS invents a new use case label, you’ve got multiple vocabularies pretending to be one. Airtable makes edits easy, which is great right up until “easy” becomes “unreviewed.” If you don’t treat routing fields like API contracts with change control, you’re building a system that can be invalidated by a well-meaning dropdown edit.
Second: Perplexity is not enrichment, it’s interpretation. It’s excellent for speed, but you’re routing revenue based on probabilistic reading of public breadcrumbs. If you don’t measure its error rate by segment, you’ll accidentally create routing bias: certain industries get better “why now” narratives, certain geos get worse region guesses, certain company types get mis-scored because their footprint is messy. You need a weekly calibration loop where humans spot-check, adjust prompts, and update normalization rules. If that sounds like work, it is.
Third: observability isn’t just logging. Supabase as an event spine is only useful if someone owns the dashboards and alerts like a product. You want leading indicators: percent of leads that hit null assignment, time-in-retry, enrichment timeout rate, dedupe collisions by source, and “owner reassigned within 24h” as a smell test.
What we ended up doing inside a real team was instituting routing PRs. Yes, PRs. Airtable changes that affect assignment rules require a second approver, and n8n workflows get versioned with a changelog. We also created a sandbox pipeline with replayable historical leads. If a rule change can’t be tested against last week’s inbound, it doesn’t ship.
This isn’t bureaucracy. It’s the price of turning “lead routing” from folklore into infrastructure.


