One WhatsApp reply to every property lead, saved in the sales system

Buyers often send several WhatsApp messages in a row. The assistant reads them together, sends one reply and offers a viewing link when the buyer states enough budget, timing or payment details. Each lead is saved in Close, the team's sales system.

Client: Palmgate PropertiesReal estate

CreditDesigned and built by our founder, as lead developer for a partner agency.

Follow one enquiry

A buyer sends three messages and gets one reply

A property enquiry sent late at night, from the first message to a booked viewing.

Property enquiryWhatsApp conversation23:00
Buyer

Hi, interested in a 3-bed villa.

Budget is around 5M, cash. Want to move this quarter.

Voice note transcribed
Could you send the floor plan?
Reading the messages together…
One combined reply

Here’s the floor plan for the 3-bed villa. You can choose a viewing time using the link below.

Floor plan.pdfDocument attached
Choose a viewing time
Booked ViewingClose is updated after the buyer books.

About Palmgate Properties

Buyers message Palmgate on WhatsApp at all hours, including at night when nobody is there to reply.

Palmgate Properties sells new-build homes in Dubai. Most buyers contact the sales team on WhatsApp, often with several short messages in a row or with voice notes. The sales manager keeps leads in Close and property files in shared folders.

Client
Palmgate PropertiesA seller of new-build villas and townhouses in Dubai
Industry
Real estate · Dubai
How they sell
Through WhatsApp enquiries about new-build homes

The problem

Four problems the sales manager described

  • Buyers who messaged at night waited until morning

    Nobody was there to reply to a buyer who messaged at night, so the answer came the next morning.

  • The old chatbot replied to every message

    Buyers often send three messages in a row. The old chatbot answered each one separately, before the buyer had finished.

  • Serious buyers were hard to spot

    Agents had to read the whole chat to find the buyer's budget, timing and how they would pay.

  • Files and call notes were handled by hand

    Someone had to find and send brochures by hand. Recorded calls were not being added to Close.

What was built

What the assistant does for buyers and for the manager

  • The manager has a WhatsApp assistant too

    From their registered phone number, the manager can look up a lead, read the chat or a call summary, check which homes are available and send a document. They can also start a personalised voice-message campaign.

  • It sends the file the buyer asks for

    Brochures, floor plans and payment plans come from the team's shared folder. The search still finds the right file when a buyer misspells a community name.

  • Bookings update the lead in Close

    When a buyer books, moves or cancels a viewing in Cal.com, the booking tool, Close is updated with the date, the time and who is coming.

  • Recorded calls are added as notes

    New call recordings are turned into text, summarised and added to the lead. Each recording is added only once.

Control and safety

Only what the buyer says counts

The assistant looks for four things: budget, timing, paying cash and mortgage pre-approval. A buyer who states two or more of them gets a viewing link. A greeting, or a question the assistant asked, does not count.

  • Only the manager can use the manager tools. They work only from the manager's registered phone number.
  • Photos are saved, not read. The assistant stores a photo and confirms it arrived, but does not try to guess what it shows.
  • Lead records are private. Database access rules block public access. Stored photos and voice notes are deleted after 90 days.
  • A person can review each conversation. The chat history, the notes in Close and the record of each AI request show what was received and sent.

For technical readers

How the system works

Each buyer's WhatsApp messages wait in a short window. A background job then reads them together, turns voice notes into text and prepares one reply. The same job saves the lead and the conversation in Close. Booking updates and scheduled checks keep the record current.

Buyer on WhatsAppTexts and voice notes
Twilio checkConfirms the sender
Message window2 minutes, up to 5
Read the messagesTranscribe, check, reply
One replyDocuments and viewing link
Lead in CloseMessages and qualification

In more detail

Technology used (9 parts)Each part of the system, and why it was chosen.
LayerTechnologyWhy it was chosen
MessagingTwilio WhatsApp APITwilio connects the system to WhatsApp. Each request is signed, so the service can check it really came from Twilio.
Request handlingHono, Node.js, TypeScriptChecks each incoming request and passes longer work to background jobs.
Background jobsTrigger.dev v4Runs the message window, the scheduled checks and the retries in the background.
Data and mediaSupabase Postgres and StorageStores leads, chat history and waiting messages, with access rules and automatic clean-up of media.
AIGemini Flash-class model, OpenRouter, Vercel AI SDKA fast model answers buyers; a stronger model handles the manager's tools. Both were chosen by testing several models.
SpeechOpenAI Whisper, ffmpeg, ElevenLabsTurns voice notes and long calls into text, and creates personalised voice messages.
Sales and bookingClose, Cal.comKeeps the sales records and the viewing bookings connected.
Files and inventoryGoogle Drive, Google Sheets, Fuse.jsUses the client's existing files and finds them despite small spelling mistakes.
Monitoring and testsLangfuse, Vitest, ZodRecords each AI request, tests the services and checks incoming data before it is used.
4 engineering decisions that matteredThe problem, what was done, and what it changed.
  1. Several messages get one reply

    A database rule stops two messages that arrive at the same moment from opening two waiting windows for the same phone number. A delayed job then handles all the messages together. The wait has a 5-minute limit, so a buyer who keeps typing does not hold up the reply.

  2. Only details the buyer states count

    The AI returns its answer in a fixed format that covers the four signals, and the system checks that format before using it. Only what the buyer said counts.

  3. Models were chosen by testing them

    A benchmark compared 11 models on following the required format, understanding what the buyer wanted and using tools. The last run passed 27 of 29 checks, including all 9 checks of what the buyer wanted. This is a small test sample, not a measure of sales.

  4. Long recordings are split before they are turned into text

    Files over 10 MB are cut into 10-minute MP3 parts and turned into text one part at a time. Each step has a time limit. A table keyed by file ID stops the same recording being added twice.

Testing and build recordHow it was tested, and the build by the numbers.

Quality and reliability

  • The build record reports about 1,100 automated test cases in 38 files, covering services, background jobs, connections to outside services and the manager tools.
  • Jobs retry 3 times, waiting longer each time. Data from Twilio, Cal.com and Close is checked before it is used.
  • Each AI request is recorded in Langfuse, a monitoring tool. Background jobs keep a structured history of each run.
  • The handover included a 71-item production testing checklist and a self-hosting manual.

By the numbers (build)

  • 89 commits over 42 days, from first commit to handover manual.
  • About 7,700 lines of application code; about 1,100 test cases in 38 files.
  • 7 background jobs and 6 manager-bot tools.
  • 8 database migrations; a spreadsheet and 9 older automations built in n8n replaced.

Is it a fit?

Could this work for your team?

  • Your buyers start on WhatsApp. You sell property and receive short messages, voice notes and requests for documents throughout the day.
  • Your team works in Close. Or you want the assistant connected to another sales system.
  • Agents keep sending the same files. Brochures, floor plans and price lists should be easier to find and send.
  • You check buyers in a different way. We can change the details it looks for, the languages, the booking tool and the reply wait, and choose which messages should wait for a person.

Who replies to your leads when the office is closed?

Conducted by Apurva · Not a sales call