A voice-enabled AI real estate sales agent for Harbourline Developments — built to qualify leads, answer property questions, and book appointments for their Melbourne apartment projects.
This project simulates a conversational AI sales agent for four apartment developments in Melbourne:
- Riverstone Place (Abbotsford)
- Harbourview Towers (Richmond)
- Yarra Edge (Footscray)
- Collingwood Quarter (Collingwood)
The agent can:
- Qualify buyers based on budget, bedrooms, timeframe, and finance status
- Recommend the best matching project
- Handle common questions and objections
- Book mock appointments
- Log leads with compliance tracking
- Backend: FastAPI (
voice_agent.py) - Frontend: Streamlit (
app.py) - LLM: Google Gemini (primary) with Mistral fallback
- Text-to-Speech: gTTS (frontend) + ElevenLabs (optional)
- Database: SQLite (lead logging)
- Deployment: Render (backend) + Streamlit Cloud (frontend)
- ✅ Intelligent project recommendation based on buyer needs
- ✅ Natural conversation flow with chat history
- ✅ Appointment booking logic with available time slots
- ✅ Compliance handling (stop/unsubscribe requests)
- ✅ Lead logging with qualification data
- ✅ Voice output using gTTS (reliable on cloud)
- ✅ Rate limiting and basic security
mavrk7-riverstone-agent/
├── app.py # Streamlit frontend
├── voice_agent.py # FastAPI backend
├── requirements.txt
├── Dockerfile
├── Procfile
├── .env.example
├── tests/
│ ├── llm_tester.py
│ └── test_mistral.py
└── .github/workflows/ # CI/CD pipelines
-
Clone the repository:
git clone https://github.com/MAvRK7/riverstone-agent.git cd riverstone-agent -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install dependencies:
pip install -r requirements.txt
-
Create a .env file with the following content:
GEMINI_API_KEY=your_gemini_api_key MISTRAL_API_KEY=your_mistral_key BACKEND_URL=https://your-deployed-backend-url/call BACKEND_API_KEY=optional_backend_api_key
-
Run the application:
python voice_agent.py
-
Run the Streamlit frontend:
python -m streamlit run "app.py"
- No real phone calling (Twilio/Retell not integrated)
- Backend on Render free tier → sleeps after 15 minutes of inactivity
- Voice input not implemented (planned)
- TTS uses gTTS on frontend for reliability
Cost to run ~100 calls: ~$30–50/month (Twilio for calls + persistent hosting + TTS API usage). If extended, improvements could include:
- Persistent hosting (Render paid / AWS / GCP).
- Fully integrated TTS in the cloud.
- Phone-call support via Twilio or Retell.
- Richer UI/UX with conversation history.
- Integration with Calendly or Google Calendar for real bookings.
Model Output
This project is for demonstration purposes. See LICENSE for details.