Harbor — AI Housing Compatibility Agent

About

An AI agent that helps Virginia Tech students find high-fit housing fast.
It blends retrieval-augmented generation (RAG), geospatial insight, and LLM reasoning to surface top matches, explain why they fit, and draft personalized owner messages in one click.

Inspiration

Housing search is fragmented and stressful. Students don’t just need listings—they need confidence: affordability, lifestyle alignment, safety, and walkability.

What it does

  • Computes a compatibility score (0–100) combining structured filters + semantic embeddings.
  • Visualizes neighborhoods with H3 heatmaps (price, safety, compatibility) over Blacksburg.
  • Generates one-line rationales and personalized outreach messages, with instant rewrites (“casual” / “shorter”).

How we built it

  • Design: Figma-first prototyping ensured clear user flows and component specs
  • Hybrid retrieval (R in RAG): SQL filters + pgvector k-NN over embeddings.
  • Ranking: factor scoring (budget, distance, safety, walkability) + MMR diversification.
  • Augmentation (A in RAG): evidence JSON from Supabase (facts + scores).
  • Generation (G in RAG): Gemini LLM for rewrites, rationales, and contact drafts.
  • Geospatial: deck.gl + h3-js to aggregate metrics and render interactive heatmaps.
  • ETL & embeddings: Databricks (Delta, PySpark/Pandas, sentence-transformers).
  • Backend/UI: FastAPI (Uvicorn) + vanilla JS UI (cards, maps, modals).
  • Data: Supabase Postgres (+ Storage for images).

Challenges

  • Translating Figma interaction specs to performant, accessible UI.
  • Balancing structured filters with open-ended semantic intent.
  • Maintaining low-latency LLM calls while ensuring consistent, grounded rationales.
  • Orchestrating Databricks, Supabase, and FastAPI into one seamless flow.

Accomplishments

  • Delivered end-to-end agent flow: search → explain → map → contact.
  • Achieved pixel-to-production fidelity by translating Figma design tokens and flows directly into the working UI.
  • Built a Databricks pipeline powering embeddings and geo-features.
  • Generated trustworthy, varied natural-language rationales per match.
  • Enabled instant outreach via editable AI-drafted contact messages.
    shout out to Crystal for making pretty UI/UX with Figma

What we learned

  • Practical RAG beats raw LLMs for trust and determinism.
  • H3 + deck.gl deliver city-scale insight with lightweight integration.
  • UX transparency (“why this match?”) builds user confidence.

What’s next

  • Landlord dashboard + group application packages.
  • Verified safety/accessibility overlays; waitlist + notification features.
  • Nightly Databricks refresh pipeline; expansion to more campuses.

Tech

System, design, flows: Figma Languages/Frameworks: Python, FastAPI, Uvicorn, SQLAlchemy, Vanilla JS
Data & Storage: Supabase Postgres, pgvector, Supabase Storage
AI/ML: Databricks (Delta, PySpark/Pandas), sentence-transformers, Gemini API
Geo/Visualization: deck.gl, h3-js
Ops: Swagger docs, cURLable APIs, local FastAPI dev, deployable via Cloud Run

Built With

  • cursor
  • databricks
  • environment-driven
  • fastapi
  • gemini
  • git
  • googleai
  • h3-js
  • javascript
  • k-nn-(pgvector)
  • mmr-diversification
  • numpy
  • openai
  • pyspark
  • python
  • rag
  • react
  • search
  • sqlite
  • supabase
  • textembedding
  • transformers
  • uvicorn
  • vectorsearch
  • vite
Share this project:

Updates