Automated workflow · n8n + Claude

Lead Enrichment & Scoring

Every inbound lead gets triaged the moment it arrives — no SDR touches a cold one. A webhook receives the lead, Claude scores it 0–100 against a fit & intent rubric, and the result is archived and returned immediately.

2
hot leads
2
warm leads
2
cold leads

What separates hot from cold

Claude scores every lead 0–100 on three things: seniority/title, how well the company fits the ideal customer profile, and how much urgency the message itself signals. The tier is just a strict cutoff on that score.

Cold · 0–39
Warm · 40–69
Hot · 70–100
4
22
56
60
74
97
Seniority
Does the title suggest they can actually approve a purchase?
Company fit
Size, industry, and stage match against the ideal customer profile.
Urgency
Does the message itself signal a timeline, budget, or blocker — or just curiosity?

How a lead moves through it

One straight path from intake to scoring, then a two-way fork on the result. Both forks land in the same archive and response.

01 · trigger
Lead Webhook
POST /webhook/lead-scoring receives name, email, company, title, message.
02 · normalize
Normalize Lead Input
Cleans the payload; falls back safely whether fields arrive nested or flat.
03 · enrich
Enrich Company Data
Domain-based lookup adds company size band, industry, funding stage. Mocked for this demo — labeled mocked-demo-data in its own output.
AI Score Lead
Claude scores 0–100 and assigns a tier, then drafts the follow-up message itself — a Slack/email alert for hot leads, an outbound email for warm or cold ones.
Is Hot Lead?
Routes on tier === "hot".
if hot
Flag for Notify
Marks the record so the Slack/email alert Claude already drafted actually gets sent to the sales team.
Save Scored Lead
Archived to the leads_scored Data Table.
Respond With Score
Sends the score, tier, and next action straight back to whatever submitted the lead.
if not hot
Save Scored Lead
Same archive node — the drafted nurture email travels along with the record even though no Slack/email alert fires.
Respond With Score
Same response node as the hot path.

Six test leads, scored live

The people and companies below are made-up test data, not real leads. The scores, reasoning, and drafted messages are genuine, unscripted output — each one is what Claude actually produced from running that message through the live workflow.

Marcus Cole · CTO, Ironframe Inc
Hot
Inquiry message
"Our SOC 2 renewal is in three weeks and we need a security review of your platform completed before we can sign. Can we get on a call today?"
Score
97 / 100
Reasoning
CTO at a 500+ public enterprise software company with a hard SOC 2 deadline in 3 weeks, explicitly ready to sign pending a security review — maximum seniority, size, fit, and urgency signals all firing simultaneously.
Automated message · internal Slack/email alert
#hot-leadsauto-posted
🚨 @channel HOT LEAD — drop everything on this one! Marcus Cole, CTO @ Ironframe Inc just came in scoring 97/100. He needs a security review of our platform completed in the next ~3 weeks to make their SOC 2 renewal — and said they're ready to sign once it's done. Asked for a call today. ✅ Action: Route to AE NOW + pull in a Solutions Engineer for the security review. Target callback within 2 hours. 🔥
Jamie Rivera · VP of Operations, Acme Startup
Hot
Inquiry message
"We need enterprise pricing for 200 seats, hoping to roll out next quarter."
Score
74 / 100
Reasoning
VP-level title with explicit enterprise pricing request, named 200-seat volume, and a next-quarter rollout deadline — offset slightly by a small Seed-stage company size worth validating.
Automated message · internal Slack/email alert
#hot-leadsauto-posted
🔥 Hot Lead Alert Jamie Rivera — VP of Operations @ Acme Startup (acme-startup.io) 📊 Score: 74/100 — HOT Jamie is asking for enterprise pricing on 200 seats with a target rollout next quarter. High intent, specific ask — slight flag on company size (Seed / 11–50 employees) worth validating, but don't let this one sit. ✅ Action: Route to AE for discovery/demo call within 24h.
Priya Nair · Marketing Manager, Brightloop Corp
Warm
Inquiry message
"Does your platform integrate with HubSpot? Just comparing a few options for later this year, no rush."
Score
60 / 100
Reasoning
Strong company profile (500+, public, enterprise software) and relevant industry fit, but a mid-level title with no decision-making authority and explicitly low urgency pull the score below hot.
Automated message · drafted email to the lead
Sarah Kim · Product Manager, Nimbus Analytics
Warm
Inquiry message
"We're looking into automation tools for sometime later this year and wanted to see if your product could fit our workflow. Would appreciate some general info when you get a chance."
Score
56 / 100
Reasoning
Good company and industry fit for mid-market SaaS, but the PM title lacks buying authority and the inquiry signals early-stage, low-urgency exploration with no defined pain point or timeline.
Automated message · drafted email to the lead
info@quickmail.io · no name, no title given
Cold
Inquiry message
"tell me more"
Score
22 / 100
Reasoning
Generic "info@" inbox with no named contact or title, seed-stage SMB with minimal budget signal, and an extremely low-intent message with no stated pain point or urgency.
Automated message · drafted email to the lead
Alex Student · personal Gmail
Cold
Inquiry message
"Just curious how your product works, doing some research for a class project."
Score
4 / 100
Reasoning
Student with no company affiliation, personal email, zero commercial intent, and an explicitly academic inquiry — fails every B2B qualification signal.
Automated message · drafted email to the lead

