Skip to content
UPPER LAYER®

Case study · Lead automation · AI Automation

AI Client Acquisition SystemLead automation Case Study

Six n8n workflows that answer every enquiry in under a minute: they take leads from any form, score them with Gemini, log them in HubSpot or Google Sheets, reply by email and WhatsApp with a booking link, brief me before the call, follow up, and stop the moment a lead replies. It runs on free tiers for $0 a month.

Type
The studio's own lead pipeline
Role
Workflows, prompts, integrations, site form
Status
Live behind this site's contact form
Service
AI Automation
Last updated

The problem

Small service businesses lose leads between “form submitted” and “someone replies”. The enquiry sits in an inbox for hours, nobody records it, the owner can't tell a serious buyer from a spammer, leads arrive from three different form tools in three different shapes, and if the lead doesn't book straight away nobody follows up.

What I built

The AI Client Acquisition System is six n8n workflows behind the “Prefer to write first?” form on this site. A normaliser takes submissions from the site, Typeform, Tally, Google Forms and Apollo or Clay lists and turns them into one lead shape. Lead Intake checks whether the contact is new, scores the enquiry with Gemini, writes it to the CRM, replies by email and WhatsApp with a booking link and alerts me on Telegram and WhatsApp when a lead is hot. A CRM adapter sends every record to HubSpot or to Google Sheets, whichever the business uses. Booking catches the Cal.com webhook, moves the contact to “Call Booked” and sends me a pre-call brief. Follow-up nudges open leads twice before moving them to Nurture, and Reply Detection reads replies on email and WhatsApp, stops the follow-ups and tells me to step in. Everything runs on free tiers. The leads in these screens are my own test enquiries; “Priya Mehta” and BrightSmile Dental are a sample lead, not a client.

What it does

The features that matter

What it actually does, one feature at a time.

01

A reply in seconds, on email and WhatsApp

Hot and warm leads get a message written for them: it restates their problem in plain words, asks one concrete question and links to the booking page, by email and, when they leave a number, on WhatsApp. The visitor sees “Thanks” in about half a second while the rest runs in the background.

02

Scored by the model, tiered by code

Gemini returns a score, intent, budget, urgency and a summary as strict JSON. A code node applies the rule itself: 70 and up is hot, 40 to 69 warm, under 40 cold, and spam is always cold and never answered. It tiered 20 of 20 labelled test leads correctly, spam included.

03

Any form in, any CRM out

One normaliser maps Typeform, Tally, Google Forms and Apollo or Clay rows onto the same lead, with phone numbers cleaned to E.164. A CRM adapter writes it to HubSpot, with eight custom fields, or to Google Sheets with a CSV export, so a business without HubSpot loses nothing.

04

A brief before every call

When a lead books on Cal.com, Gemini writes a pre-call brief from the stored summary, with what they want, what to ask and the angle to lead with, and sends it to my Telegram and WhatsApp.

05

Follow-up that knows when to stop

Open leads get a nudge after 24 hours and a second, with a link to my work, 48 hours later. A reply on email or WhatsApp is classified by Gemini, stops the sequence at once and alerts me; silent leads move to Nurture, and a lead who books gets nothing more.

06

Honest by rule

Every writing prompt carries a rule never to invent clients, results or numbers. An early nudge claimed work for “a similar design firm” that doesn't exist; the rule fixed it in 4 of 4 re-samples.

Under the hood

How it works

The part nobody sees, step by step.

01

Normalise and enrich

Each source maps to one lead shape, and a missing or invalid email is turned away with a 400. A returning contact gets a note on their record instead of a second welcome. If the lead has a company website, its title and description are fetched as context, with a 5-second timeout.

02

Qualify

Gemini scores the lead and code sets the tier. Every Gemini call has a fallback model on its error output, since free-tier 429s and 503s are common, and a reply that can't be parsed defaults the lead to warm so it is never dropped.

03

Log and reply

The CRM adapter upserts the contact into HubSpot or Google Sheets, the reply goes out over Gmail and WhatsApp, and a hot lead triggers alerts on Telegram and WhatsApp. Alerts, enrichment and messaging fail soft, so a broken side channel never blocks the reply or the CRM write.

04

Book, follow up, hand over

The Cal.com webhook flips the contact to Call Booked and sends the brief. An hourly run nudges open leads, timed from the last message rather than from sign-up. When a lead replies, the follow-ups stop and the conversation is handed to me.

Screens

Every screen, as shipped

Captured from the live product at upperlayerstudio.com/contact.

The enquiry

The form on this site's contact page, filled in with a sample lead. The visitor gets a thank-you straight away, and the calendar below is already filled in with their details.

Studio contact form submitted with inquiry from BrightSmile Dental requesting sales AI automation
A sample lead fills in the form
Studio inquiry confirmation screen displaying instant thank-you message and Cal.com meeting scheduler
The thank-you, shown about half a second later

The workflows

The core of the system as it runs in production on n8n: intake, booking and follow-up.

n8n automation dashboard showing active Lead Intake, Booking, and Follow-up workflow pipelines
Lead Intake, Booking and Follow-up, all published
n8n Lead Intake pipeline: website enrichment, Gemini lead scoring, HubSpot sync, and Telegram alerts
Lead Intake: score, log, reply and alert
n8n Booking workflow: receives Cal.com webhook, updates CRM contact, and generates Gemini pre-call brief
Booking: update the CRM and brief me
n8n Follow-up workflow scheduled hourly to evaluate pending leads and send personalized nurture emails
Follow-up: nudge or move to Nurture
n8n execution log confirming successful automated follow-up execution completed in 1.468 seconds
An hourly Follow-up run, done in 1.5 seconds

What the lead and I get

The reply the agent wrote for the sample lead, and the booking it led to. The test inbox address and the meeting link are blurred.

Personalized AI email reply in Gmail referencing client requirements and proposing discovery call link
The reply, written for this lead
Cal.com scheduling confirmation screen for a 30-minute discovery call booked from sales inquiry
The discovery call, booked on Cal.com

On my phone

What arrives on Telegram when a call is booked: who it is, what they want, what to ask and how to pitch it.

Telegram pre-call intelligence brief for BrightSmile Dental with qualification notes and pitch strategy
A pre-call brief
Telegram booked meeting brief outlining prospect call volume pain points, budget, and sales questions
The brief for the booked test call

The stack

Orchestration
n8n (self-hosted, Docker) · Cloudflare tunnel
AI
Gemini 3.1 Flash-Lite · Gemini 3.5 Flash (fallback)
CRM
HubSpot Free CRM · Google Sheets
Messaging
WhatsApp Business Cloud API · Gmail SMTP · Telegram bot · Cal.com
Intake
Next.js 16 Server Action · Typeform · Tally · Google Forms

The result

14.0s

average from form submit to reply sent, across 16 test leads; every one under 60 seconds, the slowest 32.6s when the fallback model stepped in

Source: n8n execution history and the repo's metrics script, 6 Oct 2026

Start a project

Tell me what needs to change

Share your product and the work you need. I'll help you find the right scope and next step.