Car, bike or on foot? Why your phone often guesses wrong
When Fenzly records a trip, it doesn’t just draw the line, it labels it: 🚶 a walk, 🚴 a ride, 🚗 a drive. That little icon looks like the easiest part of the whole app. It is, by a comfortable margin, one of the hardest to get right, and this post is about why, and about the design decision we took once we accepted we’d never get it right every time.
Witness number one: the motion chip, which sometimes lies
The battery post introduced the motion coprocessor, the little chip that classifies your movement: still, walking, cycling, in a vehicle. It sounds like the problem is already solved, just ask the chip.
Field reality disagrees. The chip’s verdicts arrive late, change reluctantly, and on some phones barely arrive at all. We’ve watched a phone report walking for an entire motorway drive, one verdict at the start of the trip, never revised, at 100 km/h. We’ve seen a full mountain hike tagged as in a vehicle from beginning to end. The chip is a witness, and a useful one; it is not a judge.
Witness number two: speed, which is ambiguous on purpose
The obvious fallback is speed: walks are slow, drives are fast. That works until you look at the middle of the range, where real life happens.
An e-bike commuter, a delivery scooter and a car in city traffic all cruise at much the same pace. A runner overlaps with a slow cyclist. A traffic jam brings a car down to walking speed, and a train, on the map, is just a very smooth car. Our favourite specimen from testing: a boat trip on the lake, cruising at bike speed, proudly labelled 🚴. There is no boat in the phone’s vocabulary, so the speed bands did exactly what they were told.
And single trips mix modes: you walk ten minutes to the car, then drive home. Seen as one block, the numbers average into nonsense, that outing once showed up as ”🚴 18 km/h”, the exact arithmetic mean of a walk and a motorway.
What Fenzly does with two unreliable witnesses
It cross-examines them. The motion chip’s verdicts are weighted over the whole trip; speed statistics are computed the honest way (time-weighted, so a densely sampled slow stretch can’t outvote a sparse fast one); and when the two witnesses disagree in a recognisable pattern, a slow leading stretch followed by a sustained fast one while the chip stayed mute, the trip is split into its real legs, a walk and a drive, each labelled on its own.
The caution runs one way on purpose. A slow-then-fast pattern is safe to split; a fast-then-slow one is not, because a traffic jam looks exactly like a walk, and mislabelling a jammed commute as a stroll would be worse than leaving it whole. Where ambiguity can’t be resolved, we prefer the error that misleads least.
One more property matters here: all of this happens on your phone. There’s no cloud service inspecting your trips to classify them, nothing to inspect on our side in the first place.
The most important feature is the smallest one
Everything above raises the hit rate. None of it reaches 100 %, nothing can, some cases are genuinely undecidable from sensors alone. So the real design decision isn’t in the detection, it’s in what happens after.
Fenzly displays its conclusion as what it is: a guess, labelled “Auto-detected”. Tap it, and you can set the truth in one gesture, on foot, running, bike, car, bus, train. The label flips to “Corrected manually”, your choice sticks, and it’s your version, not the algorithm’s, that your circle sees. You can do it mid-trip, the moment you notice, and if you ever prefer the machine’s opinion again, one tap on Auto hands the pen back.
It’s the same philosophy that runs through this whole series, applied to a small feature: when the system can’t know, it shouldn’t pretend. Show the guess, name it a guess, and leave the last word to the human.
The honest limit
A correction fixes the trip you corrected; it doesn’t teach the system your habits. That’s a deliberate trade: learning your patterns would mean building a profile of how you move, and we’ve explained why we don’t keep one anywhere we could read it. So the detector will keep making its occasional wrong guesses, the boat will occasionally be a bicycle, and the fix will stay where it belongs: one tap away, in your hands.
Next: sending one sealed message to a whole circle sounds simple, until you learn there’s no such thing as a group envelope. Why Fenzly encrypts everything once per member, and what that buys you.