{"slug": "show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights", "title": "Show HN: ride-recap, teaching a LLM my taste to automate cycling highlights", "summary": "A developer open-sourced ride-recap, a tool that uses Google's Gemini AI to automatically scan GoPro footage and Garmin telemetry data to produce 60-second cycling highlight reels for about $0.04 per ride. The system identifies compelling moments from multiple sources including telemetry spikes, Strava segments, and AI frame analysis, then uses a language model to curate the best clips into a narrative. The project demonstrates how LLMs can be taught personal taste through iterative feedback to automate video editing for niche hobbies.", "body_md": "TL;DR: Turn hours of raw GoPro footage + a .fit file into a 60-second highlight reel with ride telemetry burned in. Every second of the ride is scanned by gemini-3.5-flash, as is the clip ranking + curation. The whole thing costs about $0.04 per ride and takes 10 minutes.\n\nLonger version: Road cycling has been my primary form of exercise, social outlet, therapy, wardrobe expense, and personality trait for almost a decade. I ride most weekends, usually out of Manhattan and up 9W. By the end of a ride I have hours of GoPro footage and one .fit file with per-second speed, power, heart rate, cadence, and GPS. Absolutely no one wants to watch 3 hours of being stuck behind Citibikes on West Side Highway. It's fun to look through past footage, identify the fun parts, and put together a narrative to remember. But since cycling is already time consuming, manually editing a highlight reel edit per ride is a nonstarter. So I built and open-sourced [https://github.com/ianmacomber/ride-recap](https://github.com/ianmacomber/ride-recap).\n\nI identify compelling moments from four separate sources: * Garmin telemetry via .fit file (speed, HR, power spikes, sprints, climbs) * Strava via API (popular segments) * Gemini vision scan + rating of individual frames * (optional) hand-labels via Streamlit app\n\nThe fusion step has a LLM narrative pass pick 20 clips to best tell the story of the ride, boosting “cross-source agreements” (if a human label + telemetry + Strava + Gemini all agree that a clip is interesting), with greedy re-ranking and a crowding penalty to avoid clips too close to something already selected.\n\nObvious in retrospect, but there’s no substitute other than looking at the clips Gemini selects, being highly opinionated about what should / should not be included, being specific enough about why, and repeating until you can’t think of anything more to improve. You cannot teach an LLM taste if you do not have taste yourself.\n\nComments URL: [https://news.ycombinator.com/item?id=48957639](https://news.ycombinator.com/item?id=48957639)\n\nPoints: 1\n\n# Comments: 0", "url": "https://wpnews.pro/news/show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights", "canonical_source": "https://www.iandmacomber.com/blog/gopro-garmin-gemini-ride-recap/", "published_at": "2026-07-18 12:41:43+00:00", "updated_at": "2026-07-18 12:51:45.474826+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "computer-vision", "ai-tools", "ai-products"], "entities": ["Gemini", "GoPro", "Garmin", "Strava", "Streamlit", "GitHub", "Ian Macomber"], "alternates": {"html": "https://wpnews.pro/news/show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights", "markdown": "https://wpnews.pro/news/show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights.md", "text": "https://wpnews.pro/news/show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights.txt", "jsonld": "https://wpnews.pro/news/show-hn-ride-recap-teaching-a-llm-my-taste-to-automate-cycling-highlights.jsonld"}}