Every tier gets a message, not just hot

The same AI call that scores the lead also drafts what happens next, matched to the tier: a hot lead gets an internal Slack/email alert telling sales to move now; a warm or cold lead instead gets an outbound email drafted directly to them, with the tone scaled down as urgency drops. Nothing goes out without a message attached — even the "tell me more" and class-project inquiries above got a real drafted reply.

What is leads_scored? It's a Data Table — a lightweight database built directly into this n8n workspace, not a separate external system. It lives inside this n8n project, viewable in n8n's own Data Tables screen and reachable by any other workflow in the same project. It isn't exposed to the public internet on its own — the only way anything outside n8n sees this data is through what a workflow deliberately sends back out, like the drafted messages above.
lead_name company_domain score tier notified reasoning
Marcus Cole ironframe-inc.com 97 hot true CTO, hard compliance deadline, explicit readiness to sign, same-day call request.
Jamie Rivera acme-startup.io 74 hot true VP-level title, explicit enterprise pricing request, defined seat count and timeline.
Priya Nair brightloop-corp.com 60 warm false Good company fit, but mid-level title and explicitly low urgency.
Sarah Kim nimbus-analytics.com 56 warm false Good fit, PM title lacks authority, early-stage low-urgency exploration.
info quickmail.io 22 cold false Generic inbox alias, no seniority signal, near-zero-intent message.
Alex Student gmail.com 4 cold false Personal email, no company affiliation, low-intent academic message.

Going live: what changes outside this demo

Nothing here runs on a manual trigger in production. A real lead has to enter this pipeline the moment it exists, and the result has to land somewhere a person actually sees it — usually a CRM.

where leads already are
CRM or website form
Salesforce, HubSpot, or a plain contact form — whichever system a lead hits first fires a "new lead" webhook the instant it's created.
unchanged from this demo
This scoring pipeline
Same normalize → enrich → score → draft sequence shown above. Real enrichment data would replace the mocked lookup here.
write-back
CRM record updated
Score, tier, and reasoning get written onto the lead as fields — so anyone opening the record in the CRM sees them, not just this workflow's log.
human in the loop
Real Slack/email post + a reviewed draft
Hot-lead alerts post to a real channel immediately. Drafted emails land as a task or draft in the rep's inbox for a quick read before sending — not an auto-send.

Why not just use the CRM's built-in lead scoring?

Salesforce (Einstein) and HubSpot (predictive scoring) both ship native lead scoring, and at a company that already has one configured well, this workflow isn't a replacement for it.

Where a custom pipeline like this earns its place: native scoring is often a paid add-on gated behind a higher pricing tier, it needs a real volume of historical conversion data before it's trustworthy, it returns a bare number with no explanation of why, and none of the mainstream options draft the actual follow-up message. This build is the shape you reach for when native scoring isn't available at your tier, doesn't exist for your CRM, or needs rubric logic and messaging specific to your business that an off-the-shelf model can't give you.