An AI real estate broker thatqualifies leads at 3 a.m.— and we open-sourced the whole thing.fork-friendly.
A working reference implementation we built to show what we ship. It searches real-estate listings, qualifies buyers, and books property tours. Not a client engagement — a lab build to show, not tell.
Four capabilities, working together.
Natural-language property search
Buyers describe what they want — '3-bed under $500K in Austin, walkable to schools' — and the agent returns ranked, explained matches.
Lead qualification
Smart questioning surfaces budget, timeline, and intent. Hot leads get prioritized; lukewarm ones get nurtured.
Tour booking & calendar handoff
When a buyer is ready, the agent books a viewing through the broker's calendar — no human intervention required.
Guardrails on price & availability
Hallucinated prices kill trust. The agent cross-checks claims against the listings index before answering.
Real-estate leads cool faster than your morning coffee.
Conversion rates on real-estate leads drop sharply within an hour if no one responds. Brokerages can't afford 24/7 staffing. Off-the-shelf chatbots feel scripted and obvious. And LLMs left unchecked will cheerfully invent listings that don't exist — which torches trust the moment a buyer walks into the wrong house.
We wanted to see how close we could get to a real broker's judgement, with AI doing the heavy lifting and humans only stepping in when it matters.
Three decisions that did most of the work.
The interesting part of any AI build is the tradeoffs you make. Here are ours.
RAG over fine-tuning
Listings change daily. Fine-tuning on inventory means re-training every time prices shift. We index listings into a vector store and retrieve fresh data on every query — model stays general, data stays current.
Tradeoff: Slightly higher per-query cost in exchange for zero re-training overhead and instant freshness.
Function calling for booking & lead capture
Free-text answers are great for discovery, terrible for actions. We expose calendar, CRM, and listing-detail APIs as functions the agent calls deterministically — so 'book me a tour Friday at 4' becomes a real calendar event, not a hallucinated promise.
Tradeoff: More upfront wiring, but downstream actions are auditable and reliable.
Hallucination guardrails on price & availability
The two facts buyers will absolutely sue you over. Before the agent quotes a number, it cross-checks against the index. If retrieval misses, it says 'let me get back to you' instead of guessing.
Tradeoff: A small lift in 'I don't know' responses — which is exactly what you want when accuracy matters more than vibes.
Buyer message
│
▼
┌──────────────┐ ┌──────────────────────┐
│ LLM Agent │ ←─ │ System prompt & │
│ (OpenAI) │ │ conversation state │
└──────┬───────┘ └──────────────────────┘
│
┌────┴────┬────────────┬───────────────┐
▼ ▼ ▼ ▼
Search Book tour Lead score Fallback
listings (Calendar) (CRM write) (human)
│
▼
┌─────────────────────────┐
│ Vector index (RAG) │
│ — listings + metadata │
│ — refreshed on update │
└─────────────────────────┘Boring, proven pieces. on purpose.
We picked components your in-house team can take over without a PhD.
What we'd build for you, specifically.
The demo is a starting point. Here's how we'd shape it for an actual brokerage.
Plug in your MLS / IDX feed
Replace the demo's synthetic listings with your live inventory. We handle the ingestion pipeline, embedding refresh, and de-duplication.
Train on your brand voice
Your scripts, your tone, your qualifying questions. The agent stops sounding like ChatGPT and starts sounding like your top broker.
Wire it into your CRM
HubSpot, Salesforce, Follow Up Boss — qualified leads flow into your pipeline with the conversation context attached.
The whole thing — on GitHub.
Read it. Fork it. Self-host it. Submit a PR. We open-source our lab work because the code is the proof — and engineers don't trust pretty case studies, they trust commits.
What we're not claiming.
Demo work has limits. Calling them out builds more trust than glossing over them.
- Demo runs on synthetic listings — connect your live MLS/IDX feed to make it production-ready.
- No production auth, rate-limiting, or audit logging — those get added per engagement, not bolted onto the public reference.
- We haven't published latency or cost benchmarks yet. Happy to run them on a candidate dataset during scoping.
- Voice/phone integration isn't included — the demo is text-only. We can add Twilio + speech-to-text if you need it.
Want one of these trained on your listings?
30-min call with an actual engineer. No slides, no pitch deck — just whether we can ship what you need, and what it'd cost.
(we don't bite. usually.)