🧠 Inspiration

Finding affordable housing has become one of the hardest challenges for young professionals and newcomers.
Most rental platforms show prices, but not affordability.
RentPilot was inspired by that gap — a transparent, data-driven way to answer:

“Where can I actually afford to live?”

Our goal was to build a trustworthy affordability assistant that reasons like a human — not just fetches numbers — and explains every step.


💡 What it does

RentPilot is an AWS Bedrock-powered affordability agent that helps renters discover suitable neighborhoods.
It combines Claude 3 Sonnet’s reasoning with deterministic Python tools for data retrieval, affordability evaluation, and policy verification.

When you ask:

“Find me 1-bed areas in Toronto under \$2,200 with good transit,”

RentPilot automatically:

  1. Plans the reasoning chain through Bedrock’s Converse API.
  2. Calls verified tools (get_rent_data, suggest_neighbourhoods, evaluate_affordability).
  3. Returns a structured JSON envelope — including plan, actions, verification, and summary.
  4. Logs everything in a reproducible JSONL ledger.

The affordability decision follows the standard rent-to-income rule:

$$ \text{Affordability Ratio} = \frac{\text{Monthly Rent} \times 12}{\text{Annual Income}} $$

If \( \text{Ratio} \le 0.3 \), the rent is considered affordable.


⚙️ How we built it

  • Backend: AWS Lambda functions (Python 3.11), orchestrated with AWS SAM
  • Model: Anthropic Claude 3 Sonnet via AWS Bedrock Converse API
  • Frontend: Minimal single-page demo (index.html) hosted on S3 static website, using fetch() to call the API Gateway endpoint
  • Data: CMHC-aligned median rents (JSON), locally stored or optionally pulled from S3
  • Logging: Each agent response stored in ledger.jsonl for auditability and reproducibility

🚧 Challenges we ran into

  • Designing deterministic reasoning, ensuring the same verified JSON envelope every run
  • Handling CORS + preflight between S3 static frontend and API Gateway
  • Managing regional AWS outages and redeploying seamlessly between us-east-1 and ca-central-1
  • Maintaining structured, human-readable explanations within the 3-minute demo time

🏆 Accomplishments we're proud of

  • Built a fully reproducible reasoning chain using AWS Bedrock Converse API
  • Achieved transparent verification — every answer includes plan, actions, and ledger entry
  • Deployed a fully serverless architecture (Lambda + Gateway + S3 + SAM)
  • Designed a lightweight, interactive demo UI for public testing

📚 What we learned

  • The Bedrock Converse API is the future — easier multi-turn reasoning and context management
  • Reproducible AI requires verification layers beyond model outputs
  • Combining Bedrock + SAM creates a powerful pattern for serverless AI agents

🚀 What's next

  • Add real-time open-data integration (transit, safety, walkability APIs)
  • Support multi-city comparisons (Toronto, Vancouver, Montreal)
  • Extend the ledger system for version tracking on S3
  • Integrate with AWS Bedrock Agents (2025 preview) for native tool orchestration

🧰 Built With

  • 🐍 Python 3.11
  • ☁️ AWS Lambda + API Gateway + S3
  • 🧱 AWS Bedrock (Claude 3 Sonnet via Converse API)
  • ⚙️ AWS SAM
  • 📊 CMHC Median Rent JSON Data
  • 💻 HTML + JavaScript frontend

Built With

Share this project:

Updates