Overview
Manual lead scoring drifts and gets ignored. This n8n workflow enriches every inbound lead with firmographic data, runs a two-part AI grade (fit + intent), and writes back a score, tier, and one-line rationale to HubSpot. SDRs open leads pre-ranked with reasoning attached.
How it works
- HubSpot webhook on contact creation.
- Enrich with Clearbit (or Apollo) via email → company, size, industry, tech stack.
- Prompt A (fit): score 0-10 vs ICP with rationale.
- Prompt B (intent): score 0-10 from form message + UTM + pages viewed.
- Composite score → tier A/B/C → write to HubSpot with rationale in a note.
Benefits
- SDRs focus on A-tier only — response rate 2-3x.
- Consistent, explainable scoring across the team.
- Rationale in the note satisfies compliance and helps handoffs.
Use cases
- B2B SaaS with inbound-heavy pipelines.
- PLG motions where sales-assist matters on a subset.
- Consultancies filtering low-fit inquiries automatically.
Step-by-step guide
Step 1: Define your ICP as data
Employee count band, industries, tech stack signals, geographies. This becomes a JSON block in your prompt.
Step 2: Enrichment step
Clearbit / Apollo API. Fall back to a domain lookup if email is generic (gmail, yahoo).
Step 3: Prompt A — fit
System: ICP JSON. User: enriched lead. Return {score, reasons[]}. Small model is enough.
Step 4: Prompt B — intent
Include form text, UTM source, and last-30-day event history if you have it. Return {score, signals[]}.
Step 5: Composite + tier
Weight fit 60% / intent 40%. Tier: A ≥ 8, B 5-7, C < 5. Or tune from historical data.
Step 6: Write back to HubSpot
Update fit_score, intent_score, tier, and a Note with the reasoning. Notify SDR channel for A-tier only.
Example
Lead: 'Head of Ops, 240-person e-commerce brand, message mentions returns automation'. Fit: 9 (ICP match). Intent: 8 (specific pain, right title). Tier A. SDR pinged.