Skip to content
Can Elmas

AI Automation · 8 min read

AI Lead Enrichment and Routing: A Build Guide for Marketing Ops

TL;DR

Let enrichment vendors supply the facts, let an AI model make the judgment calls data can't, such as what a company actually sells, and let fixed rules decide routing. Pre-filter before paying for lookups, write AI output to separate CRM fields, send low-confidence leads to human review, and measure speed-to-lead and routing accuracy weekly.

· Published · Updated

AI lead enrichment works when each part of the workflow does the job it’s good at: enrichment vendors supply the facts, a language model makes the judgment calls the data can’t, and fixed rules decide who gets the lead. Build it as one workflow, from form submit to CRM update, with logging and a human review queue in place from day one. Then judge it on two numbers: speed-to-lead and routing accuracy.

What enrichment and routing should decide

Before choosing tools, write down the decisions the workflow makes for every inbound lead. In most B2B companies there are four, and every field you pay to enrich should feed one of them. If nothing changes based on funding stage, don’t buy funding stage.

DecisionMain inputsWho decides
Real prospect, or a job seeker, vendor, student or existing customer?Email domain, form answers, free-text messageRules first, the model for ambiguous cases
Fit tier against your ideal customer profile (ICP): A, B, C or disqualifiedFirmographics, homepage content, personaThe model, applying your written rubric
Owner: account owner, territory, segment team or nobodyCRM account records, territory, segmentRules only
Next step and how fast: rep, nurture or no actionTier, intent, ownerRules only

This isn’t a points-based lead score, which builds over weeks of engagement; it’s a call made minutes after a form submit. If you run a lead scoring model in HubSpot, the AI tier can feed its fit side.

Architecture of the workflow

Seven steps, each writing its output to the log before the next runs:

  1. Trigger. A form webhook or a CRM “contact created” event. Carry the submission ID through every step so a retry can’t duplicate or reassign a lead.
  2. Normalize and pre-filter. Extract the domain and check it against free-mail and disposable-domain lists. Look it up in your CRM: existing customers and accounts with an open deal go straight to their owner. Spam stops here.
  3. Enrich. Company data from the domain, person data from the email, and the company’s homepage text.
  4. Qualify. A model call receives form answers, enrichment data, homepage text and your written ICP, and returns a structured verdict.
  5. Route. Deterministic rules turn the verdict into an owner and a next step.
  6. Update the CRM. Write fields, set the owner, create the task, alert the rep.
  7. Log. One row per lead with every input, output, timing and cost.

n8n, Make and Zapier can all run this; the n8n vs Zapier vs Make comparison covers how volume, hosting and custom logic decide between them.

One timing catch: a booking calendar on the thank-you page must route in seconds, before the model finishes. Route it on form answers plus a fast company lookup, and let the AI step confirm or flag the route right after.

Enrichment sources and cost per lead

Three kinds of sources:

  • Your CRM’s built-in enrichment, if your plan includes it. Easiest to wire up, though coverage varies, especially for small companies.
  • Data vendors such as Apollo, ZoomInfo or Clay, which pulls from many providers through one account. You pay per lookup or in credits.
  • The company’s website. Nearly free to fetch, and it shows what databases miss: what the company sells, and to whom.

Run them as a waterfall: cheapest first, the next only if a required field is still empty. Enrich only fields your decisions use, usually employee range, industry, country and seniority. Look up the person only when the company passes basic firmographic filters, and cache company data by domain so a repeat company costs nothing.

A hypothetical month of 1,000 submissions, 300 removed by the pre-filter, with made-up prices:

LineVolumeUnit costMonthly cost
Company lookups, after cache hits500$0.20$100
Person lookups, firmographic fit only350$0.40$140
Model calls700$0.02$14
Automation platformFlat—$50
Total$304

That’s about $0.30 per submission and $0.43 per lead that reached the model, far less than the cost of five minutes of rep research per lead. Enrichment credits, not the model, are the big line, so the pre-filter and cache matter more than model choice.

AI qualification against your ICP

The model’s job is judgment, not facts. Asked for headcount, it will guess, and a guess in a CRM field looks exactly like data. Ask what enrichment can’t answer:

  • Is this B2B software, an agency or a retailer, based on what the homepage says?
  • Does the message signal buying intent, a support request, a partnership pitch or a job application?
  • Does a messy title like “Growth & RevOps Lead” match a buyer persona?
  • Taken together, which ICP tier fits?

Write the ICP as a rubric

A model can only apply criteria it can see. Put a short rubric in the prompt: must-haves, disqualifiers and a plain definition of each tier. Add five to ten real examples from closed-won deals and disqualified leads, each with the correct answer. Tell it to return “unknown” when evidence is missing and to cite the evidence behind every call.

Force a structured output

Ask for JSON that matches a fixed schema, and validate it before anything downstream reads it:

{
  "tier": "A",
  "intent": "buying",
  "persona": "marketing_leader",
  "disqualify_reason": null,
  "confidence": "high",
  "reason": "B2B payroll SaaS; 120 employees; VP Marketing asking about pricing.",
  "missing": []
}

Use fixed value lists for tier, intent, persona and disqualify reason, so routing rules never parse prose. If validation fails, retry once, then send the lead to human review; never drop it. Keep the temperature low where the model allows it, and version the prompt, so every verdict traces back to the rubric that produced it.

