The ride writes itself up
You get home from four days in the mountains with two hundred photos, a GPX track and no intention of ever writing a trip report. We think that is a shame, so we built the thing that writes it for you.
AI trip stories
The enrichment gateway shipped, and with it the flagship: point it at a recorded ride and it produces a StoryMap — a scrolling narrative where the 3D globe flies along with the text, your photos land where you took them, and the prose is grounded in where you actually were rather than invented.
Generation is a job, not a request. You start it, it runs in the background, you get a notification. Writing four days of riding takes longer than an HTTP timeout allows, and pretending otherwise produces a spinner nobody trusts.
It reads your media too. Audio and video samples are transcribed through the media-AI gateway, so the voice note you recorded at a viewpoint — helmet on, engine running, describing the road you just rode — becomes part of the story instead of a file you never open again.
Then it narrates. Text-to-speech per scene, in multiple languages, with the narration switching when the reader switches language — so a story from a Norwegian ride can be read aloud in Italian to someone who will never see the fjord otherwise. The translation and the speech are generated together, so the voice matches the text on screen rather than reading an English original with an accent.
Getting it honest
The interesting work was not generation, it was restraint. Three fixes tell the story:
- Each narrative section is used by at most one scene. Without that, the story quietly says the same thing three times in slightly different words — the most recognisable tell of machine-written prose.
- Photo references drifted. The model would cite an image that was not there, so headings, prose and narration are now reconciled against the media that actually exists before anything renders.
- The camera and the rider sit on the terrain surface, rather than floating above it or sinking below. It sounds cosmetic until you watch your own bike ride straight through a mountain.
The library, filled in
Per-capture storage actions, direct sample visualisation, inline previews you can view and share over the map, and media that keeps streaming from the server after you delete the local copy to free space. Your phone fills up on a long trip; that should cost you storage, not memories.
Orphaned captures — samples whose session record went missing — now recover instead of dead-ending on a screen that told you nothing.
Also: photos captured in-app keep their GPS. Expo's image re-encode was silently stripping the EXIF location — every photo any of us had taken in the app was ungeotagged, and nothing had ever complained. Coordinates are now injected at capture time, and everything shot before the fix was backfilled server-side from the position the app had already recorded alongside it.
Why this matters
A ride you cannot show anyone is a ride that slowly stops existing. We would like the good ones to last.
Dig deeper: stories covers generation, editing and publishing.
