Safe Stride

Mapping Safety & Community

Most navigation apps optimize for speed. SafeStride optimizes for safety - specifically, for the women who pause to think twice before a solo run through an unfamiliar neighborhood.

I founded and built SafeStride as a mobile mapping and community platform that combines real-time incident data, biometric identity verification, and a privacy-preserving reporting system. It's designed to help women reclaim public spaces for running, cycling, and community meetups.

Role: Founder / Lead Product Designer & Engineer 

Tools: React Native, Mapbox, Supabase, PostGIS, Veriff

Overview:

In major urban centers like Las Vegas and Denver, personal safety is a primary barrier to physical activity. While municipal crime data exists, it is rarely actionable or human-centric. SafeStride is a specialized mapping and community platform designed to bridge the “anxiety gap." It synthesizes real-time incident data with a verified, female-only social layer to help women reclaim public spaces for running, cycling, and community meetups.

Screenshot of a mobile app interface for SafeStride, showing the 'Report Incident' page with options to select incident type (harassment, assault, stalking, unsafe area, theft, other), severity level (low, medium, high, critical), date and time of the incident, and an optional description, with a 'Submit Report' button at the bottom.

Problem:

Bridging the Urban Anxiety Gap

For many women in urban centers, the question isn't "what's the fastest route" - it's "what's the safest one." Existing tools don't answer that. Three specific gaps defined the design brief:

  • The Data Void - Municipal crime data exists but it's static, lagged, and impossible to act on in real time.

  • The Trust Deficit - Community safety features on public apps are easily gamed by bad actors. "Community" only works if the community is verified.

  • The Privacy Paradox - To report an incident, a user has to reveal their location - creating a new vulnerability in the act of trying to protect others.

How it works:

Leveraging cartographic experience and an API-first mindset, the solution focused on three interlocking design decisions:

1. Human-Centric Cartography I designed a minimalist Mapbox interface around "cognitive ease" - not data density. Using PostGIS, SafeStride aggregates municipal CAD (Computer Aided Dispatch) feeds and community reports into a dynamic heatmap layer. Repeat incidents surface at a glance without the clutter of individual map markers. The goal: a woman glancing at her phone before a run can read the map in under 5 seconds.

2. The Biometric Gate To solve the trust problem, I made onboarding deliberately high-friction. SafeStride uses fintech-grade biometric verification (document scan + live selfie match) to enforce a 1:1 human-to-account ratio. No bots. No bad actors. The friction isn't a bug - it's the entire trust model. A community is only as safe as its vetting process.

3. Location Jittering The privacy paradox required an engineering solution. I built a Location Jittering API that applies a random 50–100 meter spatial offset when a user reports an incident. The community heatmap stays accurate. The reporter's exact location stays private. Protection without exposure.

Screenshot of the SafeStride mobile app's community page showing scheduled group events: a sunrise 5K run, an evening bike ride, and a morning hike, with join buttons and participant info.
Screenshot of a mobile app profile page for Jessica Martinez showing ID verification progress with steps: driver's license scan complete, biometric selfie match in progress, address confirmation pending. Includes navigation menu, profile icon, and account details.

What I Learned:

Trust is a design choice!

Cartography isn't just about where things are - it's about how people feel when they're there. That realization shaped every design decision on SafeStride, from the minimalist map interface to the deliberate friction of biometric onboarding.

The other takeaway: friction is a feature when the stakes are right. Modern UX often treats every extra tap as a failure. SafeStride taught me that sometimes a pause - a moment that says we take this seriously - is exactly what earns user trust.

The Outcome:

  • 1:1 verified human-to-account ratio - zero bots, zero bad actors in the community layer

  • Scalable spatial pipeline processing thousands of geo-localized incidents monthly across Las Vegas and Denver

  • Location Jittering API providing 100% reporter anonymity while maintaining heatmap accuracy

  • Mobile-first architecture designed for iOS/Android HIG compliance throughout

Screenshot of the SafeStride mobile app displaying a safety map of Las Vegas area with incident reports and risk levels, along with menu options for community, report incident, profile, and navigation icons.
Mobile app interface for SafeStride showing a map with incident reports in the Las Vegas area, color-coded risk levels, and options to report incidents or view map layers.

Working With AI: Where It Helped and Where It Didn't

AI accelerated this project significantly - until it didn't. Two failure modes required senior-level intervention and reshaped how I think about human-AI collaboration in product development.

1. The Mobile vs. Web Context Gap

Despite explicit instructions that SafeStride was a mobile-first native application, the first iteration of the UI architecture from Claude was fundamentally flawed. It attempted to force-fit a web-based navigation logic, complete with a complex left-hand sidebar, into a mobile viewport.

The Failure: AI often defaults to the most common training data (web patterns) rather than adhering to specific platform constraints (iOS/Android HIG).

The Correction: I had to pivot from broad conceptual prompts to System-Level Component constraints, manually stripping out the desktop-centric code and realigning the app with a mobile design system.

2. The Mapbox Rendering Struggle

The most complex technical hurdle remains the integration of dynamic Mapbox tiles. Despite multiple prompt iterations, the AI consistently struggled with the nuances of Vector Tile rendering and layer initialization within the React Native lifecycle.

The Failure: Every iteration introduced a new glitch - from flickering heatmaps to failed POI label inheritance. This is a classic example of “AI Hallucination" in complex documentation; the model would suggest outdated or mismatched prop syntax for the @rnmapbox/maps library.

The Strategy: Because the stakes of a safety app are too high to rely on “guessed" code, this phase transitioned from AI generation to Manual Documentation Review. Getting the map engine right requires a surgical approach to the Mapbox API that GenAI isn't yet capable of mastering on its own.

See More AI-Orchestrated APPS

Multiple mobile phones displaying the Soundcheck Denver app interface with dark mode, green accents, and various music venue and artist information.