Inspiration

Ontario is tearing out bike lanes on some of Toronto's busiest streets, and the argument is being won without data on what cyclists actually face. Every rider knows the moment: a mirror swinging past your elbow, a truck you never heard coming. Those near misses never make it into a report. Nobody counts the crashes that almost happened.

We wanted to give cyclists what drivers take for granted, a view of what's behind them, and turn every close call into evidence the city can't ignore.

What it does

4sight turns a spare iPhone into a rear-view camera for your bike. It watches the road behind you, entirely on the phone, and judges each vehicle the way your eyes do: where it is, and how fast it's looming. When a car is about to pass too close, the matching handlebar grip buzzes. Want to change lanes? Press the grip button and it lights green or red.

Your main phone becomes the navigation screen: a bird's-eye view of the real street, with true lanes, sidewalks and crosswalks, the cars behind you in their lanes, and turn-by-turn directions that tell you which lane to be in.

Every near miss becomes an anonymous point on a public map of where Toronto's cyclists get squeezed. No video leaves the phone, nothing is sold, and the start and end of each ride are trimmed so no one's home shows up.

How we built it

V0: see the road behind. YOLO11n on the rear phone's Neural Engine, with our own tracker. Our first build said a teammate 1 m away was 4 m away, because it assumed everything was car-sized. Per-class sizes, ground-plane geometry and smoothing fixed it.

V1: decide what's dangerous. One threat engine, two cues. Geometry predicts how close a vehicle will pass and how hard it would have to brake; it makes the call. Looming, how fast a box grows, confirms faster and catches what distance misses. Looming never alerts alone: when it did, it produced 198 seconds of false alarms on our footage.

V2: tell the rider. The rear phone talks to the front phone directly over Apple's peer-to-peer Wi-Fi, with no router or data plan needed. It drives the grips over Bluetooth through an ESP32. The merge check is deliberately cautious: anything alongside, anything arriving within 5 seconds, or any stale data means red.

V3: show the street. We drew roads from the GPS trail; they glitched at every intersection. Apple Maps tiles were blank at cycling zoom. So we bundled OpenStreetMap and drew it ourselves, in a Tesla-style 3D view with lane guidance Apple doesn't give cyclists.

The city side. The rear phone logs GPS on every ride. A Python pipeline matches near misses to streets, and a web dashboard ranks close passes per 100 km by street, hour, vehicle and bike lane vs. none. Today's map is one real ride plus clearly labelled modelled data.

How we used Claude

Claude Code worked alongside us in parallel sessions. It wrote much of the Swift, drove the iOS simulator to tune the navigation screen without a bike, and replayed our real ride footage through the full pipeline. It also ran the experiments behind our numbers: the rear wheel was being detected as a person in half of all frames, and a learned mask cut that from 210 boxes to 21. And it tested 10, 15, 20 and 30 fps on real footage before we picked 15, because more frames made tracking worse.

Challenges we ran into

The same person kept becoming two people: at 10 fps, someone close moves further than their own width between frames. Wi-Fi to the grips needed a hotspot API our free developer account can't use, so we moved to Bluetooth. Public map servers took 30 seconds to answer, so the map ships inside the app.

What's next for 4sight

More real rides to replace the modelled data and measure alert accuracy. A safe upload path, with no keys in the app, so riders can share near misses and the map can go to advocacy groups and planners. Warnings for the classic right hook: a car closing on your right just before your right turn.

Every near miss is a crash that almost happened. We want every one of them counted.

Built With

Share this project:

Updates

Submission history