I'm a second-year CS student in Nairobi. I don't have a big agency behind me. I don't have a team. I don't have a list of warm contacts to call.
What I do have is a laptop, a Contabo VPS, and a habit of building things instead of waiting for things to happen.
A few weeks ago I got tired of the idea of manually searching for web design clients — going through Google Maps one by one, checking if a business has a website, writing down their number, crafting a message. It's slow, repetitive, and honestly beneath what a developer should be doing in 2026.
So I automated it.
The Problem
Most freelance web developers look for clients the same way — referrals, social media posts, cold DMs to businesses they find manually. The process is painful and inconsistent.
But here's the thing: there are thousands of businesses in every city sitting on Google Maps with 50+ reviews, a 4.8 star rating, active customers — and absolutely no website. They are already proven businesses. They already have demand. They just haven't solved the website problem yet.
That's a warm lead. And finding them manually is a waste of time when a computer can do it in seconds.
What I Built
An n8n automation workflow that does the following:
1. Takes a form input — I choose the industry (dental clinics, salons, restaurants, etc.) and city, and set a max number of results.
2. Hits the Google Places API (New) — It searches Google Maps for matching businesses and fetches their name, address, phone number, rating, review count, photos, and whether they have a website.
3. Filters out businesses that already have a website — We only want the ones with no online presence.
4. Scores each lead automatically — Every business gets a score from 0 to 10 based on their rating, review count, and photo count. High score = they care about their reputation = they're more likely to pay for a website.
5. Sends everything to Gemini AI — For each lead, Gemini generates two things: a ready-to-use website prompt I can paste into Lovable.dev to build them a site, and a personalized cold outreach message referencing their real review count and rating.
6. Saves everything to Google Sheets — Name, phone, address, score, AI-generated prompt, outreach message, status. My full lead pipeline, populated automatically.
The whole thing runs in under a minute for 20 businesses.
How the Workflow Looks
Here's the full flow:

Form (industry + city)

Google Places API — fetch businesses

Filter — remove anyone with a website

Lead scoring — rate 0 to 10

Duplicate check — skip if already in sheet

Gemini AI — generate website prompt + outreach message

Google Sheets — save the lead

Built entirely in n8n — no custom backend, no server code. Just nodes connected together.
The Lead Scoring Logic
Not all leads are equal. A business with 200 reviews and a 4.9 rating that has no website is a much hotter prospect than one with 3 reviews and a 3.2 rating.
So I built a simple scoring system:
Signal
Points
Rating 4.5 and above
3 pts
Rating 4.0 to 4.4
2 pts
Rating 3.5 to 3.9
1 pt
50 or more reviews
3 pts
20 to 49 reviews
2 pts
5 to 19 reviews
1 pt
Has Facebook page
1 pt
Has Instagram
1 pt
10 or more photos
2 pts
Score 7 and above = 🔥 Hot lead. These are the ones I contact first.
What Gemini Generates
For each business, Gemini reads the name, industry, address, rating, and review count, then writes:
A website prompt — detailed enough to paste directly into Lovable.dev and get a professional website generated. It includes suggested color palette (dental = blue/white, eye clinic = teal/navy), page sections, features like WhatsApp button and Google Maps embed, and tone guidance.
A cold outreach message — three sentences maximum, personalized with real data. Something like: "Hi Dr. Kamau, I noticed Smile Dental has 47 Google reviews but no website yet. I build websites specifically for clinics in Nairobi starting at Ksh 25,000 — here's a preview I put together for you."
The outreach message feels human because it references real information about the business. That's what makes people respond.
The Tech Stack
n8n — workflow automation, self-hosted on my Contabo VPS
Google Places API (New) — business data from Google Maps (free $200 credit monthly)
Gemini 2.0 Flash — AI content generation
Google Sheets — lead database
Total monthly cost: essentially free within Google's free tier for the volume I'm running.
What I Learned Building This
The legacy Places API will bite you. Google has two Places APIs — the old one and the new one. The old one returns a REQUEST_DENIED error if you try to use it with a new project. Enable Places API (New) specifically in Google Cloud Console.
n8n's empty result problem. When the duplicate check searches Google Sheets and finds nothing, n8n doesn't pass through an empty result — it passes through nothing. That means your downstream nodes never fire. The fix is using an IF node instead of a Filter node for the duplicate check, or bypassing it entirely while building.
AI output needs structure. If you ask Gemini to generate multiple things in one prompt, you need to tell it exactly how to format the response so your code can parse it reliably. I used labeled sections (WEBSITE_PROMPT:, COLD_OUTREACH:, COLOR_PALETTE:) and a regex parser to extract each one.
The filter is the whole point. The magic isn't in the AI generation — it's in the filter. Filtering down to only businesses with no website means every single lead in my sheet is a potential client. The conversion rate on outreach is dramatically higher when you're solving a problem someone obviously has.
What's Next
This is version one. Here's what I'm building next:
Auto-send outreach via WhatsApp API — so the cold message goes out automatically after the lead is saved
Website preview generation — build a quick demo site for each lead using Lovable.dev and include the link in the outreach
Multi-city batch search — run the same workflow across multiple cities at once
Telegram notification — get pinged immediately when a hot lead (score 7+) is found
The Bigger Picture
I built this for myself, but the real opportunity is selling it.
Every web developer in Nairobi is looking for clients. This workflow is a productized service — I can package it, charge a setup fee, and run it for other freelancers or agencies on a monthly retainer.
The same system works for any industry. Barbershops. Salons. Eye clinics. Restaurants. Real estate agents. You change the dropdown and the city, and the whole pipeline runs fresh.
This is what AI automation means in practice — not replacing developers, but giving individual developers the leverage of a team.
The Code
The full workflow JSON and setup guide are available on my GitHub:
github.com/wambuguai/clinic-lead-gen-n8n
If you're a developer in Nairobi or anywhere in Africa building something similar, feel free to fork it, adapt it, and make it yours.
Watch It in Action
I recorded a full demo showing the workflow running live — from form submission to Google Sheet population.
Watch on TikTok @wambugu_ai
Moses Wambugu is a CS student, freelance AI automation developer, and founder of PostVira. Based in Nairobi, Kenya.
Want me to build something like this for your business? Get in touch