TRI-HARDER
FAQ

Frequently asked questions

Everything you might want to know before you start.

Getting started

What is TRI-HARDER?
TRI-HARDER is a free AI triathlon coach. It connects to your Strava or intervals.icu account, analyses your real training data, and gives you data-grounded coaching advice through chat, a dashboard, and downloadable PDF reports.
Is it really free?
Yes. There is no paid tier. The project is built and maintained by one triathlete and runs on a small Azure setup. Strava limits non-approved apps to 100 unique users, so capacity is finite.
Do I need to install anything?
No. TRI-HARDER runs entirely in your browser. Open the app URL, connect a data source, and start chatting.
Which sports does it support?
Swim, bike, and run primarily — the three triathlon disciplines. Other activities (e.g. strength) are recognised but the coaching analysis is tuned for triathlon training.

Data and privacy

What data does TRI-HARDER store?
Your OAuth tokens, athlete profile, and planned workouts are stored locally in your browser. Coaching memory (race goals, injuries, preferences) is mirrored to Azure Table Storage when you connect via Strava, so it can sync across devices. Conversation history is kept locally by default.
Is my training data used to train AI models?
No. TRI-HARDER uses Azure AI Foundry, which contractually does not use customer data for model training. The AI provider key is held server-side in an Azure Function — it never touches your browser. See the privacy page for details.
Can I delete my data?
Yes. Settings -> Privacy & Data lets you clear coaching memory, conversation history, or disconnect a data source at any time. Disconnecting Strava also revokes the OAuth token.
Are there any third-party trackers or analytics?
No. There are no third-party analytics scripts (Google Analytics, Plausible, etc.), advertising trackers, or tag managers. The app does record a minimal first-party session ping for signed-in users — provider, a pseudonymised account hash, timestamp, and broad device/browser family — purely so the maintainer can see basic usage stats. No cookies, no IP addresses, no page views.

AI coaching

Which AI model is used?
DeepSeek-V3 hosted on Azure AI Foundry. The model is grounded in expert triathlon coaching knowledge from Joe Friel's Triathlete's Training Bible plus your specific training context.
How is this different from asking ChatGPT?
ChatGPT does not see your workouts, fitness, fatigue, race calendar, or coaching history. TRI-HARDER injects all of that context into every prompt automatically, and the model has been given a focused triathlon-coach system prompt. The result is advice grounded in what you actually did this week, not generic guidance.
Why does the chat occasionally give a short reply that feels like a fallback?
If the AI proxy is temporarily unavailable or rate-limited, the app falls back to a built-in rule-based coaching engine so you still get a useful response. It is short by design.
Can I change the coaching tone?
Yes. Settings -> Coach Style lets you switch between Direct, Balanced, and Motivational. The selection is injected into the AI's system prompt.

Features and accuracy

How are CTL, ATL, TSB, and ACWR calculated?
Standard exponentially-weighted models (CTL = 42-day, ATL = 7-day) are computed from each workout's training stress score (TSS). When TSS is missing from a workout, a heuristic estimate is used. ACWR = ATL ÷ CTL.
How accurate is the training-load math?
It is as accurate as the underlying data. If your workouts have power, heart rate, or pace data, the load estimates are reasonable. If TSS is missing for many sessions, the estimates are approximate. Treat trends as more meaningful than absolute numbers.
Can I generate a coaching report?
Yes. The Dashboard has a Report button that builds an A4 PDF with athlete snapshot, training load summary, AI analysis, race readiness, and recovery overview. Generation runs in your browser; nothing is uploaded.

Troubleshooting

I connected Strava but I do not see any workouts.
TRI-HARDER fetches up to ~6 weeks of recent activities. If your Strava account is new or has no recent activities, the dashboard will be empty. Refresh after recording a workout, or import older activities into Strava.
Strava login fails or loops back.
Check that you are not in a private/incognito window with third-party cookies disabled. If the issue persists, disconnect from Settings, clear your browser cache, and try again.
I found a bug or I have a feature request.
Please open an issue on the GitHub repository. Bug reports with browser, steps to reproduce, and (if possible) screenshots are most useful.

Still curious? Try it out.

Open TRI-HARDER