Privacy Policy
Last updated: September 11, 2026
Rocky ("we", "us", "the app") is a gym workout tracker and AI coaching app. This policy explains what information we collect, how we collect it, how we use it, and who we share it with — including the third-party AI service that powers Rocky's coaching agent and the "Lazy add-in" feature.
1. Information we collect and how
- Account identity — collected when you sign in through our auth provider Clerk using one of three methods: email + password (with email verification), Google sign-in, or Apple sign-in. Clerk stores your email, name (when provided by the OAuth provider), and a user identifier; we receive a stable user ID.
- Coaching profile — collected during onboarding and editable from Profile: training goal (e.g. hypertrophy, strength, fat loss), experience level, height, bodyweight, sex (optional), date of birth (optional), available equipment, a gym label (optional free text you type to name your usual gym, e.g. "Home gym" — this is a name, not a geographic or GPS location), weekly session target, session length target, listed injuries (optional), and your timezone. The app does not function as a coach without a goal and experience level; the rest are optional.
- Workout data you enter — collected when you type it into the app: routines, exercises, sets, reps, weights, cardio sessions (activity type, duration, and distance/intensity where you enter it), session dates and durations, session notes, and per-session feedback (RPE, "how it felt", optional free-text).
- Bodyweight history — collected when you log your bodyweight. In addition to the single current bodyweight in your profile, the app keeps a dated history of the bodyweight entries you record so it can show your bodyweight trend over time.
- Readiness check-ins — collected when you tap "Swap or adjust" or fill in the post-workout debrief: energy, sleep, soreness map, time available, and any free-text you enter.
- Lazy add-in free-text — collected when you type a workout description into the "Lazy add-in" screen and tap "Parse with Rocky". The exact text you typed, plus the date you picked, is transmitted to our backend and forwarded to a third-party AI service (see Section 3).
- Push notification token — collected if you grant notification permission. We store an Expo push token issued by Expo's push service so we can deliver your daily training briefing. The token does not identify your device hardware; it is install-specific.
- Purchase and subscription state — collected when you start a Rocky Coach trial, subscribe, or buy a one-time purchase. Payments are processed entirely by Apple App Store or Google Play; we never see your card number or billing address. Our subscription sub-processor RevenueCat (Section 4) sends our backend the state of your purchase (product identifier, store, purchase/renewal/expiry timestamps, and whether the purchase is active) tied to your Rocky user identifier, so the app can unlock Rocky Coach features. We also store the trial and referral-credit dates for your account.
- Preferences — collected when you change settings in the app: your chosen unit system (kg or lbs), nudge / haptics / rest-timer preferences, and whether you have consented to Lazy add-in AI processing.
- Coaching notes and narration Rocky writes — derived data, stored on our servers. As Rocky plans your sessions it writes short structured notes to itself about patterns it sees in your training (e.g. "bench bar speed slower at 100kg×5 than two weeks ago", "user reported left shoulder discomfort on overhead press"). It also writes short narrative commentary that appears next to the charts on your Insights tab (e.g. a one-line read of your weekly volume or RPE trend). The notes are visible to you in Profile → Coach notes, where you can read or delete any individual note; the chart commentary appears on the Insights tab.
- Product analytics events — collected automatically as you use the app, via PostHog (see Section 4). Events include sign-in / sign-up, onboarding completion, screen views, workout started / finished / discarded, post-workout debrief submitted, routine created, plan adjustments, and profile changes (e.g. goal updated, agent paused). Each event is tagged with your Rocky user identifier, your email, name, and a PostHog-issued device identifier, plus standard properties such as app version, OS, device model, locale, and approximate location (country / region, derived from IP address by PostHog and stored at city-level granularity). We use this data only to understand which features are used and to fix issues — not for advertising or profiling.
2. How we use your information
We use the data above for the following purposes only:
- To authenticate you and keep you signed in.
- To store and display your own workout history, routines, profile, and personal records.
- To compute your own aggregated stats (volume, streaks, muscle-group balance) on our server and show them back to you.
- To run Rocky's coaching agent — a server-side process that, on a schedule and on demand, sends a snapshot of your profile, recent training, readiness, and coaching notes to Google Vertex AI (see Section 3) so a Gemini model can generate a tailored daily training plan and short coaching notes.
- To parse Lazy add-in free-text into structured sets via Google Vertex AI (see Section 3), with your prior in-app consent.
- To send you push notifications you have permitted (e.g. your daily briefing).
We do not use your data for advertising, profiling for advertisers, or any purpose unrelated to providing the service. We do not share your data with anyone except the sub-processors listed in Section 4.
3. AI features and third-party processing
Rocky uses Google Vertex AI (Gemini models) for two features. We call Vertex AI through Google's global endpoint, which means Google may process the request in any of its global Vertex AI regions rather than a single fixed region (see Section 9 on international transfers). Both features are accessed only through our backend; the app never talks to Google directly.
3a. Coaching agent (the daily plan)
- What is sent: your coaching profile (goal, experience, height, bodyweight, sex if provided, equipment, gym label, weekly/session targets, listed injuries, timezone), recent training history (last ~21 days of sessions — lifts with sets/reps/weights and cardio entries — plus your RPE/felt feedback), the last ~14 days of readiness check-ins, recent personal records, recent bodyweight history, your saved routines, and the coaching notes Rocky has written about you. Your name, email, and account identifiers are not included in the prompt; an internal user id is used only to associate the response with your account on our side.
- Why it is sent: to let the Gemini model decide the highest-value workout for your next training day and write short coaching notes for future runs.
- When it runs: once per day around your configured briefing hour, on demand when you tap "Swap or adjust" or finish onboarding, and after you save a session or post-workout debrief.
- Your consent: completing onboarding constitutes consent to this data flow. You can revoke at any time from Profile → Pause Rocky; while paused, no agent runs occur and no data is sent to Vertex AI for coaching.
- Retention by Google: under Google Cloud's customer-data terms applicable to Vertex AI, your prompts are not retained by Google and are not used to train Google's foundation models.
- What Rocky stores: the model's response (planned session, optional check-in question, coaching notes, and the short chart commentary shown on your Insights tab) is saved on our backend so the briefing card, the notebook, and the Insights narration persist across launches. We also store a short audit row per agent run (timestamp, model, token counts, latency, outcome) for cost monitoring and debugging.
3b. Lazy add-in (free-text parsing)
- What is sent: the exact free-text you typed into the Lazy add-in box (e.g. "Squats 3×8 at 80kg yesterday") and the date you selected. No account identifiers, no other workout history, no coaching notes, and no device identifiers are sent.
- Why it is sent: solely to parse the free-text into a structured list of exercises, sets, reps, and weights returned to the app for your review before saving.
- Your consent: the app shows an in-app consent screen before the first parse; parsing is not performed until you agree.
- Retention by Google: as in Section 3a — Vertex AI does not retain these prompts and does not use them to train its models.
3c. Equivalent protection and contractual terms
Google is contractually bound by the Google Cloud Data Processing Addendum and the Vertex AI Service Specific Terms, which provide data-protection commitments equivalent to those we make to you in this policy. Google may not use your data for its own purposes.
4. Other sub-processors
We use the following additional service providers to run Rocky. They are contractually required to protect your data and are not permitted to use it for their own purposes.
- Clerk — authentication. Receives your email + password (email flow) or your OAuth identifiers (Google / Apple flow) when you sign in.
- Hostinger — infrastructure hosting. The Rocky backend and its Postgres database (your workouts, profile, and coaching notes) run on a server we operate, hosted with Hostinger in Mumbai, India.
- Google Vertex AI — generative-AI processing for the coaching agent and Lazy add-in (see Section 3).
- Cloudflare — off-site database backups (Cloudflare R2 object storage, encrypted at rest by Cloudflare) and DNS / TLS for our domain.
- Expo — push-notification delivery. We submit your daily briefing through Expo's push service, which forwards it to Apple Push Notification service (APNs) on iOS or Firebase Cloud Messaging (FCM) on Android. Expo receives the token and message body in transit only.
- RevenueCat — in-app purchase and subscription management. Receives your Rocky user identifier and purchase receipts/tokens from Apple App Store or Google Play to validate purchases and tell our backend which entitlements are active. RevenueCat does not receive your name, email, workout data, or payment card details.
- PostHog (EU region, Frankfurt) — product analytics. Receives the events listed in Section 1 along with your Rocky user identifier, email, name, a PostHog-issued device identifier, app and device metadata, and an approximate location (country / region, derived from IP). PostHog processes this data on our behalf and is contractually prohibited from using it for its own purposes. Data is hosted within the EU. Our marketing website (rocky.shreyak.dev) also uses PostHog: it sets no cookies and uses no browser storage, and page visits and clicks on the App Store / Google Play links are recorded anonymously (page, referrer, browser and approximate country) and are not linked to your Rocky account.
5. Information we do not collect
- We do not read Apple Health, Health Connect, or any system health/fitness frameworks. (If you opt in, Rocky writes your finished workouts to them — see the "Apple Health and Health Connect" section below.)
- We do not collect your precise location. Our analytics sub-processor (PostHog, Section 4) records an approximate country / region derived from your IP address, but never GPS or street-level location.
- We do not use advertising identifiers, no ad SDKs are embedded in the app, and we do not track you across other apps or websites. Rocky's iOS privacy manifest declares
NSPrivacyTracking = false.
- We do not run crash reporting or session replay.
- We do not sell your data, share it with data brokers, or use it for advertising or profiling.
5a. Apple Health and Health Connect
Rocky can, if you turn it on, save your finished workouts to Apple Health (iOS) or Health Connect (Android). This is opt-in and off by default — enable it from Profile → Health. It is write-only: Rocky requests permission only to add workout records (and, on Android, calorie records) and never requests or uses permission to read any health data. What is written for each finished workout is the workout type (e.g. strength training, running), its start and end time, and an estimated energy burn calculated from the workout's duration and your bodyweight (this is a rough estimate, not a measurement, and is labelled as such). Nothing from Apple Health or Health Connect is read by the app, sent to our servers, or shared with any third party. You can turn the sync off at any time from Profile → Health; you can also revoke Rocky's access in iOS Settings → Health → Data Access & Devices → Rocky, or in the Health Connect app on Android. Data already written stays in Apple Health / Health Connect under your control and can be deleted there. Our use of Health Connect complies with Google's Health Connect permissions policy: the data is written solely to provide the feature described here and is never used for advertising, sold, or shared.
6. Storage and retention
Data is stored in a Postgres database on a server we operate, hosted with Hostinger in Mumbai, India. All connections to and from the backend use TLS. Nightly backups and continuous write-ahead-log backups are stored off-site in Cloudflare R2, where they are encrypted at rest by Cloudflare; backups are retained for 14 days on a rolling basis.
We retain your workout, profile, coaching notes, and readiness data for the life of your Rocky account. When you delete your account, all of your workout history (including cardio sessions), routines, PRs, profile, bodyweight history, coaching notes and chart commentary, readiness check-ins, planned sessions, agent run audit rows, push tokens, and preferences are purged from our systems within 30 days. Backups that may still contain your data roll off within a further 14 days. Lazy add-in free-text and agent prompts are not retained by Google Vertex AI (see Section 3); on our side, prompts are processed in memory and not persisted — only the model's structured response (planned session and coaching notes) is stored.
Purchase and subscription state (Section 1) is retained while your account exists and is deleted with it; the stores and RevenueCat retain transaction records under their own policies (Apple and Google receipts cannot be deleted by us).
7. Your rights — and deleting your account
You can delete your Rocky account and all associated data at any time:
You can also:
- Pause the coaching agent at any time from Profile → Pause Rocky. While paused, no agent runs occur and no data is sent to Vertex AI for coaching. Your logged history remains intact.
- Read or delete coaching notes Rocky has written about you at Profile → Coach notes. Each note can be removed individually.
- Withdraw Lazy add-in consent by simply not using the feature. Every other part of the app works without AI; the coaching agent runs only when not paused.
- Request data export by emailing [email protected].
8. Children
Rocky is not directed to children under 13 (or under 16 in the EEA / UK). We do not knowingly collect data from children.
9. International data transfers
Your data is primarily stored and processed in India (our Hostinger-hosted server in Mumbai). Additional processing occurs in the United States (Clerk; Expo; Cloudflare, which stores our database backups in its R2 object storage) and the European Union (PostHog, Frankfurt). The coaching-agent and Lazy add-in prompts described in Section 3 are sent to Google Vertex AI through Google's global endpoint, so that specific processing may occur in any Google Cloud region worldwide rather than a single fixed location; in all cases it remains governed by the Google Cloud Data Processing Addendum and is not retained or used to train Google's models. Where required by applicable law (including for users in the EEA, UK, and Switzerland), transfers rely on the standard contractual clauses incorporated in our sub-processors' agreements.
10. Changes
If we change this policy we'll update the date above and, for material changes, notify you in-app.
11. Contact
[email protected]