Privacy

What we collect, without an account

Usage events with a per-visit session id. Each page load gets a random session number that lasts until the tab closes, so a start can be matched to its finish; it is stored with the events and is not a cookie and not a device id — the next visit gets a new one. The events are: the timer opened, a workout parsed (whether it parsed, its length in characters, the detected language, a size bucket — not the words), a workout started, finished or abandoned (with the elapsed time and phase), the theme, sound set and background chosen, a seek, and whether the Done-screen panel showed or was tapped. Event properties are short numbers, flags and labels; free text is dropped at the server.

A visitor key. To count how many people come back, each batch of events carries a key made by hashing your IP address and browser family with a secret that changes every month and is never stored with the data. The key cannot be turned back into an address, and the same person has a different key next month.

The words you type reach us only when you press "send this example" under the plan, and the exact payload is shown to you first. Those examples are used to improve the parser; an optional nightly job may send them to our AI provider (Anthropic) for judging, and that job is switched off unless we say otherwise here.

Your IP address is used once, when a batch of events arrives, to work out a country and a city, and is then discarded. It is not written to the database or to the request log. The country, the city, your time zone, browser language, browser family (no version), screen class and the site that linked here are stored with the events.

Speaking a workout uses your browser's own speech recognition (on iPhone and Chrome that is Apple's or Google's service, under their terms); the recognised text stays on your device like typed text. Scanning a photo happens on your device; the Personal-only "Improve with AI" button sends that one photo to our AI provider for a single transcription and is never pressed for you.

The contact form is forwarded to us as a Telegram message (your text, your email if you gave one, and the plan on screen) and kept in our database until answered.

With an account

Signing in stores your email address, the sign-in links we issued (hashed) and your sessions. Saved workouts, themes and background images are stored under your account. Our request log keeps, per API call, the route, the status, the timing and — for signed-in calls — your user id (not your email, not your IP). If you buy a tier, payment is taken by Stripe; we store the subscription's id, status, period and currency, never a card. A gym you create stores its name, branding and its members' email addresses.

Why

To run the timer and your account, to improve the parser from the examples you send, and to produce usage statistics — by country, city, time zone and language — that we may share or sell. Those statistics are counts; we do not sell events, examples or account data.

How long

Raw events, daily reports and parser examples are kept for 24 months, then deleted, on a schedule that runs while the service runs. Aggregates (counts) have no retention limit. Account data lasts as long as the account; ask us to delete it.

What we never do

No third-party analytics, no advertising trackers, no fingerprinting, no sale of anything that could identify you. The page loads nothing from anyone else, except — on the Done screen, when a sponsor has not filled it and only if an advertising account has been configured — an ad unit, which is the one exception and is named here so it is not a surprise. Sponsors on the Done screen are ours, served from here, and learn nothing about you unless you tap through.

IP geolocation by DB-IP. Questions: contact.