Project Info
Inspiration
When buying a house, people always start by manually searching, contacting a realtor, negotiating with other people. We want to streamline this process using AI agents.
What it does
Uses multiple AI agents to help you find the best home around you, suggesting homes as well as giving you insights about the local businesses and schools nearby. It can also negotiate with a realtor over a phone call to help you get the best price on the house you want to buy.
How we built it
We built multiple agents off of Fetch AI's platform that all work together to give you the best experience finding and buying a house.
Challenges we ran into
We had issues with integration of all the agents together, but using fetch AI we were able to solve them. We also had issues with the Wi-Fi, and things not working at the last minute.
Accomplishments we're proud of
We are proud of the agents we were able to deploy to Fetch AI's agentverse, you can go use them for yourself here: Real Estate Agent (Coordinator) Scoping Agent Community Analysis Agent Real Estate Intern Local Discovery Agent Mapbox Agent Research Agent Prober Agent Vapi Negotiator
What we learned
We learned a lot about how to build and deploy AI agents as well as the world of real estate, and the importance of planning ahead.
What's next
for home.ai We plan to develop home.ai further into a fully featured home discovery and purchasing platform, as well as continuing to deploy agents for Fetch AI. Note Our video is on loom because we had issues with uploading. See it here.
Homes AI - AI-Powered Property Search
An intelligent real estate search platform powered by Fetch.ai uAgents, ASI-1 mini, and MCP tools. Natural conversation meets property discovery.
Features
- Natural Conversation - Talk to the AI agent like a real estate professional
- Smart Recommendations - Get location suggestions based on your job and lifestyle
- Multi-Source Search - Powered by Tavily and BrightData MCP integrations
- Interactive Map - Visualize properties on Mapbox with real-time data
- No AI Slop - Straightforward, helpful responses without robotic repetition
Architecture
Frontend (Next.js)
↓ API Routes
Backend (uAgents)
↓
┌─────────────────┐
│ Scoping Agent │ → Natural conversation (ASI-1 mini)
│ (Port 8001) │ → Gathers: location, budget, beds, baths
└─────────────────┘
↓ criteria
┌─────────────────┐
│ Research Agent │ → Searches properties via MCP
│ (Port 8002) │ → Tavily: Web search
└─────────────────┘ → BrightData: Real estate scraping
↓ properties
┌─────────────────┐
│ Mapbox Agent │ → Interactive map visualization
│ (Port 8003) │ → Real coordinates from BrightData
└─────────────────┘
Tech Stack
Backend:
- Fetch.ai uAgents (pure REST, no FastAPI)
- ASI-1 mini for natural language
- Tavily MCP for web search
- BrightData MCP for property data
- Mapbox for visualization
Frontend:
- Next.js 15
- React 19
- TypeScript
- Mapbox GL JS
- Tailwind CSS
Quick Start
1. Backend Setup
cd backend
# Install dependencies
pip install -r requirements.txt
# Configure .env
cp .env.example .env
# Add your API keys
# Start all agents
./start_all.sh
# Or start individually:
python agents/scoping_agent.py # Port 8001
python agents/research_agent.py # Port 8002
python agents/mapbox_agent.py # Port 8003
2. Frontend Setup
cd frontend
# Install dependencies
npm install
# Configure environment
echo "NEXT_PUBLIC_MAPBOX_API_KEY=your_mapbox_key" > .env.local
# Start dev server
npm run dev
3. Open Browser
Navigate to http://localhost:3000
Environment Variables
Backend (.env)
ASI_API_KEY=your_asi_api_key
TAVILY_API_KEY=your_tavily_key
BRIGHT_DATA_API_KEY=your_brightdata_key
MAPBOX_API_KEY=your_mapbox_key
Frontend (.env.local)
NEXT_PUBLIC_MAPBOX_API_KEY=your_mapbox_key
SCOPING_AGENT_URL=http://localhost:8001
RESEARCH_AGENT_URL=http://localhost:8002
Usage Example
User: Hi, I'm looking for a place in the Bay Area
Agent: Hey there! It's awesome that you're thinking about finding a home in the Bay Area. Do you have any specific area in mind? Like San Francisco, East Bay, or somewhere like Palo Alto?
User: I work in tech in Mountain View, budget is 1.5M, need 3 bedrooms and 2 bathrooms
Agent: Nice! With a tech job in Mountain View, you're right in the heart of Silicon Valley. A budget of $1.5M and 3 beds/2 baths sounds doable. Besides Mountain View, nearby areas like Sunnyvale, Santa Clara, or San Jose could be great options with good schools. Any other must-haves like a backyard?
User: Good schools are important, and a backyard would be nice. Ready to search
Agent: Perfect! I've found 10 properties matching your criteria...
[Properties appear on the map]
Project Structure
estate/
├── backend/
│ ├── agents/
│ │ ├── scoping_agent.py # Natural conversation
│ │ ├── research_agent.py # Property search
│ │ └── mapbox_agent.py # Visualization
│ ├── utils/
│ │ ├── asi_client.py # ASI-1 mini wrapper
│ │ └── mcp_client.py # MCP clients
│ ├── start_all.sh # Start all agents
│ ├── stop_all.sh # Stop all agents
│ └── README.md
│
└── frontend/
├── app/
│ ├── api/chat/route.ts # API integration
│ └── page.tsx # Main page
├── components/
│ ├── ChatInterface.tsx # Chat UI
│ └── MapView.tsx # Map UI
└── lib/
└── mockData.ts # Fallback data
API Endpoints
Backend
Scoping Agent:
POST http://localhost:8001/chat
{
"text": "Looking for a 3br in SF",
"session_id": "user123"
}
Research Agent:
POST http://localhost:8002/search
{
"location": "Mountain View",
"max_budget": 1500000,
"bedrooms": 3,
"bathrooms": 2,
"preferences": ["good schools"],
"session_id": "user123"
}
Mapbox Agent:
POST http://localhost:8003/visualize
{
"properties": [...],
"center_location": "Mountain View",
"session_id": "user123"
}
Frontend
Chat API:
POST /api/chat
{
"message": "Looking for a home",
"sessionId": "session_123"
}
Design Decisions
- Pure uAgents - No adapters, no LangGraph wrapping. Direct REST endpoints.
- ASI-1 mini - Fast, natural conversations without Claude dependency.
- MCP via HTTP - Direct SSE endpoint integration with Tavily and BrightData.
- Coordinate Extraction - BrightData returns lat/lng for accurate map placement.
- Natural Flow - Avoids "doesn't meet criteria" loops with context-aware responses.
Development
# Backend
cd backend
python -m pytest tests/ # Run tests
python agents/scoping_agent.py # Dev mode
# Frontend
cd frontend
npm run dev # Dev server
npm run build # Production build
npm run lint # Lint check
Troubleshooting
Agents won't start:
- Check API keys in
.env - Ensure ports 8001-8003 are free
- Activate venv:
source .venv/bin/activate
Frontend can't connect:
- Check backend agents are running
- Verify CORS is enabled (included in uAgents)
- Check browser console for errors
No properties showing:
- Check MCP API keys are valid
- View research agent logs:
tail -f logs/research.log - Fall back to mock data if MCP fails
Future Enhancements
- User authentication and saved searches
- Email alerts for new listings
- Property comparison tool
- Mortgage calculator integration
- Price history and trends
- Neighborhood insights
- Virtual tour scheduling
License
MIT
Acknowledgments
- Fetch.ai for uAgents framework
- Tavily for search MCP
- BrightData for scraping MCP
- Mapbox for visualization
Analysis
View
Metric
- 12
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
7 of 7 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
235 KB
Source files
32
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Steve-Dusty/homes-ai
45 files · 342 KB · @ e238256
Structure
Interface
7 files · 16%Screens, components and styles rendered to the user.
API & routing
1 file · 2%Request entry points: routes, handlers and controllers.
Application logic
19 files · 42%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python54%
- TypeScript35%
- Markdown10%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 12- mapbox-gl
- next
- react
- react-dom
- react-map-gl
- +7 more
backend/requirements.txt
pypi · 8- aiohttp
- asyncio-contextmanager
- fastapi
- mcp
- pydantic
- python-dotenv
- uagents
- uvicorn
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.