Routing rules and CRM updates

Routing belongs in rules you can read, not in the model. Evaluate them top to bottom and stop at the first match:

ConditionRouteExample deadline
Existing customerAccount manager or supportSame day
Account with an owner or open dealAccount owner1 hour
Named target accountAssigned account executive15 minutes
Low confidence or failed validationHuman review queue4 hours
Disqualified: job seeker, vendor, student, out of ICPRelevant inbox or no actionNone
Tier A, buying intentRound robin by segment or territory15 minutes
Tier A with research intent, or tier BSDR queueSame business day
Tier CNurture sequenceAutomated

Set deadlines from rep capacity. Write each rule’s ID to the lead record, so a misrouted lead shows which rule sent it.

For the CRM update:

  • Write model output to dedicated fields: AI tier, reason, confidence, prompt version, rule ID and enrichment date.
  • Fill standard fields like industry only when empty. Never overwrite what a rep entered.
  • Never reassign an owned lead; alert the owner instead.
  • Create the follow-up task and send the rep the one-line reason, so they know why the lead matters before the first call.

Guardrails, logging and human review

Most failures here are silent: empty vendor fields, a timed-out model call, a rule that stops matching after a dropdown is renamed. Build guardrails before launch:

  • Spending caps on the enrichment and model API accounts
  • Timeouts on every external call, with a fallback that routes on form data alone
  • Any error defaults to human review, so no lead is dropped
  • The model receives only the fields it needs, and vendor terms on personal data have been checked
  • Deletion and opt-out requests also clear caches and logs
  • An alert when error rate or run volume moves sharply off its normal range

Log one row per lead: submission ID, step timestamps, enrichment fields and source, prompt version, model output, rule fired, owner and cost. That table is how you debug and measure.

Human review happens in three places: a daily queue for low-confidence verdicts, a weekly random sample of about 20 leads checked against the rubric, and a “wrong route” dropdown reps fill in on the lead record (“not ICP,” “should be mine”). Each misroute becomes a new prompt example or a rule fix.

Before going live, run two weeks in shadow mode: the workflow enriches, qualifies and logs, but leads still route the old way. Compare its calls with what happened, fix the rubric, then switch it on. It’s how I run most AI automation builds: read-only first, write access once the log earns it.

Measuring speed-to-lead and accuracy

Speed-to-lead is the time from form submission to the first human response: a call, a personal email or a booked meeting, not just assignment. Report the median and the slowest 10%, split by business hours and after hours, because averages hide leads that waited overnight.

Routing accuracy needs more than one signal:

MetricDefinitionSourceIf it’s off
Speed-to-leadSubmit to first human responseCRM activity timestampsCheck rep capacity, then workflow latency in the log
Review agreementSampled leads where the reviewer agrees with tier and routeWeekly sampleAdd examples for categories it misses
Reassignment rateLeads whose owner changes within 7 daysCRM owner historyFix the rules behind them
Tier conversionMeeting and opportunity rate by AI tierCRM reportsIf tier B converts like tier A, the rubric is too strict
Missed fitsNurtured or disqualified leads that later became opportunitiesMonthly CRM searchLoosen the disqualifier that caught them

Tier conversion matters most over time. If tier A leads don’t meet and buy at a clearly higher rate than tier C, the qualification step isn’t sorting anything, however fast it runs.

Get it built

If inbound leads wait hours or land with the wrong rep, I can build this workflow on your CRM, shadow mode and logging included. The AI automation add-on starts at $2,500 a month, or begin with a Growth Audit, $1,500 fixed and credited if we continue. See pricing or get in touch.

FAQ

Frequently Asked Questions

What is AI lead enrichment?

It's adding company and contact data to an inbound lead automatically, then using an AI model to interpret it: what the company actually does, whether the message shows buying intent and how well the lead fits your ICP. The data comes from enrichment vendors and the website; the model supplies judgment, not facts.

Should the AI model decide which rep gets a lead?

No. Let the model return a structured verdict such as tier, intent and confidence, and let fixed routing rules assign the owner. Rules are predictable, and every assignment can be traced to the rule that made it.

How much does AI lead enrichment cost per lead?

It depends mostly on your enrichment vendor's credit pricing, since model calls are usually the smaller cost. Filter out spam, personal emails and existing customers before any paid lookup, and cache company data by domain, to keep the cost per lead down.

Can I build this inside HubSpot without a separate automation tool?

Partly. HubSpot workflows can handle rules-based routing and owner rotation, and depending on your plan you may have built-in enrichment and custom code actions. A tool like n8n, Make or Zapier helps when you need a multi-vendor waterfall, a custom model prompt or detailed per-lead logging.

How do I know the AI qualification is accurate enough to go live?

Run it in shadow mode for two weeks, logging its calls while leads still route the old way, and compare them with what a reviewer would decide. Go live when it agrees consistently on tier A and disqualification calls, and keep a weekly sample review after launch.

Work with me

Let’s find your biggest growth lever

Tell me about your growth challenge. I’ll tell you honestly if I can help — and if I can’t, who can.

  • ✓ No obligation
  • ✓ No sales script
  • ✓ Honest feedback
  • ✓ Clear next steps