Inspiration

We have all had that moment when you're walking home, to school or to work, where someone starts following you or someone is eyeing up your bag or you are worried about your safety, especially for women. You start asking some questions.

Which route is safer? Is this street too quiet? Should I take the longer way instead?

Our teammate would share her location, text when she got in, and rely on advice from friends “avoid that road,” “stick to this area” without ever really knowing why.

The problem wasn’t a lack of information. It was that everything was scattered, informal, and hard to trust in the moment.

StreetSense came from the idea of turning that instinct into something concrete combining all those signals into a single, real-time view of safety, so no one has to rely on guesswork to feel secure.

What it does

StreetSense is a real-time safety mapping app that helps you make smarter decisions about how you move through a city. The key features include:

Real-Time, Context-Based Street Ratings - We generate dynamic safety ratings at the street and landmark level by combining trusted ground truth sources (such as the UK Police Crime API) with live online data and social media signals. This provides granular, location-specific awareness instead of broad city-level statistics.

Live Community Intelligence - Users can post real-time updates to a shared live feed. These posts are analyzed and incorporated into area ratings, allowing the system to dynamically adjust based on what’s happening right now.

Safety-Optimized Routing - Our routing engine doesn’t just find the fastest path it optimizes for both safety and efficiency. Routes dynamically minimize exposure to higher-risk zones while still getting users to their destination efficiently.

By turning scattered, hard-to-interpret information into a single, clear signal, StreetSense helps people travel with more awareness and confidence.

How we built it

StreetSense was built as a full-stack, real-time intelligence system combining modern frontend tooling, scalable backend infrastructure, and custom built transformers.

Frontend - Our frontend was built using React with Vite for fast development and optimized builds. For geospatial visualization and interaction, I used Mapbox GL, allowing us to render, street-level risk overlays, and interactive routing in real time. To accelerate UI development, we used v0 for rapid frontend prototyping and design iteration.

Backend & API Layer - The backend was built using FastAPI (Python), enabling us to create a high-performance, asynchronous API layer capable of handling real-time data ingestion, analysis, and routing queries.

We started by modelling London as a continuous safety surface. Instead of treating areas as simply “safe” or “unsafe,” we used Gaussian interpolation so risk spreads meaning dangerous streets influence nearby ones, creating realistic gradients rather than hard boundaries.

Real-Time Data Pipeline We built a constantly running ingestion pipeline that scapes multiple sources including

  • UK Police API (recent crime data)
  • Online sources (e.g. Reddit, twitter, yelp)

This data is continuously being scraped and analysed in order to facilitate dynamic updates of safety scores in real time, processed and stored, allowing the system to update safety scores in near real time.

Social + LLM Layer We added a live reporting system where users can post incidents. These estimates are then passed through a semantic analysis layer. To do this, we fine tuned two DistilBERT models:

  • Classifier - detects type of incident (crime related, weather related, etc.)
  • Impact predictor - estimates how much it should affect safety

These outputs directly feed into the scoring system, updating safety dynamically.

Safety Scoring Engine Each location’s score combines:

  • Spatial risk (Gaussian model)
  • Time-of-day patterns
  • Real-world data (crime, weather, roads)
  • Social/LLM signals

All signals are normalized into a single 0–100 safety score.

Safe Routing Finally we converted the map into a graph of connected nodes and run an A* search:

  • Edge weights are adjusted by safety scores
  • Safer paths are prioritised over shorter ones

Result: routes that are not just fastest but safest

🏗️ Tech Stack Frontend

  • React + TypeScript
  • Mapbox GL JS
  • Tailwind CSS

Backend

  • FastAPI
  • Spatial scoring engine (Gaussian interpolation)
  • ML pipeline (DistilBERT models)

Database

  • PostgreSQL + PostGIS

Challenges we ran into

Training & tuning the ML models Our DistilBERT models needed careful tuning to produce useful outputs. Defining the right labels and impact scale wasn’t obvious and the outputs had to be consistent enough to directly influence safety scores

Lack of good training data There’s no clean dataset for “perceived safety.” We ended up creating synthetic training data using templates and manually designed scenarios, then iterating through analysis to improve quality.

Scraping & rate limits Pulling real-time data from external sources introduced constraints:

  • API rate limits restricted how often we could update
  • Some sources were inconsistent or unreliable

We had to design around this with batching, caching, and fallback logic.

Accomplishments that we're proud of

  • Built a full end-to-end system in ~8 hours from data ingestion to ML to frontend mapping
  • Successfully trained and integrated LLM-based models into a live pipeline
  • Achieved ~20% classification error rate, which is strong given our synthetic + limited dataset
  • Delivered a fully working real-time pipeline scraping, processing, scoring, and visualisation all connected
  • Implemented safety-aware routing, not just shortest-path navigation

What we learned

  • How to train and deploy ML models under tight hardware constraints
  • Creative ways to generate and iterate on synthetic training data
  • How small optimisations (batching, lightweight models, efficient prompts) can make systems viable

What's next for StreetSense

  • Deploy StreetSense for real-world usage
  • Integrate higher-quality data sources (paid APIs, verified feeds)
  • Work with domain experts (urban safety, criminology) to refine the model
  • Expand features for real users (alerts, personalization, safer recommendations)

Built With

Share this project:

Updates