Last updated: 30 October 2026
Kracey (kracey.com) provides an AI training coach that talks to you on Telegram and reads the training data you connect, plus free tools anyone can use without an account. This page explains, per Art. 13 and Art. 14 GDPR, what we store, why, where it lives, and how you stay in control. Most of it describes the coach; if you came here from the race report, the section on it below is the part that applies to you. The short version: we store only what the coaching needs, your identity never enters the AI pipeline, your data is never sold and never used to train AI models, and you can export or erase everything yourself, anytime, from the chat.
Kracey is the data controller for the processing described here. For any privacy question or request, contact hello@kracey.com.
Kracey is for people aged 18 and over. If you are younger, please do not create an account. If you believe someone under 18 has one, write to us and we will delete it.
Our HYROX race report is open to anyone: you type your name, pick your race, and read what your splits say. It needs no account, so this section is the Art. 14 GDPR disclosure for it, and it stands apart from everything above.
The HYROX pace calculator, the HYROX time predictor and the one rep max calculator can email you the result they just showed you. It needs no account.
You can connect an AI assistant you use, such as Claude, to your Kracey account so you can ask it about your own training. This only happens if you start it, sign in, and choose Allow on a screen that names the assistant and what it will be able to read.
Our HYROX time predictor, pace calculator and training dashboard estimate station and RoxZone times from how people actually race. This section is the Art. 14 GDPR disclosure for the statistics behind those estimates.
The coach's replies are generated by Anthropic's Claude API. The request carries your first name and training context only: your email, account id, and payment identity never enter the AI pipeline, and this is enforced by an automated test in our build. Anthropic does not use API data to train models, and we contractually commit in our Terms of Service that your personal data is never sold and never used to train AI models.
The table below is the actual storage map of the product, including what our /delete command removes.
| Data | Where | Kept | Removed by /delete |
|---|---|---|---|
| Account: email, name, avatar, Telegram chat id, intervals.icu credential (encrypted with AES-256-GCM), onboarding state, intake quiz answers, your health-data consent record, trial and subscription status | Postgres (Supabase) | While your account exists | Yes |
| Sign-in identity: email, name, avatar, whether your email is confirmed, and how you sign in (Google, or a password we keep only as a scrypt hash that cannot be turned back into the password) | Postgres (Supabase) | While your account exists | Yes |
| Sign-in sessions: a random token and when it expires. No IP address and no device details | Postgres (Supabase) | 30 days, or until you sign out | Yes |
| Password-reset links: a random token | Postgres (Supabase) | One hour, single use | Yes |
| An email sign-up that was never confirmed: the email, first name and password hash | Postgres (Supabase) | Deleted automatically after 7 days | Not by /delete, since an unconfirmed account cannot sign in; it is removed on its own after 7 days, or sooner if you write to us |
| Sign-in emails (address confirmation, password reset): your address and the message | Resend | Resend's delivery logs, per Resend's retention | Not by /delete: held by Resend as the sender; write to us and we will ask for removal |
| Sign-in abuse counters: a number of attempts against a keyed hash of a network address, never the address, and nothing else | Redis (Upstash) | 15 minutes to one hour, self-expiring | Not by /delete: it is not tied to an account and holds nothing that identifies one |
| Race results, including the raw pasted text | Postgres (Supabase) | While your account exists | Yes |
| Coach working state: your plan, training profile, coaching mode, intake transcript | Redis (Upstash) | While your account exists | Yes |
| Coach memory: standing preferences and a recent-context summary (can include injury and health context you share) | Redis (Upstash) | Capped: 15 preferences, 900-character summary | Yes |
| Chat context (rolling conversation window) | Redis (Upstash) | Last 24 turns, expires after 6 hours | Yes |
| Small operational caches: timezone offset (2 days), approximate location from a recent activity for weather advice (14 days), duplicate-message and reminder markers (up to 14 days), monthly usage meters | Redis (Upstash) | Mostly self-expiring | Yes |
| A one-value marker that stops our legacy bot from messaging you again | Redis (Upstash) | Durable | No: kept as a suppression record so no bot re-engages you after erasure |
| The abuse counters for the race report and for a tool emailing its result: a number of requests against a keyed hash of a network address, never the address, and nothing else | Redis (Upstash) | 26 hours, self-expiring | Not by /delete: it is not tied to an account and holds nothing that identifies one |
| The email address you leave to unlock the full race report (no name, race or report is stored with it) | Resend, and a copy in our own inbox | Until you unsubscribe or ask us to remove it | Not by /delete: it is not tied to an account. One click in any email, or one message to us, removes it |
| The email address you leave to have a free tool (the pace calculator, the time predictor or the one rep max calculator) email you its result. The result and what you typed into the tool are not stored with it | Resend | Until you unsubscribe or ask us to remove it | Not by /delete: it is not tied to an account. One click in any email, or one message to us, removes it |
| The race report unlock itself: a cookie holding an expiry date and a signature, with no email and no record of what you read | Your own browser | 30 days | Not ours to delete: clear this site's cookies |
| Billing records (invoices, the Stripe customer object) | Stripe | Statutory bookkeeping periods | Partially: subscriptions are canceled and stored payment methods detached; invoices are kept (legal obligation) |
| The Telegram chat itself | Telegram | Per Telegram's own terms | Not ours to delete: Telegram is the messaging channel you chose; you can delete the chat in your Telegram app |
| Connected assistants: which assistant you connected to your account (for example Claude or ChatGPT), what you allowed it to read, and when | Postgres (Supabase) | Until you disconnect it in Settings, or while your account exists | Yes |
| Assistant connection tokens: a hash of the token that keeps a connected assistant signed in, never the token itself | Postgres (Supabase) | 30 days, replaced each time it is used, and removed when you disconnect the assistant | Yes |
| What a connected assistant reads: a short-lived copy of your training summary, kept so several questions in a row do not each fetch it again. It includes anything physiological (heart rate, heart rate zones, VO2max, training load and fitness figures, effort ratings, sleep, HRV and resting heart rate) only if you chose to share heart and recovery data with that assistant | Redis (Upstash) | 15 minutes, self-expiring | Yes |
| Assistant request counters: a number of requests against a keyed hash of your account, never the account itself, and nothing about what was asked | Redis (Upstash) | One minute, self-expiring | Not by /delete: it holds nothing that identifies you and is gone within the minute |
We use a small set of processors, each under a data processing agreement, except where the table below says one is still being arranged. Where a provider processes data outside the EEA, the transfer is covered by Standard Contractual Clauses.
| Provider | Role | Region | Safeguards |
|---|---|---|---|
| Anthropic | AI processing (the coach's replies). Receives first name and training context only, never your email, account id, or payment identity. | United States | DPA with Standard Contractual Clauses (SCCs); API data is not used to train models |
| Stripe | Payments and subscriptions | United States and global | DPA with SCCs, incorporated in Stripe's terms |
| Vercel | Application hosting | Global edge, provider-managed | DPA with SCCs, incorporated in Vercel's terms |
| Supabase | Postgres database (account, race results) | European Union (Frankfurt) | DPA with SCCs, incorporated in Supabase's terms |
| Upstash | Redis store (coach memory, plan, short-lived chat context) | European Union (Frankfurt) | DPA with SCCs, incorporated in Upstash's terms |
| Resend | Transactional email (onboarding reminders, and the sign-in emails that confirm your address or reset your password), and our email list, which is where the address goes if you ask for the full race report or ask a free tool to email you its result. Sign-in emails never put you on that list | United States | DPA with SCCs, incorporated in Resend's terms |
| Sign-in (and calendar sync if you enable it); Google Analytics, only after you accept the cookie banner | United States and global | DPA with SCCs, incorporated in Google's terms | |
| Meta | Meta Pixel for ad measurement, only after you accept the cookie banner | United States and global | Consent-based; governed by Meta's business tools terms |
| Microsoft | Clarity for anonymized usage replays, only after you accept the cookie banner | United States and global | Consent-based; DPA incorporated in Microsoft's terms |
| PostHog | Cookieless web analytics: no cookies, no persistent identifiers, runs without consent because it cannot track you as an individual | European Union (Frankfurt) | DPA with SCCs; EU data residency |
| ora | Measures which AI assistants and search crawlers read our public pages: the page address, browser or crawler name, referring page, country and a pseudonym that changes daily | Provider-managed; location being confirmed | DPA being arranged. Receives no IP address, no cookie, and never your account or sign-in pages |
Telegram is not a processor for us: it is the messaging channel you chose. Your chat with the coach travels through Telegram under Telegram's own terms, like any other Telegram conversation. We do not claim end-to-end encryption for bot chats, because Telegram bot chats do not have it.
You have the GDPR rights of access, rectification, erasure, portability, restriction, and objection, plus the right to withdraw consent and to complain to your supervisory authority. The first two you can exercise yourself, instantly, in the chat:
Analytics and measurement tools that use cookies (Google Analytics, Meta Pixel, Microsoft Clarity) load only after you accept the cookie banner. Before you choose, and if you decline, none of them load and no tracking cookies are set; the site works exactly the same either way. Your choice is stored in your browser; clear this site's data to be asked again. One further cookie is strictly functional and unrelated to tracking: if you unlock the full race report, we set a cookie that holds only an expiry date and a signature, which is how the page knows to show you the whole thing for the next 30 days. It carries no email and no record of what you read. The one rep max calculator stores your kg or lb choice in your browser, in local storage, only once you press the toggle, so it opens the same way next time; clear this site's data to remove it. Separately, we measure aggregate traffic with PostHog in cookieless mode, hosted in the EU: it sets no cookies, stores no persistent identifier, and cannot follow you across visits, which is why it runs without a consent prompt. We also record which AI assistants and crawlers read our public pages with ora: each visit is sent as the page address, browser or crawler name, referring page, country and a pseudonym that changes daily, with no cookie and no IP address. We do not sell or share your personal information for advertising.
We do not sell or share your personal information as defined by the CCPA/CPRA, and you can exercise your access and deletion rights via /export, /delete, or hello@kracey.com.
When this policy changes materially, we update the date above and tell active users in the product. Questions, requests, or concerns: hello@kracey.com.