Inspiration

As a UB student navigating Buffalo's rental market, I saw friends sign leases only to discover mold, heating issues, or unsafe neighborhoods after moving in. This inspired BullsRentWise....a tool that gives students data-driven insights before committing to a rental.

What it does

BullsRentWise is a rental risk checker for UB students in Buffalo. Enter an address to get a 0–100 risk score based on nearby 311 complaints (heat, leaks, pests), crime data (violent, property, drug incidents), and weather patterns (humidity, precipitation). It shows an interactive map with incident markers, categorizes mold and pest complaints, and provides AI-powered analysis and predictions. A 30-second voice summary gives an audio overview of the property's risk profile. The tool helps students make informed rental decisions by making complex municipal data accessible and easy to understand.

How we built it

BullsRentWise is built with Next.js 14 (App Router) and TypeScript, using serverless API routes to fetch and process data. We integrated Buffalo Open Data Portal's OData v4 API for 311 complaints and crime data, OpenStreetMap Nominatim for geocoding, and the National Weather Service for weather data. The frontend uses Tailwind CSS and React Leaflet for interactive maps. We implemented a weighted risk scoring algorithm that factors in complaint types, crime severity, and weather patterns, with geospatial filtering using the Haversine formula to find incidents within a 400m radius. OpenAI GPT-3.5-turbo powers complaint analysis and risk predictions, while ElevenLabs API generates 30-second voice summaries. We optimized performance with parallel API calls using Promise.all(), implemented fallback APIs for reliability, and used lazy loading and code splitting for faster load times. The application is deployed on Vercel with serverless functions, ensuring API keys stay secure server-side and the app scales automatically.

Challenges we ran into

Major challenges included unreliable municipal APIs (solved with fallback APIs and error handling), unstructured complaint data (solved with keyword matching), OData query limitations (switched to string comparisons), and coordinating OpenAI with ElevenLabs for voice summaries (implemented token limits and audio streaming). We optimized performance by using Promise.all() for parallel API calls, reducing load time from about 5 seconds to around 2 seconds. The result is a privacy-first, serverless application that helps students make informed rental decisions by making complex risk data accessible and understandable.

Accomplishments that we're proud of

  • Built a working solution that helps UB students make informed rental decisions using real municipal data.
  • Integrated multiple APIs (Buffalo Open Data, OpenAI, ElevenLabs) into a cohesive system.
  • Created a 30-second voice summary feature combining AI text generation with voice synthesis.
  • Achieved around 2-second load times through parallel API calls and optimizations.
  • Built a privacy-first serverless architecture that keeps API keys secure.

What we learned

  • Working with municipal APIs: handling inconsistent data, implementing fallbacks, and working around OData limitations.
  • Geospatial calculations: implementing the Haversine formula for accurate distance-based filtering.
  • AI/ML integration: using OpenAI for NLP analysis and building predictive models.
  • Voice technology: integrating text-to-speech APIs and managing audio streaming.
  • Performance optimization: using Promise.all() for parallel processing and lazy loading.
  • Real-world problem solving: adapting to API limitations and creating graceful degradation paths.

What's next for BullsRentWise

  • Add landlord reputation tracking and community reviews.
  • Build a mobile app for on-the-go property scanning.
  • Implement predictive analytics for rent trends and market forecasting.
  • Add property comparison features to evaluate multiple addresses side-by-side.
  • Integrate more data sources (school ratings, public transit, walkability scores).
  • Develop an API for other developers to integrate BullsRentWise data.
  • Add multilingual support to serve international students better.

Built With

  • buffalo-open-data-portal
  • elevenlabs
  • localstorage
  • national-weather-service
  • next.js-14
  • next.js-api-routes
  • node.js
  • openai-gpt-3.5-turbo
  • openstreetmap
  • react
  • react-leaflet
  • tailwind-css
  • typescript
  • vercel
Share this project:

Updates