← Projects

Realtor AI Assistant

A FastAPI service that turns listing and lead data into drafted marketing copy and a prioritised daily follow-up list.

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 prioritised follow-up list with a suggested message for each.

Shape

A FastAPI backend organised 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 is JWT with hashed credentials rather than a shared demo password, 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 prioritised, and what an agent is willing to send without editing.

Prompts live as files rather than string literals, which sounds like a small thing and is not. It means the wording is reviewable in a diff, and changing the tone of an email blast does not mean a code change.

This one 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.