Exhausted at the thought of searching for rentals and confused by the plethora of filters on PropertyGuru? Or are you just looking to optimize your property searches to find the best listings?
RentAI is an AI-powered search engine which enables you to search for PropertyGuru listings using natural language.
- Natural language search for Singapore property rentals (no need to select filters explicitly)
- Automatic filter extraction to identify bedrooms, price range and other parameters
- Auto-matching for MRT stations and districts by location (if entered)
- Direct links to actual PropertyGuru listings
- Local result caching layer for instant navigation between pages for the same query
- Dark mode support
- Python 3.9+
- Node.js 18+
- npm or yarn
# Clone and navigate to project
cd rentai-app
# Run quick setup script (Mac/Linux)
bash QUICKSTART.sh
# Or manually:
# Terminal 1 - Backend
cd backend
pip install -r requirements.txt
playwright install chromium
# Create .env with GROQ_API_KEY=your_key
python main.py
# Terminal 2 - Frontend
cd frontend
npm install
npm run devThe app runs on localhost:3000 by default in the development environment.
The FastAPI backend runs on localhost:8000 by default.
Use .env.development and .env.production files to change the deployment location. An example is given in .env.example.
- Framework: Next.js
- Styling: Tailwind CSS
- Language: TypeScript
- Framework: FastAPI
- Web Scraping: Playwright (headless browser automation)
- AI Agent: LangChain + Groq (llama-3.3-70b)
- Server: Uvicorn (ASGI)
# Check Python version
python3 --version # Should be 3.9+
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install dependencies
pip install -r requirements.txt
# Install Playwright
playwright install chromium- Get a free key from console.groq.com
- Create
backend/.env:An example is provided inGROQ_API_KEY=your_key_here.env.example.
- Ensure backend is running:
python main.pyfrom backend directory - Check that the port that the backed is running on (default:
8000) is not blocked - Verify CORS is enabled in
api.py
# Reinstall browsers
playwright install chromium
Or run with visible browser
(Change headless=False in init_api.py for debugging)fastapi- Modern Python web frameworkuvicorn- ASGI application serverplaywright- Browser automation for scrapinglangchain- LLM frameworklangchain-groq- Groq integrationpydantic- Data validationpython-dotenv- Environment variable management
next- React frameworkreact- UI librarytailwindcss- Utility-first CSSlucide-react- Icon library
This project demonstrates integration with PropertyGuru for educational purposes only.
Contributions welcome! Areas for improvement:
- Add more property sources (Rently, 99.co)
- Improve LLM prompts for better filter extraction
- Add user preferences/saved searches
- Implement email alerts for new listings
- Add property recommendations
- Enhance UI/UX with animations
For issues:
- Check SETUP.md for detailed setup instructions
- Review FastAPI docs: https://fastapi.tiangolo.com/
- User authentication and saved searches
- Email alerts for matching properties
- Advanced filtering and sorting options
- Property comparison tool
- Investment analysis features
- Map view with property locations
- Reviews and ratings system
- Multiple language support
