Privacy Policy
Last updated: 2026-05-27
This policy explains what data TrainingFlow collects, why, and how you can remove it. It is written in plain language; the legal anchor is the EU General Data Protection Regulation (GDPR) and the German BDSG.
1. Controller
The controller responsible for processing your data is the operator listed in the Impressum. You can reach us by email at moin@kristianhoffmann.de.
2. What we collect, and why
Account & authentication
Email address and encrypted password credentials for account sign-in. Stored in our self-hosted database on our own server in Germany (we run Supabase as software; no data is transmitted to Supabase Inc.). Legal basis: Art. 6(1)(b) GDPR — contract performance.
Athlete profile (sensitive)
Birth year, weight, gender (optional), recent race times, training volume, experience. Treated as Art. 9 GDPR special-category health data because performance and weight indirectly reveal health information. We only process this data with your explicit consent (Art. 9(2)(a) GDPR), captured via the checkbox in your profile setup. You can withdraw consent at any time by deleting your profile or your account.
Race strategies
Each strategy stores the computed splits, nutrition plan, the athlete-profile snapshot that produced them, and the AI-narrative output. Retained until you delete it or your account.
Free-plan abuse prevention
When a free lifetime strategy is claimed, we store SHA-256 hashes of the request IP address, user agent, and a combined request fingerprint. These hashes help limit repeated free claims from the same browser or network without storing the raw IP address or raw user agent. Legal basis: Art. 6(1)(f) GDPR — abuse prevention and service security.
Billing
If you subscribe to Pro, payment is handled by Stripe (EU). We store only the Stripe customer ID and subscription status, never your card number. Legal basis: Art. 6(1)(b) GDPR.
Analytics
We use Google Analytics 4 only after explicit consent. Before consent, the Google Analytics tag is not loaded. After consent, Google may process page views, referrers, approximate location, device data and pseudonymous identifiers. Google states that GA4 does not log or store individual IP addresses from EU users.
Server logs
TrainingFlow runs entirely on our own server in Germany. The server logs basic technical request data (IP, user agent, timestamps) for security and abuse prevention. IPs in our application logs are stored only as SHA-256 hashes. Logs are rotated within 30 days. GitHub holds our source code and development metadata only — no content data from your account is sent there.
3. AI processing
TrainingFlow uses Anthropic's Claude API to convert pacing numbers (computed deterministically on our servers) into readable narrative text. We do not send personally identifying information to Anthropic — only the numerical race plan and a non-PII athlete summary. Anthropic operates as a processor under a DPA; their policy is to delete API inputs within 30 days and not to train on them.
4. Third-party processors
- Hostinger International Ltd. (61 Lordou Vironos Street, 6023 Larnaca, Cyprus) — server infrastructure in Germany, hosting our application, database and authentication
- GitHub — source code and development metadata (no user content)
- Stripe Payments Europe Ltd. — payment processing (Ireland)
- Anthropic PBC — AI narrative generation (US, DPA-bound)
- Brevo SAS (France) — transactional and authentication emails
- Google Ireland Limited — Google Analytics 4 after consent
For US-based processors we rely on EU-US Data Privacy Framework certifications and/or Standard Contractual Clauses.
5. Your rights
- Right of access (Art. 15 GDPR)
- Right to rectification (Art. 16)
- Right to erasure (Art. 17) — also available as a one-click action in /profile
- Right to restriction (Art. 18)
- Right to data portability (Art. 20) — export available on request
- Right to object (Art. 21) — including profiling for analytics
- Right to withdraw consent for Art. 9 health data (Art. 9(2)(a)) — by clearing your athlete profile
- Right to complain to a supervisory authority — for residents of Germany, this is the data protection authority of the federal state where you live
To exercise any of these rights, email moin@kristianhoffmann.de.
6. Retention
Account data is retained while your account exists. Generated strategies are retained until you delete them. Stripe billing records are retained for 10 years per § 147 AO (German tax retention law). Google Analytics data follows the retention settings in GA4.
7. Cookies
We use strictly necessary storage for authentication. Google Analytics is optional and is loaded only after consent under § 25(1) TDDDG.
8. Changes to this policy
When we materially change this policy, we will notify active users by email and update the "Last updated" date above. Continued use after changes constitutes acceptance.