Privacy Policy

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.

Who is responsible

Kracey is the data controller for the processing described here. For any privacy question or request, contact hello@kracey.com.

Who Kracey is for

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.

What we collect and why

Lawful bases

The race report, when you have no account

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.

A free tool's result, by email

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.

Connecting an assistant

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.

Statistics from published HYROX results

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.

How the AI handles your data

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.

What we store, and for how long

The table below is the actual storage map of the product, including what our /delete command removes.

DataWhereKeptRemoved 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 statusPostgres (Supabase)While your account existsYes
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 existsYes
Sign-in sessions: a random token and when it expires. No IP address and no device detailsPostgres (Supabase)30 days, or until you sign outYes
Password-reset links: a random tokenPostgres (Supabase)One hour, single useYes
An email sign-up that was never confirmed: the email, first name and password hashPostgres (Supabase)Deleted automatically after 7 daysNot 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 messageResendResend's delivery logs, per Resend's retentionNot 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 elseRedis (Upstash)15 minutes to one hour, self-expiringNot by /delete: it is not tied to an account and holds nothing that identifies one
Race results, including the raw pasted textPostgres (Supabase)While your account existsYes
Coach working state: your plan, training profile, coaching mode, intake transcriptRedis (Upstash)While your account existsYes
Coach memory: standing preferences and a recent-context summary (can include injury and health context you share)Redis (Upstash)Capped: 15 preferences, 900-character summaryYes
Chat context (rolling conversation window)Redis (Upstash)Last 24 turns, expires after 6 hoursYes
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 metersRedis (Upstash)Mostly self-expiringYes
A one-value marker that stops our legacy bot from messaging you againRedis (Upstash)DurableNo: 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 elseRedis (Upstash)26 hours, self-expiringNot 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 inboxUntil you unsubscribe or ask us to remove itNot 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 itResendUntil you unsubscribe or ask us to remove itNot 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 readYour own browser30 daysNot ours to delete: clear this site's cookies
Billing records (invoices, the Stripe customer object)StripeStatutory bookkeeping periodsPartially: subscriptions are canceled and stored payment methods detached; invoices are kept (legal obligation)
The Telegram chat itselfTelegramPer Telegram's own termsNot 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 whenPostgres (Supabase)Until you disconnect it in Settings, or while your account existsYes
Assistant connection tokens: a hash of the token that keeps a connected assistant signed in, never the token itselfPostgres (Supabase)30 days, replaced each time it is used, and removed when you disconnect the assistantYes
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 assistantRedis (Upstash)15 minutes, self-expiringYes
Assistant request counters: a number of requests against a keyed hash of your account, never the account itself, and nothing about what was askedRedis (Upstash)One minute, self-expiringNot by /delete: it holds nothing that identifies you and is gone within the minute

Who processes data for us

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.

ProviderRoleRegionSafeguards
AnthropicAI processing (the coach's replies). Receives first name and training context only, never your email, account id, or payment identity.United StatesDPA with Standard Contractual Clauses (SCCs); API data is not used to train models
StripePayments and subscriptionsUnited States and globalDPA with SCCs, incorporated in Stripe's terms
VercelApplication hostingGlobal edge, provider-managedDPA with SCCs, incorporated in Vercel's terms
SupabasePostgres database (account, race results)European Union (Frankfurt)DPA with SCCs, incorporated in Supabase's terms
UpstashRedis store (coach memory, plan, short-lived chat context)European Union (Frankfurt)DPA with SCCs, incorporated in Upstash's terms
ResendTransactional 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 listUnited StatesDPA with SCCs, incorporated in Resend's terms
GoogleSign-in (and calendar sync if you enable it); Google Analytics, only after you accept the cookie bannerUnited States and globalDPA with SCCs, incorporated in Google's terms
MetaMeta Pixel for ad measurement, only after you accept the cookie bannerUnited States and globalConsent-based; governed by Meta's business tools terms
MicrosoftClarity for anonymized usage replays, only after you accept the cookie bannerUnited States and globalConsent-based; DPA incorporated in Microsoft's terms
PostHogCookieless web analytics: no cookies, no persistent identifiers, runs without consent because it cannot track you as an individualEuropean Union (Frankfurt)DPA with SCCs; EU data residency
oraMeasures 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 dailyProvider-managed; location being confirmedDPA 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.

Your rights, and the buttons for them

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:

Cookies and analytics

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.

California residents

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.

Changes and contact

When this policy changes materially, we update the date above and tell active users in the product. Questions, requests, or concerns: hello@kracey.com.