Boroughs

Inspiration

New York City is one of the most diverse and most expensive cities in the world. But affordability, safety, and community vary widely from one neighborhood to another. Our team wanted to build a tool that helps people make informed decisions about where they can realistically live based on data, sentiment, and personal lifestyle factors rather than guesswork. We were inspired by the lack of unified platforms combining ML predictions, community perspectives, and neighborhood data into one transparent map.

What it does

Boroughs is an interactive NYC affordability and compatibility map.

It allows users to:

  • Input their budget, preferences, and lifestyle
  • View rent predictions, neighborhood trends, and expected growth rates
  • Explore an interactive heatmap powered by Leaflet + OpenStreetMap
  • See data sourced from NYC Open Data, Reddit sentiment, and local community info
  • Receive a personalized borough or neighborhood recommendation powered by Claude AI

The result is a tool that blends data analytics with real-world insight to guide housing decisions.

How we built it

  • Frontend: React + Vite, styled with Tailwind CSS and animated using Framer Motion
  • Mapping: Leaflet with OpenStreetMap tiles for dynamic visualization
  • Backend: Flask server handling API requests, ML inference, and data processing
  • Machine Learning: scikit-learn regression model trained on Kaggle housing price data, saved and loaded using joblib
  • Data Processing: pandas and numpy for wrangling, cleaning, and transforming large datasets
  • AI Integration: Anthropic Claude API for generating personalized neighborhood recommendations
  • External Data: NYC Open Data, Reddit API (r/nyc), Queens Eats, and Facebook Groups for localized insights
  • Environment Management: python-dotenv and requests for secure API access and HTTP communication

Challenges we ran into

  • Frequent merge conflicts, requiring improved communication and coordinated pushing/pulling
  • Debugging issues between frontend and backend data flow
  • Designing an ML model that accurately predicts rent growth rates from Kaggle data
  • Getting the Claude API to integrate properly with the website
  • Leaflet UI overlap issues, especially on small screens or dense map displays
  • Time spent cleaning and aligning multiple datasets with different formats and levels of reliability

Accomplishments that we're proud of

  • Successfully built a fully functional full-stack ML-powered application
  • Created a clean, animated, and responsive UI
  • Implemented a working rent growth rate prediction model
  • Integrated multiple external data sources into a unified interface
  • Connected AI (Claude) to generate conversational, personalized recommendations
  • Overcame several front-end layout bugs and syncing challenges as a team

What we learned

  • How to coordinate effectively in Git to avoid and resolve merge conflicts
  • How to build, train, and deploy ML models in real-world applications
  • The complexity of handling multiple unreliable datasets
  • The nuances of frontend-to-backend communication
  • How mapping engines like Leaflet work under the hood
  • How large language models can enhance user experience when integrated thoughtfully

What's next for Boroughs

  • Expanding beyond NYC to include all five boroughs in deeper detail, then other major cities
  • Incorporating real-time rental listings from public APIs
  • Adding crime data, school ratings, commute times, and other quality-of-life indicators
  • Improving ML accuracy with more datasets and time-series forecasting
  • Creating user accounts for saving searches and tracking neighborhoods over time
  • Building a mobile-friendly PWA version

Built With

Share this project:

Updates