An outbound WhatsApp agent that finds home sellers, messages them, and hands over the warm ones
Not a chatbot. An autonomous agent built for a real-estate agency in Spain that watches multiple property portals in real time, tracks every price change and the local news behind it, messages private sellers from the agent's own WhatsApp number, reads every reply, runs valuations on request, and hands the human agent a lead only when the seller says yes.
The problem and the build
The agency wanted every new private-seller listing in its territory contacted within days, followed up consistently for weeks, and handed to a human agent only when the seller showed interest. Doing this by hand meant missed listings, late follow-ups and no record of who was contacted.
We designed and built the full system end to end: the data model, the intake and scheduling logic in n8n, the CRM layer in GoHighLevel, the WhatsApp Business API setup with Meta template approval, the AI reply router, the valuation flow, and the monitoring that keeps it honest.
Multi-portal listings, in real time
A property-data feed watches the major Spanish portals and pushes every new, updated, price-dropped or removed private listing in the agent's zones as a signed webhook, as it happens.
n8n + Supabase + OpenAI
Rules, scheduling and state live in code and Postgres. AI is used only where judgement is needed: reading replies and judging news.
WhatsApp from the agent's number
Approved templates go out through GoHighLevel on the agent's own number. Hot leads land in the CRM pipeline with an instant alert.
One agent. Nine jobs.
Real-time watch across multiple portals
Every private listing in the agent's zones is captured the moment it appears on any of the major portals. Price changes, relistings and withdrawn ads update the same record in real time, so nobody gets messaged about a home that already sold.
Price-drop trigger
A drop of 3,000 EUR or more fires a priority message within the send window, followed by a valuation offer 24 hours later. Relistings get their own message.
News that could move prices in the area
Scans 22 Spanish news outlets for each town and the province, looking for housing news that could affect prices where the seller lives. An AI judge keeps only what matters, writes a one-line impact note, and queues it as a message.
Four-step follow-up over 80 days
Opener on day 2, then follow-ups at days 12 to 18, 42 to 50 and 72 to 80. Every step is a Meta-approved template with the seller's details filled in.
Positive, neutral, negative, valuation
OpenAI classifies each reply. Positive: opportunity, task and instant WhatsApp alert to the agent. Neutral: friendly keep-alive. Negative: goodbye, DND, permanent stop.
Valuation PDF on request
If the seller asks what their home is worth, the system sends a holding reply, requests an automated valuation, and delivers the PDF report back in the same WhatsApp thread.
Zone to agent routing
Each town maps to an agent. Leads, alerts and opportunities are owned by the right person from the first message.
Reconcile, heartbeat, usage email
Daily reconciliation against the data provider, a keep-alive for the database, a Monday email with event counts and running costs, and one error handler for everything.
WhatsApp coexistence
Messages go out from the agent's existing WhatsApp number through the Business API, so sellers reply to a real person, not a bot line.
How it fits together
Scheduled side workflows: area news scan (22 outlets, Mon and Thu), zone statistics (weekly), provider reconcile (daily and every 30 min), database heartbeat (every 4 h), weekly usage and cost email, central error handler.
15 workflows, one instance
Every moving part runs in n8n Cloud: intake, scheduling, sending, reply routing, valuations, news, reconciliation and monitoring. Each workflow is named, versioned and published separately so the client can see exactly what runs and when.
- 367 production executions at the time of capture, 0.8% failure rate
- Average run time 0.81 seconds
- Errors route to one central error-handler workflow


Listings in, sends queued
The intake workflow verifies the HMAC signature on every webhook, drops duplicates, stores a snapshot of the property, matches it to an agent territory and creates the lead in the CRM. Price drops, relistings and withdrawn listings update the same record. The scheduler runs every weekday morning, expires stale events, picks who is due, computes a send slot inside the allowed windows and hands each lead to the send workflow.
- Duplicate webhooks answered with 200 and dropped before any write
- Listings without a Spanish mobile number, and business transfers, never become leads
- Each lead gets at most one slot per day, inside the agreed hours


Every reply gets read
When a seller answers, GoHighLevel posts the message to n8n. An OpenAI classifier sorts it into positive, neutral, negative or valuation request, and each branch does something different: creates an opportunity and alerts the agent, keeps the sequence alive, or sends a polite goodbye and sets do-not-disturb. Valuation requests call an automated valuation model, fetch the PDF report and deliver it back inside the same WhatsApp thread.


The CRM layer
GoHighLevel holds the contacts, pipeline and WhatsApp channel. Three published workflows do the CRM-side work: one fires the right approved template when n8n applies a send tag, one forwards every inbound reply to the router, and one alerts the agent the moment a lead turns hot.
- Six-stage pipeline from new lead to mandate won
- One template branch per message variant, all tagged and tracked
- Send tag removed after each message so nothing fires twice




Built to not get banned
Outreach systems fail when they are too aggressive. Every limit here is enforced in the database and the scheduler, not left to a prompt.

Max 11 messages per seller
The full sequence is capped. After that the lead is parked, never spammed.
One message per day
No seller ever receives two messages in the same day, whatever the trigger.
12-day silence rule
No reply for 12 days means the sequence stops on its own.
Max 5 first messages per day
New conversations are rate-limited so the number warms up safely.
Send windows only
Monday to Friday, 10:00 to 13:45 and 17:00 to 19:45 local time. Replies to sellers go out immediately, any day.
Name guard and opt-out
Messages only use a name when one is confirmed. Negative replies set DND immediately.
One source of truth
Nine tables on Supabase hold every property snapshot, lead, scheduled event, sent message and valuation. The CRM stores the conversation; Postgres stores the state. That split is what makes the limits enforceable and the reporting honest.
- Raw webhook events kept for replay and audit
- Idempotency keys on valuation requests
- Territory table maps each zone to its agent


Live, measured, maintained
The system went live on 27 October 2026 and is in its first weeks of production. The numbers here are straight from the n8n instance at the time of writing, not projections.
Delivered: system design, database schema, 15 n8n workflows, 3 GoHighLevel workflows, WhatsApp Business API setup and template approval, AI classification and news-judging prompts, the valuation flow, monitoring, and full technical documentation the client can hand to any engineer.
n8n Cloud · GoHighLevel · Supabase
Plus OpenAI for classification and news judging, Tavily for news search, a property-data API with an automated valuation model, and the WhatsApp Business API.
Documented for the next engineer
Architecture, workflow-by-workflow notes, database schema, integration contracts, deployment and operations runbook.
Built to add agents and towns
New territories are rows in a table. New agents are a CRM user and an alert contact. No workflow changes needed.
Three things we learned
The full case study as a PDF
The full write-up with the screenshots above, formatted for printing or forwarding. Client details are hidden in the PDF too.
Download the PDFNeed a lead engine, a voice agent or a CRM build that runs on its own?
Tell us what you are trying to automate or move. We will say what fits, what does not, and what it would cost.
Book a free 15-minute call