Maureen, an assistant that lists your home for you
A site-wide AI agent on MOREin1 that answers questions, finds people and properties, and turns a conversation into a published listing.
- Role
- AI Automation Specialist, contract
- When
- Dec 2025 – present
- Built
- The LangGraph agent, its tools and retrieval, the listing flow, evals, and the admin panel
- Stack
- Python · FastAPI · LangGraph · Postgres + pgvector · Redis · OpenRouter
Recorded on the staging site. Jump to a part from the first chapter below.
- ~2 minto create a listingdown from ~10 minutes by hand
- 37/37evaluation test cases passed
- 2000+members and guestscan use it across the site
The demo, part by part
The problem
MOREin1 brings buyers, sellers, agents, lenders, and service providers onto one real estate platform. Creating a listing meant working through a long form by hand: about 10 minutes per property. And with so many kinds of members on one site, people needed a single place to ask about the platform, their account, and who to work with.
What I built
One agent available on every page, signed in or not. It decides which tool a question needs and answers with links straight to the right page.
Answers from the site's docs
Retrieval over MOREin1's help center, FAQ, and policies, so questions about the platform get the site's own answer.
Account answers through APIs
Tool calls to the site's APIs: your groups, a property's details, a lender on the platform, each with a link to the page.
Listing by conversation
Pulls listing details from a voice transcript, drafts the title and description, and walks the listing through to publishing.
How it fits together
Maureen runs as its own service, morein1-ai (Python, FastAPI, LangGraph), beside the site's NestJS API. Every chat passes through a gate in that API first. The agent calls back with a service token for account, directory, and role data, and writes listings, drafts, and photos to the core API.
Inside, guardrails wrap an agent loop that picks from its tools: the knowledge base, listings and profile search, account tools, and listing tools. It runs on Postgres with pgvector and Redis, and reaches language models through OpenRouter, with OpenAI embeddings, Cohere reranking, and an ElevenLabs voice agent for listing by voice.

Built to be run, not just demoed
An assistant on a live site needs someone to watch it. The admin panel gives MOREin1's staff control without needing a developer.
Kill switch
Staff can turn the chat off in one click. Visitors get a polite "temporarily unavailable" message instead of an error.
Knowledge gaps
Low-confidence questions are grouped with the replies Maureen gave. Staff write the right answer, and can add it to the evals so it stays fixed.
Message logs
Every conversation with what was allowed or blocked, response time, and cost per message.
Knowledge base
Staff upload PDFs, Word, Markdown, or text. Each document is chunked and indexed for retrieval, and re-uploading replaces it.