Inspiration

Buying a home is the biggest financial decision most people will ever make. Yet the information available to buyers is either sanitized by platforms trying to sell you something, locked behind expensive real estate agents, or buried across dozens of disconnected sources. First-generation buyers and people moving to unfamiliar cities are especially disadvantaged. We wanted to level that playing field.

What it does

MoveWise lets you type in any US address and instantly get an honest, multi-dimensional picture of that neighborhood. It pulls data from crime databases, FEMA flood maps, Walk Score, GreatSchools, city 311 complaint portals, and real resident sentiment from local Reddit communities. A modular data pipeline aggregates all of this, and a retrieval-backed context layer surfaces what actual residents say about living there, and everything is synthesized into a plain English verdict. The goal is simple: give every buyer access to the kind of neighborhood intelligence that used to require money, connections, or luck.

How I built it

  • Frontend: React + Vite with Tailwind CSS for a clean, minimal UI and Axios for communicating with the Flask backend. Two core routes: a home page with a single search bar and a results page with clearly labeled data sections and a conversational follow-up chat
  • Backend: Python Flask with modular data source adapters, each external API isolated in its own module. flask-cors handles cross-origin requests cleanly. Routes are stateless and designed for robustness, with each adapter returning structured error states when a source is unavailable rather than silently degrading
  • LangChain is the backbone of the intelligence layer. It orchestrates the entire Claude-powered synthesis pipeline, manages prompt construction and context injection, and drives the stateful multi-turn follow-up chat. Using LangChain's abstractions here meant we could iterate fast on the AI layer without rewriting plumbing every time
  • RAG-style retrieval pipeline: Unstructured data from Reddit and local news is chunked, embedded, and stored in a Pinecone-compatible vector store. A semantic retrieval step pulls the most contextually relevant resident sentiment for each address before passing it to Claude, grounding the output in real community voice rather than generic summaries. Building this retrieval architecture from scratch in a hackathon context was one of the most technically demanding parts of the project
  • Pinecone-ready vector store architecture enables fast semantic similarity search over embedded neighborhood posts and articles. The design is built to scale, as more addresses are searched the vector store gets richer and retrieval quality improves over time
  • Claude (claude-sonnet) via the Anthropic API serves as the synthesis layer at the end of the pipeline. Careful prompt engineering keeps its output strictly anchored to the data it was handed, producing a specific and credible neighborhood verdict rather than a hallucinated one
  • Caching layer handles repeat address lookups, reducing redundant API calls and keeping response times fast for frequently searched addresses
  • Deployment: Frontend on Vercel, backend on Render, with environment-based configuration for all API keys

Challenges I ran into

Wrangling heterogeneous data sources into a coherent, consistent response was the core engineering challenge. Each API returns data in different formats, at different speeds, and with different reliability. Designing the pipeline so that partial failures surface cleanly on the frontend, without silently degrading the quality of Claude's synthesis, required deliberate architecture decisions throughout. Tuning the RAG retrieval layer to return genuinely relevant resident sentiment rather than loosely related posts also took real iteration on chunk sizing and embedding strategy, and getting LangChain to stay strictly grounded in provided context required careful prompt engineering work.

What I learned

Data fetching, cleaning, chunking, embedding, and retrieval are where quality is won or lost. We came away with a much deeper understanding of LangChain's orchestration capabilities, what it actually takes to build a reliable RAG pipeline over noisy real-world data, and how Pinecone's vector architecture enables semantic search at scale. We also learned how prompt engineering is as much a systems design problem as it is a writing one, and how much user trust depends on being transparent about where data comes from.

What's next for MoveWise

Adding property value trend data, building a side-by-side address comparison feature, and eventually a browser extension that surfaces MoveWise insights directly on Zillow and Realtor.com listings.

Built With

  • anthropic-claude-api
  • axios
  • flask
  • flask-cors
  • gdelt
  • google-news-rss
  • langchain
  • openstreetmap/nominatim
  • overpass-api
  • pinecone-(vector-store-compatible-architecture)
  • praw
  • python
  • react
  • redis-compatible-caching
  • render
  • requests
  • tailwind-css
  • vercel
  • vite
Share this project:

Updates