How it works
From finish to posted in under a minute.
WorkoutPost reads what your watch already recorded, asks you for the small bits of context only you know, and turns the whole thing into a description worth keeping. Here's every step.
- 01
Connect Strava once.
Sign up with email, then click Connect with Strava. Strava asks for permission to read your activities and write descriptions back. That's it for setup — every future run flows through automatically.
We ask for three OAuth scopes: read (your basic profile), activity:read_all (private + public activities), activity:write (so you can post descriptions back to your Strava feed). You can disconnect anytime in Settings — that revokes our access on Strava's side too.
- 02
Activities sync the moment you finish.
Strava notifies us via webhook when your watch uploads a new run. We pull the full activity — splits, laps, heart rate, GPS — and the run shows up on your dashboard within seconds.
No polling, no scheduled jobs. Webhooks only fire on changes. If anything looks off you can also hit Refresh manually to pull the last 10 activities fresh.
- 03
Add a sentence of context (optional).
Open the activity, optionally fill the Workout / Body / Environment fields — workout type, how you felt, fueling, surface, weather, free-form notes. Smart defaults pre-fill what we can guess from the activity name and type.
Skip the survey if you want — generation works without it. But a single line in Notes ("legs felt heavy after yesterday's intervals") shows up verbatim in the description. Quotes are gold.
- 04
Pick a style. Hit Generate.
Three styles to choose from. Data Nerd writes a structured breakdown with tables and observations. Storyteller is a first-person paragraph, like a journal entry. Minimalist is two sentences. Each works in Polish or English.
Under the hood we send your activity stats, splits, laps, HR zones, and survey to Claude (Anthropic Claude Sonnet) with a style-specific prompt. Generation takes 5–15 seconds. Every generation is saved so you can compare styles later.
- 05
Copy, post, or keep private.
Copy the description anywhere with one click. Or hit Post to Strava — we PUT it into the activity's description field and it shows up in your feed. Private journal? Keep it on the dashboard, only you see it.
Posted descriptions get a green badge. Re-post anytime if you regenerate with a different style. Cancelling anytime removes nothing already posted on Strava — your data stays where you put it.
FAQ
- Does it work for cycling or swimming?
- Today, running only. Cycling, swimming, and triathlon are on the roadmap — running first because it's where Strava's data quality is highest.
- Will it write coaching advice?
- No. We describe what happened, not what you should do. The output is a journal entry — splits, observations, your own words quoted back. If you want a coach, hire one.
- Can I generate descriptions for old activities?
- Yes — anything we've synced. New users hit Refresh once after connecting Strava and get their last 10 activities back-filled.
- What if I don't want to post to Strava?
- Then don't. Descriptions live on your dashboard regardless. Use it as a private training journal — that's the original use case.
- How are HR zones calculated?
- Three modes in Settings: % of max HR (simple), Karvonen (uses HR reserve — best if you also know your resting HR), or custom (you set the BPM thresholds yourself). Without any setting, we use the peak max HR across your synced activities as a fallback.
- What does my data go through?
- Strava (your activities, by your authorization) → our server (stored in Supabase, EU Central) → Anthropic Claude (just for generation; Anthropic doesn't train on API data). Stripe handles payments. See Privacy for the full rundown.
Ready to try it?
Free includes 5 descriptions a month — enough to get a feel for it.