Inspiration
As an international student and young professional navigating unfamiliar cities, I experienced firsthand the overwhelming challenge of finding the right rental property. Endless browsing across multiple websites, conflicting neighborhood reviews, and uncertainty about fair pricing left me frustrated. I envisioned an AI assistant that could consolidate this entire process into a single, intelligent conversation—leveraging the power of large language models to search globally, analyze sentiment, and provide data-driven recommendations.
What it does
Leasy is an intelligent AI rental assistant powered by AWS Bedrock and Claude 3.5 Sonnet. Through natural conversation, users can:
- Search properties globally across US (RentCast) and international markets (Exa AI web search)
- Analyze neighborhood sentiment by scanning Reddit communities and Twitter discussions for real resident feedback
- Compare properties side-by-side with automated pros/cons analysis and scoring matrices
- Calculate optimal rental offers using market data and pricing algorithms
- Discover nearby amenities through Google Maps integration
- Track favorites and view history with session management stored in AWS S3
All of this happens conversationally—users simply describe what they're looking for, and Leasy's multi-agent system orchestrates the search, analysis, and presentation.
How I built it
Architecture:
- Frontend: Streamlit for clean, responsive UI with real-time chat interface
- AI Orchestration: Strands Agents SDK for multi-agent coordination
- LLM: AWS Bedrock with Claude 3.5 Sonnet v2 (us-east-1 cross-region inference profile)
- Custom Wrapper: BedrockInvokeModel class to bypass Converse API and use InvokeModel directly
- Agent Tools: 12+ specialized functions including property search, sentiment analysis, negotiation calculator, and comparison engine
- External APIs: RentCast (US properties), Exa AI (global web search), Reddit API, Twitter API, Google Maps API
- Storage: AWS S3 for session data, favorites, and search history
- Deployment: Python virtual environment with modular agent architecture
Technical Stack:
- Python 3.12, Streamlit, Strands SDK, boto3 (AWS SDK)
- Custom async streaming implementation for Bedrock InvokeModel
- Markdown-based image rendering pipeline for property photos
Challenges I ran into
AWS Bedrock API Limitations: Claude 3.5 Sonnet initially didn't support the Converse API in my account. I built a custom
BedrockInvokeModelwrapper that uses the InvokeModel API instead, implementing proper message formatting and async streaming from scratch.Multi-Agent Tool Coordination: Designing a system where 12+ tools work seamlessly required careful prompt engineering to ensure Claude called the right tools at the right time and properly formatted responses with property images.
Global Property Data: No single API provides worldwide rental data. I integrated RentCast for US properties and Exa AI for web scraping international listings from Rightmove, Zoopla, and regional platforms.
Image Rendering in Chat: Streamlit's native Markdown doesn't automatically render images from LLM responses. I built a custom regex-based parser to extract
patterns and render them as actual images inline with property details.API Rate Limits & Costs: Managing multiple external APIs (RentCast, Reddit, Twitter, Exa) required implementing fallback logic and cost optimization strategies.
Accomplishments that I'm proud of
- Successfully deployed Claude 3.5 Sonnet with a custom Bedrock wrapper when standard APIs weren't accessible
- Built a production-ready multi-agent system with 12+ specialized tools working in harmony
- Achieved global property search covering US and 100+ international cities
- Integrated real-time social sentiment analysis from Reddit and Twitter for authentic neighborhood insights
- Created a clean, professional UI that makes complex AI capabilities feel simple and intuitive
- Implemented session management with AWS S3 for favorites and view history
- Solved the Converse API limitation by building my own InvokeModel implementation
What I learned
- AWS Bedrock Architecture: Deep understanding of InvokeModel vs. Converse APIs, cross-region inference profiles, and proper message formatting for Anthropic models
- Multi-Agent Design Patterns: How to orchestrate multiple specialized agents through a central coordinator using the Strands framework
- Prompt Engineering at Scale: Crafting system prompts that reliably guide Claude to use tools correctly and format responses consistently
- API Integration Best Practices: Handling rate limits, errors, and fallbacks across multiple third-party services
- Streamlit Advanced Features: Custom Markdown parsing, session state management, and dynamic UI rendering
- Real-World AI Product Development: Balancing feature ambition with API constraints, costs, and user experience
What's next for Leasy
- Real Property Image Integration: Implement Serper API or direct MLS feeds for actual property photos instead of placeholders
- Lease Document Analysis: Upload and analyze rental agreements with AI-powered clause extraction and risk assessment
- Virtual Property Tours: Integrate 360° virtual tour APIs and video walkthrough analysis
- Landlord Reputation System: Build a database of landlord reviews and automate background checks
- Mobile App: Native iOS/Android apps with push notifications for new listings matching user criteria
- Multi-Language Support: Expand to support property searches in non-English speaking markets
- Price Prediction Model: Train custom ML models on historical rental data for accurate future price forecasting
- Roommate Matching: AI-powered compatibility analysis for shared housing scenarios
Built With
- amazon-web-services
- bedrock
- exa
- maps-api
- rentcast
- s3
- serpi
- strands-agent
Log in or sign up for Devpost to join the conversation.