All Work
A workflow in the editor: a WhatsApp step and a call branching into grading groups, agent assignment and a nurture sequence

Stayte The Operating System for a Real-Estate Agency

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

The Brief

The Market

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.

The Mission

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.

Impact

Eight stages from a lead appearing to a deal advancing, with the qualification rules configurable by the agency rather than written into the code.

My Role

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

One Lead, End to End

Eight stages between a lead appearing and a deal moving. Stage five loops back into stage four.

The Editor

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.

The workflow list: each source has its own sequence, with steps, runs and success counts Play walkthrough · 45s

The System

What I Built, Stage by Stage

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

Four Ways In, None of Them Tidy

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.

  • •One inbox, four shapes: Every source lands in the same place in the same form, so nobody reformats a spreadsheet before the work can start.
  • •Intent travels with the lead: Where a lead came from is not metadata — it is the thing that decides what happens next, so it is carried as a source label rather than logged and forgotten.
os.stayte/settings/lead-sources Video Expand

02 / Routing

The Source Decides the First Move

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.

  • •Warm goes straight to a call: Someone who filled in a form on Idealista is already looking at a specific property. Waiting a day to email them wastes the only moment that mattered.
  • •Cold gets a lighter touch first: A Facebook lead gets an email, and a call only if the email goes unanswered — the sequence escalates instead of opening at full volume.
os.stayte/workflows/step Video Expand

03 / Qualification

How Hard to Chase, Decided by the Agency

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.

  • •Configurable, not hard-coded: Every agency's patience is different, and none of them wanted to ask a developer to change it.
os.stayte/workflows/calls Video Expand

04 / Selection

A Shortlist Built for One Person

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.

  • •The client owns the inventory: No catalogue to maintain in a second place, and no sync to go stale — the MLS stays the single source.
  • •Assembled, not filtered: The shortlist is built for the person, using everything the system has learned about them so far.
  • •Every selection is kept: What went out last time stays on the record, so the next one can continue from it instead of starting the thinking again.
os.stayte/leads/selection Video Expand

05 / Delivery & Learning

Sent and Answered in the Same Thread

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.

  • •Near-zero adoption cost: The surface the client already checks hourly is the one nobody had to be persuaded to use — and making it the reply channel too removes the second surface where a reply goes to die.
  • •The loop is the product: Those taps are not a rating for its own sake. They feed straight back into the selection stage, so each shortlist starts from more than the last. Without the loop this is a scheduler with extra steps.
  • •Preference beats a brief: What someone taps is more honest than what they said they wanted on a form.
  • •Nurturing is a cadence, not a campaign: A lead who is not ready yet stays in a sequence that sends a fresh selection every few days, on an interval the agency sets, until they engage or the sequence ends.
Video Expand

06 / Enrichment

What Was Learned on the Phone Stops Living There

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.

  • •The knowledge that normally evaporates: Everything useful in a phone call usually ends up in someone's memory. Here it ends up somewhere the rest of the system can read it.
  • •The profile is a running summary: Requirements, budget, timeline and the state of the relationship are rewritten as the history grows, alongside the next action the system has already scheduled.
os.stayte/leads/record Video Expand

07 / CRM Sync

Changes Travel in Both Directions

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.

  • •Deals move themselves: When a lead meets the criteria for the next stage, the deal advances rather than waiting for someone to remember.
  • •The CRM stays correct as a side effect: Nobody is asked to maintain it, which is the only way it stays maintained.
os.stayte/settings/data-sync Video Expand

08 / Dashboard

The Room You No Longer Have to Walk

By Agent · Planned vs. Completed

One surface for the whole operation: what is planned, what has run, and what each agent is carrying.

  • •Managing stops being asking: Running a brokerage no longer depends on going round the room to find out how it is going.
  • •Conversion by source, not just volume: Each input is shown with what it actually produced, which is the number that decides where the next advertising euro goes.
os.stayte/dashboard Video Expand

The Hardest Problem

Every Agency Chases Differently

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.

Results

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.

Reflection

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