Realtor AI Assistant
A FastAPI service that turns listing and lead data into drafted marketing copy and a prioritized daily follow-up list.
- Python
- FastAPI
- React
- OpenAI
- Supabase
- Google Sheets
A proof of concept for a small real-estate workflow: take listings and leads, produce the writing that normally eats an agent’s morning.
From a listing it drafts the MLS description, a portal blurb, social posts, an email blast and an open-house script. From leads it produces a prioritized follow-up list with a suggested message for each.
Shape
A FastAPI backend organized into route modules behind an APIRouter, with
connectors separated from the routes that use them so the data source can change
without the API changing. Listings and leads arrive as JSON, from Google Sheets,
or from Supabase — the demo path is JSON files precisely so it can be shown
without any account setup.
The React front end is a thin client over that API. Authentication uses JWTs, with passwords stored as hashes rather than a shared demo credential, because the moment something has a login it tends to acquire real data.
What it taught me
The generation is the easy part. What takes the work is everything around it: what a listing actually contains, which fields matter to which output, how a lead gets prioritized, and what an agent is willing to send without editing.
Prompts live as files rather than string literals. The wording is reviewable in a diff, and changing the tone of an email blast does not require changing application logic.
This came before the AI gateway work and is a fair part of why that project exists. Here the OpenAI client sits inside the application, and spend is whatever the API bill says at the end of the month. Wanting to know which feature cost what, and to stop a runaway before it ran, is what the gateway was built to answer.