The Problem With Manual Lead Triage

A SaaS founder was spending two hours every morning reviewing intake form submissions. Some leads were enterprise deals worth chasing hard. Others were students on free plans. The form data was all there — company size, budget range, use case — but someone had to read it, make a judgement, and route it to the right person.

The information for a decision already existed. For a comprehensive approach, read how to automate your business — the same principles apply to lead qualification and beyond.

The information for a decision already existed. The decision itself didn't need a human.

— the same principles apply to lead qualification and beyond.how to automate your business — the same principles apply to lead qualification and beyond.

The Scoring Model

Before touching n8n, we spent an hour with the founder defining what a "good" lead looked like. We landed on five signals, each worth a different number of points:

SignalCriteriaPoints
Company size50+ employees+30
Budget stated$1k+/month+25
Use case fitCore product use case+20
TimelineReady within 30 days+15
Decision makerSelf-identified as buyer+10

Score ≥ 70 = Hot lead. Score 40–69 = Warm. Below 40 = Nurture sequence. Simple, defensible, and the founder could tweak the weights in a Sheets config tab without touching the workflow.

The Workflow

Trigger:n8n (JS node):
n8n (JS node): Parse fields, run scoring formula against config
Switch node: Route by score — Hot / Warm / Nurture
Hot path: Slack DM to founder + HubSpot contact (Hot tag)
Warm path: Add to HubSpot sequence + Slack #warm-leads channel
Add to email drip campaign + tag in HubSpotNurture path: Add to email drip campaign + tag in HubSpot
All paths:Typeform has a native webhook option under Integrations. Tally does too, though the payload structure is slightly different — you'll need to map field IDs to readable names in the first n8n node. We used a Set node to normalise the shape before the scoring logic so the formula works identically regardless of which form tool fires it.

Plugging In the Webhook

Typeform has a native webhook option under Integrations. Tally does too, though the payload structure is slightly different — you'll need to map field IDs to readable names in the first n8n node. We used a Set node to normalise the shape before the scoring logic so the formula works identically regardless of which form tool fires it.

The scoring JavaScript is about 25 lines. It reads weights from a Google Sheets "config" tab so the founder can adjust them without opening n8n. This was the single decision that saved the most back-and-forth later.

The deduplication check is two lines — check by email, branch on exists/new.

The CRM Step

We used HubSpot's n8n node to create or update a contact, set the lead score as a custom property, and apply a tag. If the contact already existed (returning lead), the workflow updated rather than duplicated. The deduplication check is two lines — check by email, branch on exists/new. This is the step most people skip and regret.

What We Built in a Weekend

The Result

// outcome
  • Lead triage time: 2 hours/day → zero
  • Hot leads reach founder within 60 seconds of form submission
  • Warm and nurture leads automatically enrolled in the right sequences
  • Scoring weights adjustable via Sheets — no developer needed
  • ~44 hours/month returned to the founder

Can You Replicate This?

. Lead qualification bots are one of our most requested projects.

If you'd rather skip the weekend and have it live on Monday, we can build it for you. Lead qualification bots are one of our most requested projects.