Daniel J Wilson

🚴 Pro Path Crossings App

Overview

When I moved to Nice from North America, I quickly noticed something different about my rides: professional cyclists are everywhere. Back home, spotting a pro on the road was a once-in-a-lifetime event. Here, it's a Tuesday.

The problem is they're nearly impossible to recognize. Helmets, sunglasses, head down, moving fast. Most footage of pros is from above or behind, so even faces you've seen on TV don't register at road level. The exception might be Pogacar in his rainbow-striped world champion kit, but that's about it.

I wanted to know: who am I actually sharing these roads with?

Pro Path Crossings connects to your Strava account and automatically detects when your rides overlap with professional cyclists. It monitors a registry of over 50 pros who train in the region and checks every ride you upload for proximity matches.

On the very first day I ran the app, it told me I had crossed the same point as Adrien Maire just 9 minutes apart. Not life-changing information. But exactly the kind of fun, esoteric detail I was hoping to surface.

How it works

The app uses two detection strategies, depending on what data is available.

Segment co-occurrence is the primary method. When you and a pro both ride the same Strava segment on the same day, the app flags it. This doesn't require GPS stream access from the pro — just public activity data. It's a lower-confidence signal (you rode the same stretch of road, but maybe hours apart), but it catches the most matches.

GPS proximity detection is the higher-fidelity method. When detailed GPS data is available, the app builds an R-tree spatial index over both tracks, pre-filters by time window, then uses Haversine distance to find points where two riders were less than 20 meters and less than 60 seconds apart. Nearby crossings are clustered together so you get one clean result per encounter, not hundreds of overlapping GPS points.

The whole thing is webhook-driven. When Strava pings the app about a new activity, a background worker fetches the ride, scans it against recent pro activity in the area, and sends notifications — either updating the Strava activity description directly or sending an email.

The stack is Python, FastAPI, SQLAlchemy, arq for background jobs, and Redis for the task queue.

Status

Built and running in production, currently capped at 100 users for initial testing. Detection is limited to rides in Europe for now, with the densest coverage around the Cote d'Azur where many pros are based.

🔗 You can try the app, but please only if you actually plan to ride in the Nice area (given the 100 max testing slots)