Date
2024 – Feb 2026
Location
Spain
Services
Product Design Frontend Engineering Backend & Integrations
Team
Head of Sales Agents · me
Role
Design Engineer (web product, design and build)
Target
Brokerage teams (B2B) Buyers and investors (B2C)
Platform
Web OS · Supabase MLS API · WhatsApp Facebook Ads · Pipedrive HubSpot · Twilio · Vapi
Everything an estate agency does before a deal closes is a chain of small manual acts — copy the lead out of the form, call it, remember to call again, put a list of properties together in a chat, update the CRM if there is time. The chain breaks quietly, and nobody finds out until a lead has gone cold.
Replace the chain with a system. Not a CRM and not a lead source — the agency already has both. This is the layer in between: qualification and nurturing, everything that happens from a lead arriving to a deal moving, with the CRM kept correct as a side effect rather than as a chore.
Eight stages from a lead appearing to a deal advancing, with the qualification rules configurable by the agency rather than written into the code.
Product Design
Designed the whole operating surface — intake, the workflow rules, the selection view, the dashboard. Every stage of the run, including the ones that had only ever existed as somebody's habit.
Frontend Engineering
Implemented those designs myself. Same person on both sides of the handoff, which is why the shape of the system and the shape of the screens agree with each other.
Backend & Integrations
The Supabase backend and its functions, and every connection underneath: the client's MLS by API key, WhatsApp delivery, two-way sync with Pipedrive, on a connector that also covers HubSpot, and the voice and messaging providers.
Workflow Architecture
Designed the qualification engine as configuration rather than code — which leads a sequence claims, what it does first, how many attempts, how long between them, and what ends it. The hard part was keeping it operable by someone who is not a programmer.
00 / The Run
Eight stages between a lead appearing and a deal moving. Stage five loops back into stage four.
Stage two is this screen. Each source gets its own sequence — the list shows one per source, including a separate one for Idealista — and each sequence is a node editor rather than a setting buried in a form. Inside a step: which channel, how long to wait, whether the AI agent answers replies itself, and which path is taken when nobody answers. How hard to chase, the next stage, is configured elsewhere.
Play walkthrough · 45s
Eight stages, and the number is the point — none of them was left to a spreadsheet or a group chat. Each one is a decision the agency used to make by hand, moved into the system and made configurable, from the moment a lead appears to the moment a deal advances on its own.
01 / Intake
Manual · CRM · Facebook Ads · Aggregators
A lead arrives by hand, by sync from the agency's CRM, from a Facebook lead ad, or from a form on an aggregator like Idealista. Each source carries different fields, different completeness and a different level of intent — and each arrives by a different mechanism: an ad connector, a parsed inbound email, a webhook for anything with a form.
02 / Routing
Matching Criteria · Automatic Trigger
A lead does not get one generic treatment. Workflows match against criteria and fire on their own, without anyone assigning them.
03 / Qualification
Attempts · Intervals · Exit Conditions
How many times to call. How long to wait between attempts. How many callbacks before a lead is left alone, and what counts as qualified at the end of it.
04 / Selection
Client MLS · API Key · Per-Lead Assembly
The property database is the agency's own MLS, connected with an API key: paste the key and everything they are allowed to show appears. From that, the system assembles a selection for this specific lead rather than a generic feed.
05 / Delivery & Learning
WhatsApp API · Preference Signal · Feeds Stage 04
The selection goes out over WhatsApp — no app to install, no portal to log into, no email that sits unread. The answer comes back through the same surface: every property in the carousel carries a Like, so the client replies by tapping rather than by writing.
06 / Enrichment
Call Outcomes · Agent Notes · Aggregation
Call outcomes, and what the human agent actually heard while speaking to the person, get aggregated, sorted into the right tables and written back.
07 / CRM Sync
Bidirectional · Automatic Stage Progression
Everything a run produces updates the agency's CRM automatically, and changes made in the CRM come back the other way. Pipedrive is the one live in this deployment; the same connector covers HubSpot.
08 / Dashboard
By Agent · Planned vs. Completed
One surface for the whole operation: what is planned, what has run, and what each agent is carrying.
Workflow design
Problem
The obvious build is to hard-code the chase: three calls, two days apart, then stop. It works for exactly one agency. The next one calls twice and emails; the one after that never emails at all and wants six attempts on a hot lead from Idealista. Every variation as a code change means a developer sits inside a business decision that is not theirs.
Solution
I made the chase configurable rather than written down: which criteria a lead has to match for a workflow to fire, what the first move is, how many attempts, how long between them, and what ends the sequence. Getting that editable without turning it into programming was the actual design work — the constraints had to read as decisions an agency manager already makes, not as fields in a rules engine.
Result
An agency changes how it chases leads without anyone touching code, and the difference between a warm Idealista enquiry and a cold Facebook lead stops being an argument and becomes a setting.
7,000+
Leads processed
Taken in from every source the system accepts and carried through routing, qualification and nurturing, without anyone copying a row by hand.
~200
Deals closed
Deals that moved through the pipeline to completion, with the CRM kept in step automatically rather than by hand.
8
Stages, one system
From a lead appearing to a deal advancing, with the learning loop folded in.
The product people asked for was a marketplace. The product that mattered was the machinery behind it — the part nobody demos, that decides whether a lead is called on Tuesday and whether anyone remembers what was said.
What designing and building it myself changed
The workflow editor went through several shapes before it was usable, and each one took an afternoon rather than a sprint, because there was no handoff between deciding and trying. A rules engine that a non-programmer can operate is not something you get right on paper.
Want to see more?
Back to all projects