← All projects
AlphaMay 2026

Route-aware hydration and nutrition briefs for long rides — because knowing you sweat more in the heat and packing for it are two different things.

Next.jsReactVercelClerkPrismaPostgresClaudeStravaRide with GPSLeaflet

The ride that started it

I haven't been riding as much as in previous years. But last weekend I did 50 miles with some old friends on a flatter route than we usually pick, with a coffee stop near the end. Around mile 40, both legs started cramping. Wasn't of a much warning. They just both said they had enough.

I've under-eaten and under-hydrated on long rides before, and I think it caught up with me again. Wrong bottles (too small), forgot to eat, no emergency pickle juice in the bag. Under-prepared, and a little out of shape.

Map of the 50-mile ride through the Peninsula and South Bay
Latte and a Rice Krispies treat at the coffee stop
The route — and the coffee stop that came a little too late to save my legs.

Why the existing apps don't work

When I'm planning a new route, I still end up guessing: how much food and water to carry, where to refill, what the day will actually feel like. Ride with GPS, Strava, and Komoot are great for following a route — less great for answering "what do I need to finish this one?" The standard, drink a bottle every hour or so and eat a bit every 45 minutes are great starting points but don't account for temperature, exertion, fitness and just anything personalized.

You scour the map, guess at time and temperature on each climb or flat, and hope you packed right. I also sweat a lot, and way more in the heat. Most cyclists know that but I actually measured my sweat rate vs. temperature after a bunch of indoor riding during the pandemic. Knowing that a hot, steep climb will wreck you is different from showing up prepared for it. That's the gap Domestique is trying to close.

The first version

The first goal was simple: help with hydration and nutrition so you don't bonk. The fastest test was feeding a route into Claude and seeing what came back.

It knew more about the area than I expected. I'd given it some popular local routes and it knew aboiut the Bike Hut (cash only, a treasure and one of my favorite stops). That was enough proof of concept to keep going.

What changed

Testing and details matter. The model would sometimes be confidently wrong — talking about riding into the East Bay when the route was miles away on the coast. I needed to cut the route better, provide better instructions on what to follow and what was important.

v1 mostly dumped raw prompt output which was great at first but limited formatting and wasn't easy to scan on a phone before a ride. v2 added structure: find sensible rest stops with water and bathrooms, research highlights (climbs, descents), surface practical tips, and be more specific about what to expect along the way.

I'm still tuning how much to trust the model vs. how much to verify against the actual route geometry.

Where it is now

Domestique works with Ride with GPS routes (public and private). I'm waiting on Strava approval so others can use that integration. For now it works for me as the developer — Strava even requires login for public routes, which was a surprise.

I'd like to add Komoot, GPX upload, and other sources over time.

Next up: a route guide you can print and stash in a pocket — not a full cue sheet of every turn, but timeline, highlights, and a feeding plan.

Longer term, I want some more of a feedback loop: you get a brief, try it on the ride, add notes, and the next brief gets better. That's how you get good at any craft. Faster generation would be nice too; not sure how much more I can squeeze out of the LLM side without cutting corners.

What I learned building it

In about three days I burned through my Cursor API budget and most of my regular agent allowance. I was on Claude for everything at first; that went fast. I switched to Claude for planning and Cursor's Auto agent for implementation, which worked well. When Auto got stuck, I'd jump back to Claude and usually that unblocked faster.

Cursor usage dashboard showing ~$77 spend over a few days, mostly default and Claude Sonnet models

The bill for v1 — mostly "default" and Claude Sonnet before I started reserving Claude for planning.

I also lost half a day on a Vercel deploy that wouldn't cooperate — probably misconfigured something. I deleted the Vercel project, started fresh, and it worked fine after that.

TLDR -3 days headsdown with lots of tweaking since -AI coding passion projects - so fun!


Domestique is in alpha. Try it at domestique.starterlabs.ai.


← All projects