Privacy Policy
Last updated 6 August 2026
VeloPrompt does not sell your data, carries no advertising, and does not track you across other apps or websites — now or ever. Your rides are stored only for you, and nothing you type is ever used for advertising or sold to anyone.
Who is responsible
VeloPrompt is an independent app built by a single developer based in California, USA — there is no company behind it. For any privacy question, email velopromptapp@gmail.com. To delete your account and every row attached to it, use You → Delete account in the app.
If you don't sign in
Signing in is optional and the app is largely usable without it. Riding, connecting a trainer, the FTP test and all manual modes work signed out. In that state your FTP and settings are kept only on your device, and completed rides are not saved anywhere at all — not to us, and not on the phone. Sign in before you ride if you want to keep it.
Your profile FTP stays on your device, signed in or not — it is not synced to our servers as a setting, which is why it does not follow you to a second device. When you are signed in and finish a ride, the FTP used for that ride's metrics is stored with the ride (see below). Check-in digests may include that figure when they summarise recent riding.
One exception, stated plainly: the app sends anonymous product analytics even when you are signed out — for example that a ride started and that it finished, with its mode and duration. These are not linked to you or to any account, and never include anything you typed. See Product analytics below for exactly what is sent.
If you sign in
Signing in creates an account so your rides follow you between devices. There are three ways in:
- Sign in with Google. Google confirms who you are and gives the app an account identifier and your email address. Google is told that you signed in to VeloPrompt; it is not told anything about your rides. The app never sees your Google password.
- Sign in with Apple. Apple gives the app an account identifier and an email address — and if you choose Hide My Email, Apple sends a private relay address instead and we never see your real one.
- A code sent to your email. You enter your email address, we send a one-time sign-in code to it, and you type the code back in. Your address is stored so the account can be recognised next time. There is no password. Delivery is handled by Resend, an email provider who processes your address only to deliver that message.
Once signed in, the following is stored on our server:
| Data | What it is |
|---|---|
| Rides | For each completed ride: date, mode, name, duration, average power, the FTP used, normalised power, intensity factor, TSS, kilojoules, average heart rate, the workout's segment shape, and a once-per-second record of the power you produced. If a heart-rate strap was paired, also heart rate and cadence sampled through the ride, per-interval summaries of how each block actually went, and the moments you nudged the power up or down. |
| Check-ins | Each AI Check-in you request: the summary of your recent riding it was based on, and the text it produced. |
| Favourites | Workouts you chose to save. |
| Programs | Multi-week training plans you generated or created. |
| AI usage | A per-day count of AI generations. Used only to enforce rate limits — it does not record what you asked for. |
| Invite / referral codes | An opaque invite code assigned to your account so you can share it, and — if you choose — the one-time record that you entered a friend’s code. Used only to understand who invited whom. No rewards or credits are granted today. Codes are not sold or used for advertising. |
Heart rate, cadence and power are fitness data. They are stored only if you are signed in, only as part of a ride you completed, and are never shared with anyone or used for advertising. The same applies to heart rate collected via Apple Watch / Apple Health during a ride.
If you use demo mode (riding without a trainer) while signed in, those sessions can still be saved. They are marked as demo in History so they are not mixed up with real rides, and they are left out of AI Check-in and the ride history used to generate workouts.
AI Ride
When you use AI Ride or generate a program, the text of your request is sent to Anthropic (the makers of Claude) through our server, which turns it into a structured workout and returns it. You can type the request or dictate it with the microphone — dictation produces the same text field, and nothing is sent until you tap Generate.
To make a request like "same as yesterday's ride, but easier" work, the server also includes a short summary of your last few rides — their shape, duration and target watts. It is read from your own account on the server; the app does not send it.
We do not store the text of your prompts. Anthropic processes it to produce the response under their own terms. Because the request leaves our systems, please don't type or speak personal or sensitive information into it — describe the ride, not yourself.
AI Check-in
The AI Check-in is only ever produced when you ask for it. When you tap it, the app works out a summary of your recent riding and sends that summary to Anthropic to be written up in plain English.
That summary is fitness data and you should know what is in it: how often and how long you have ridden, your training load, your FTP, how far you were from target, how much you coasted or paused, and — if you recorded heart rate — how your heart rate at a comparable effort has changed over time. It contains no name, no email address and nothing you typed.
That heart rate may have come from Apple Watch. VeloPrompt does not treat Watch readings differently from a Bluetooth strap: both are saved with the ride in the same way, so if you rode with Apple Watch, the trends drawn from those readings are part of the summary sent to Anthropic. We are spelling this out because heart rate read through Apple Health is health data and you are entitled to know it leaves your device. It is sent only to produce your check-in — never for advertising, never sold, and never used to build a profile of you — and only when you tap the check-in yourself. If you would rather it never left, don't use the check-in, or use a Bluetooth strap and revoke Health access in iOS Settings.
The numbers are all calculated by the app before anything is sent; the model's only job is to turn them into sentences, and it is instructed not to invent figures or to make claims about your health, fitness or recovery. Both the summary and the text produced from it are stored on your account so you can re-read past check-ins, and both are deleted with your account.
If you would rather no fitness data was sent to a model at all, simply don't use this feature — nothing else in the app sends it, and every other mode works fully without it.
Microphone & speech recognition
The microphone is optional and used only when you tap the dictate control on AI Ride. Speech is turned into text with the device's speech recogniser — preferring on-device recognition when the phone supports it, so audio does not need to leave the device for transcription. VeloPrompt never uploads raw audio to its own servers. Once you generate a workout, the resulting text is handled like any typed prompt (see AI Ride above).
Bluetooth
The app needs Bluetooth to talk to your smart trainer and optional Bluetooth heart-rate strap. It uses this only to connect to fitness equipment. The names and identifiers of devices you pair stay on your device and are never transmitted. The app does not use Bluetooth for location, beacons or proximity of any kind, and requests no location permission.
Apple Health / Apple Watch
If you choose Apple Watch as your heart-rate source, the iPhone app launches the VeloPrompt Apple Watch app, which starts an indoor cycling HealthKit workout on the Watch and mirrors live heart rate to the phone. Those readings stay on your devices for the ride UI and HR Mode; they are included in a saved ride the same way strap heart rate is (see ride data above). The Watch app may write the workout to Apple Health so the session appears in Fitness history, and ends when you disconnect or finish. You can revoke Health access in iOS Settings → Privacy & Security → Health.
One consequence worth stating plainly: because Watch heart rate is saved with a ride exactly like strap heart rate, it is also part of what the AI Check-in sends to Anthropic when you ask for one — as heart-rate trends at a comparable effort, not raw readings. That is the only place heart rate read through Apple Health leaves your devices, it happens only when you tap the check-in, and it is used only to write up your own training summary. Apple Health data is never used for advertising, never sold, and never shared with anyone beyond that.
Where it is stored
Account and ride data are held in a Supabase (PostgreSQL) database hosted in the United States. Every table enforces row-level security, meaning a signed-in account can read and write only its own rows — no user can see another user's data.
Product analytics
The app records a small number of first-party product events, so I can see which features actually get used and where the app breaks. This is processed by PostHog on my behalf. It is deliberately narrow, and this is the complete list:
- A ride started — its mode.
- A ride finished — its mode, how long you rode, whether you reached the end, whether a heart-rate strap was connected, and how many times you nudged the power.
- You signed in — which method, and whether the account was new.
- You asked for an AI workout — how many words the request was and whether it referred to a previous ride. Never the request itself.
- You saved an AI workout — and whether you edited it first.
- You asked for a check-in — and how many rides it covered.
- You turned a check-in suggestion into a ride.
Product events carry numbers, modes and yes/no flags only. The app is built so that nothing else can be attached to one: no ride names, no email address, and never the text of an AI request. Before you sign in they are tied to a random identifier generated on your device; once you sign in they are tied to your account identifier, so one funnel can span your phone and your iPad. Never to your name.
Two of them — asking for an AI workout, and turning a suggestion into a ride — are also recorded on your own account in our database, so they can be read alongside your rides. They are deleted with your account.
These do not change:
- Your data is never sold, rented, or shared with data brokers — or with anyone else.
- No advertising. No ad networks, no ad SDKs, no advertising identifiers (IDFA). The app never shows the App Tracking Transparency prompt because it does nothing that requires one.
- No tracking across other companies' apps or websites, and no third-party ad pixels or social SDKs.
- No advertising or marketing profiles are built about you.
- The contents of your AI prompts are never used for analytics.
Crash and error reports
When the app hits an error it can't recover from, it sends a crash report to PostHog: the error message, where in the code it happened, and the app version. That's how a bug which breaks a ride gets found without waiting for someone to notice and write in.
Stated plainly, because it's the one exception to the paragraph above: a crash report is not a fixed list of fields. An error message is written by whatever code failed, so it is the only place where text the app wasn't designed to send could in principle turn up. The app is written never to put anything you typed into an error, prompts are never included, and crash reports are used for nothing but fixing the app.
Who else touches your data
The complete list of companies involved, and why:
| Who | What for |
|---|---|
| Supabase | Hosts the database and the sign-in system (United States). |
| Sign in with Google, if you choose it. | |
| Apple | Sign in with Apple, if you choose it. |
| Resend | Delivers the sign-in code, if you use email. |
| Anthropic | Turns AI Ride requests, and the check-in summary, into text. |
| PostHog | Product analytics. |
| Vercel | Hosts this website only — not the app. |
None of them is permitted to use your data for their own advertising, and none of them is sent your data to sell.
Your choices
- Use it signed out. No account, and no ride data stored — only the anonymous product events listed above are sent.
- Skip the AI features. Nothing is sent to a model unless you ask for a workout or a check-in.
- Delete a favourite or a program. Removing one in the app deletes it from the server. Individual rides can't be deleted in the app yet — ask and they'll be removed, or delete the account to clear all of them.
- Delete everything. In the app, open You → Delete account. Your account and every ride, favourite, program, check-in, invite/referral record, and usage record attached to it are removed. If you cannot open the app, email velopromptapp@gmail.com and the same will be done for you.
- Revoke Health access anytime in iOS Settings → Privacy & Security → Health → VeloPrompt (stops Apple Watch heart-rate use; past saved rides keep the samples already stored with those rides).
- Get a copy. Ask and we'll send you an export of your data.
- Revoke Apple sign-in at any time in iOS Settings → your name → Sign in with Apple.
Children
VeloPrompt is not directed at children under 13, and we do not knowingly collect data from them.
This website
For completeness: this site is hosted on Vercel, which keeps standard server request logs (including IP address) for security and operational purposes, and it loads its typefaces from Google Fonts, which means your browser makes a request to Google to fetch them. The site itself currently sets no cookies and runs no analytics.
Changes
If this policy changes materially, the date at the top will change and the updated policy will be posted here before the change takes effect.