Inspiration

SafeStep is inspired by college students. It is used to navigate in unfamiliar environments and their new college town. A lot of students are international or out-of-state and this tool will help them explore their area while avoiding hazardous pathways.

What it does

SafeStep is a real-time walking safety app that helps pedestrians make smarter decisions about their routes before they head out. Built on top of Google Maps, SafeStep analyzes the crime history along your exact walking path and returns an AI-generated safety score so you know what to expect before you take your first step. How it works: Enter your origin and destination. SafeStep traces your walking route, samples points along the path, and pulls real crime incident data from public city databases. That data is then fed into Google Gemini, which reasons about the severity, recency, and type of crimes nearby (using a huge database) to generate a safety score from 1 to 10 along with a plain-English explanation of the risks and the most common crime type in the area.

How we built it

SafeStep is a React web app that delivers a real-time safety analysis. Google Maps & Directions API are used. When a user searches for a destination, the Google Directions API returns the exact walking route as a series of coordinates. We then sample points along that path every ~200 meters to build a geographic footprint of the full route. Chicago Open Data (Socrata API) is our crime data source. For each sampled point along the route, we query the City of Chicago's public crime database, which contains thousands of real reported incidents with exact longitude and latitude, to pull all crimes reported within 200 meters of that point since 2025. This gives us a dense, location-accurate picture of what has happened along the user's exact path.

Google Gemini AI - We feed the raw crime data into Gemini with a structured prompt asking it to reason about crime severity, recency, and frequency. Gemini returns a safety score from 1 to 100 and a plain-English explanation of the risks.

The frontend is built in React using the @vis.gl/react-google-maps library for seamless map integration, with a UI section that displays the live safety analysis as soon as a route is drawn.

Challenges we ran into

We had a lot of issues fetching crime data due to it being slightly disorganized and messy, for which we had to read through the data parameters used and use the exact format in our code to obtain the values. This issue had also led to inaccurate safety scores because Gemini wasn't receiving correct information.

We also ended up deleting our old Google Maps API and when we made a new one, our program was still referring to the old API key and not updating -- leading to the entire site crashing. To solve the issue, we realized that the program was still connecting to the old key because our index.html file had the link to the old key and we had to change that.

Accomplishments that we're proud of

The end-to-end pipeline actually works. We're proud that in under 24 hours we successfully chained four completely separate technologies, Google Maps, Google Directions, a crime database, and Gemini AI, into a single seamless flow that goes from a user typing a destination to receiving a real, meaningful safety score in seconds. We were also able to add a database using MongoDB which tracks routes that we have added to cloud and saves them along with the safety score.

Instead of writing a rigid hardcoded formula to compute a score, we trusted Gemini to reason about the crime data like a human would, weighing severity, recency, and frequency naturally. The result is a score that comes with a plain-English explanation, which makes it actually useful and trustworthy to a real user rather than just a number.

We're proud that SafeStep isn't just a cool tech demo but rather it addresses something people genuinely experience. Solo walkers, college students heading home late at night, and commuters in unfamiliar neighborhoods have no good tool for this right now. SafeStep fills that gap in a way that's simple and immediately understandable. Given the time constraint we're proud of how clean and intuitive the final product looks. The map, the sidebar, the live safety card.

What we learned

Prompt engineering matters more than we expected. We quickly learned that how you structure your prompt completely determines the quality and consistency of the output. Getting Gemini to return clean, parseable JSON every single time required way more iteration on the prompt than we anticipated.

Real world data is messy. Records have missing fields, inconsistent formatting, and coordinates that don't always line up perfectly with map boundaries. We learned to defensively handle API responses and never assume the data will be clean.

Scope decisions make or break a hackathon. Early on we had big ideas — multiple cities, alternate route comparison, real-time incident reporting. We learned quickly that ruthlessly cutting scope and doing one thing really well is the right call. Focusing on a single city with a single clean flow is what allowed us to actually finish and have something demo-ready.

Chaining APIs is harder than using one. Each individual API, Google Maps, Socrata, Gemini, is straightforward on its own. The complexity explodes when you chain them together because the output format of one becomes the input of the next, and a failure anywhere in the chain breaks everything. We got much better at defensive error handling and thinking about the pipeline as a whole.

Geolocation is not guaranteed. We assumed getting the user's location would just work. We learned to always build a fallback for when the browser denies location permissions or the request times out, which saved our demo.

What's next for SafeStep

Multi-city support. Right now SafeStep runs on Chicago's open data. The architecture is already built to plug in any Socrata-supported city, NYC, LA, Boston, SF , so the next step is building a city detection layer that automatically pulls from the right dataset based on where the user is located. No manual city selection, it just works wherever you are.

Time-of-day awareness. Crime patterns change dramatically between 2pm and 2am. We want to add a time slider so users can plan ahead. Gemini already handles time-aware reasoning, we just need to pass it through.

Expanding beyond crime data. Safety isn't just about crime. We want to incorporate lighting data, pedestrian infrastructure quality, traffic accident history, and weather conditions to build a truly holistic picture of route safety.

Share this project:

Updates