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

  1. AWS Bedrock API Limitations: Claude 3.5 Sonnet initially didn't support the Converse API in my account. I built a custom BedrockInvokeModel wrapper that uses the InvokeModel API instead, implementing proper message formatting and async streaming from scratch.

  2. 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.

  3. 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.

  4. 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 ![](url) patterns and render them as actual images inline with property details.

  5. 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

Share this project:

Updates