BV
AI Agent

Inbound lead → qualified opportunity

A new lead lands in the CRM, an AI agent qualifies against the ICP, and the right human gets a Slack or email ping with full context.

Industry · MarketingClient · SMBTimeline · 4 weeksStatus · Live
n8nOpenAIGoHighLevelPostgresSlack API
The challenge

What wasn't working

01

Sales reps triaged every inbound form by hand, losing hours per week to unqualified traffic.

02

Response SLA slipped past 4 hours, and hot leads were going cold before anyone opened them.

03

Qualification notes were inconsistent — every rep captured different fields, breaking downstream reporting.

Objectives

What we needed to be true

Respond to every inbound lead in under 2 minutes.

Score against a shared ICP so reps only see qualified opportunities.

Push structured notes into GoHighLevel and Slack automatically.

The solution

How it was built

Step 01

Capture & enrichment

A single webhook endpoint receives the form payload, enriches company data via Clearbit, and normalizes it into a canonical schema.

01
Step 02

AI qualification agent

GPT-4o scores the lead against a JSON-schema ICP prompt, produces a short rationale, and tags the record with confidence + intent.

02
Step 03

Handoff & notification

Qualified leads land in GoHighLevel with the full context; the owning rep gets a Slack DM with the summary and a one-click booking link.

03
System architecture

How the pieces connect

Node 01
Website Form
Node 02
Webhook (n8n)
Node 03
Enrichment API
Node 04
AI Scoring Agent
Node 05
GoHighLevel CRM
Node 06
Slack Alert
Delivery

Implementation timeline

  1. Phase 01

    Discovery

    Mapped the current triage workflow with the sales team, captured ICP rules.

  2. Phase 02

    Prototype

    Shipped a working n8n prototype in 5 days for internal testing.

  3. Phase 03

    Hardening

    Added retries, dead-letter queue, and Sentry alerts for failed enrichments.

  4. Phase 04

    Rollout

    Migrated production traffic behind a feature flag with a 48-hour observation window.

Technology

Stack

n8n
OpenAI
GoHighLevel
Postgres
Slack API
Features

What ships to the user

Sub-2-minute response

Median lead-to-Slack time is 47 seconds.

Business value
47s median

Structured scoring

Every lead lands with a confidence score, rationale, and next-action.

Business value
100% structured

Human-in-the-loop

Low-confidence leads route to a review queue instead of auto-replying.

Business value
Zero false-positive replies
Impact

Before → after

Before

Manual triage taking 4+ hours to respond

After

Automated triage responding in under 2 minutes

Before

Free-text notes, no reporting

After

Structured JSON, dashboards on day one

Results

Business impact

0%
less manual triage
0s
median response time
0.0×
qualified pipeline lift
Need something similar?

Let's map your workflow and see what's worth automating first.

Book a discovery call
Reflection

Lessons learned

Prompt-only scoring is fragile. Wrapping the LLM in a JSON schema and validating output catches 90% of edge cases.

A cheap enrichment call before the LLM saves 30% on token spend and improves score quality.

What's next

Future improvements

Add auto-drafted reply for high-confidence leads (human-approved before send).

Route by territory + product line using the same scoring rationale.

FAQ

Common questions

A working prototype in one week, production-hardened in three to four.
Let's build yours

Have a workflow that looks like this?

Bring me one real bottleneck. I'll tell you whether it's worth automating, and what it would take.

Book 30 Minutes Call