Ascend
Privacy Policy
Last updated: May 21, 2026 · Version 2.0
This Privacy Policy describes in detail how Ascend ("we", "us", "our", or "the app") collects, uses, stores, shares, retains, and protects your information when you use the Ascend mobile application and related services. By creating an Ascend account or using the app, you acknowledge and agree to the practices described below.
This policy is written to be exhaustive about every category of information the app touches — even items most users would never notice — because we believe transparency is the only acceptable default for an app that touches health, body composition, and biometric-adjacent data.
Contents
- 1. Categories of Information We Collect (every field, in detail)
- 2. How We Use Each Category
- 3. Third-Party Service Providers (sub-processors)
- 4. Photos & AI Image Analysis (general)
- 4a. Face Data (sensitive — special handling)
- 4b. Physique Photos
- 4c. Food / Meal Photos
- 5. Apple HealthKit Integration
- 6. Subscriptions, Purchases & RevenueCat
- 7. AI Coach Chat (David)
- 8. Data Storage, Encryption & Security
- 9. Data Retention & Deletion
- 10. Your Rights & Controls
- 11. International Data Transfers
- 12. Children's Privacy
- 13. Tracking, Analytics & Advertising
- 14. Changes to this Policy
- 15. Contact
1. Categories of Information We Collect
This is an exhaustive list of every data field Ascend touches, organized by category. Each item identifies what is collected, how the user provides it, and where it lives.
1.1 Account & Authentication
- Email address — provided by you at signup. Used as your primary login identifier.
- Password — created by you at signup. We never store, see, or transmit your plaintext password; it is hashed (one-way encrypted) by Supabase's authentication system before storage.
- Supabase user ID (UUID) — automatically generated by Supabase when your account is created. This opaque identifier is the only key that ties your records together inside our database.
- Email confirmation tokens / one-time passwords (OTPs) — temporarily generated for email verification and password resets. Expire after a few minutes.
- Session tokens (JWT) — issued after sign-in, stored locally on your device to keep you logged in. Automatically expire and refresh.
- Date and timestamp of account creation and last sign-in.
1.2 Profile & Personalization
- Display name — chosen by you, used to personalize the app interface (e.g. "Good morning, Raymond").
- Age — used for calorie/macro calculations.
- Sex assigned at birth (male / female) — used for BMR and macro calculations only.
- Height (cm or ft/in).
- Body weight (lb or kg) — current and historical entries you choose to log.
- Activity level (sedentary / lightly active / moderate / very active / extremely active).
- Fitness goals you select (gain muscle, lose fat, improve stamina, body recomposition, athletic performance, lifestyle).
- Diet preference (standard, high protein, vegetarian, vegan, keto, paleo, Mediterranean, intermittent fasting).
- Unit preferences (imperial / metric for weight and height).
- Daily calorie, protein, water, and step targets — calculated from your profile or manually overridden.
- Theme preference (dark or light mode).
1.3 Workout & Training Data
- Workout split structure — the days of your training week and what muscle groups they target.
- Exercise library entries — name, default sets, default reps, target muscle, optional notes for each exercise in your splits.
- Custom exercises you add yourself.
- Daily workout logs — per-exercise sets, reps, and weight values you record, plus the date and time you logged them.
- Workout completion state for each day (completed / skipped / missed).
- Personal records (PRs) automatically detected from your logged sets.
- Split cycle state — which day of the rotation you're on.
1.4 Nutrition & Food Logging
- Logged meals — name, meal type (breakfast / lunch / dinner / snack), calorie count, protein, carbs, fat, quantity, and the date logged.
- Saved meals — meals you mark as reusable templates.
- Free-text meal descriptions you type for AI analysis (e.g. "2 eggs and toast"). These descriptions are sent to Google Gemini for nutrition estimation.
- USDA FoodData Central lookups — the text queries you type into the food search. Sent to the USDA's public API.
- Barcode scans — UPC/EAN codes you scan with your camera; sent to Open Food Facts and/or our AI processor to fetch product nutrition.
- Food photos — see Section 4c.
- Daily water intake in ounces or milliliters.
1.5 Body Composition Scans (Face & Physique)
- Face photos you submit through the Face Scan feature (typically 3 photos: front, left profile, right profile). See Section 4a for full detail.
- Physique photos you submit through the Physique Scan feature (typically 4 photos: front, back, left side, right side). See Section 4b.
- AI-derived numerical scores for each scan — e.g. estimated skin score, jawline score, symmetry score, body fat percentage estimate, muscle balance estimate, overall rating. These are estimates, not measurements.
- Scan history — date and result of each saved scan, so you can compare over time.
1.6 Health Data (Apple HealthKit, optional)
If you grant the HealthKit permission, Ascend reads only the following:
- Daily step count for the current day.
HealthKit data stays on your device. Step counts are never written to our servers; they are read locally and used to populate today's step-progress in the app. Ascend does not write any data back to HealthKit. See Section 5 for more.
1.7 Discipline Score, Streak & Achievements
- Daily Discipline Score (0–100) — calculated from your logged food, training, steps, and water.
- Daily rating history — historical scores by date.
- Streak counters — current consecutive days, longest streak, last activity date.
- XP total — cumulative experience points earned through daily discipline scores and achievements.
- Level & rank — computed from your XP (Iron, Bronze, Silver, Gold, Platinum, Diamond, Master).
- Unlocked achievements — IDs and timestamps of each achievement you've earned.
- Perfect-day flags — dates on which all four discipline components were maxed.
1.8 AI Usage Logs
To enforce per-tier rate limits and to bill ourselves accurately for AI usage, we keep an audit log of every AI call you make:
- Feature called (e.g.
face_scan, physique_scan, food_analysis, david_chat).
- AI model used (e.g. Gemini 2.0 Flash).
- Timestamp and date of the request.
- An estimated token cost for that request.
- Your Supabase user ID so we know which user the request belongs to.
We do not log the content of your photos, prompts, or AI responses in this audit table — only metadata about the request.
1.9 AI Coach Chat (David)
- Your typed messages sent to the David AI coach.
- David's responses received from Google Gemini.
- Chat history stored locally on your device and synced to your account so you can resume conversations across devices.
- Conversation context built from your profile, recent activity, and chat history that we send along with each message to give David relevant context.
1.10 Subscription & Purchase Data
- Subscription tier (Free, Premium, or internal Developer/Beta) and the source (RevenueCat subscription, internal access code, etc.).
- Subscription state from Apple/RevenueCat — active, expired, will-renew, in-grace-period, cancelled, refunded.
- Renewal date and original purchase date as reported by Apple.
- RevenueCat app user ID — your Supabase user ID is sent to RevenueCat so they can attribute the subscription. RevenueCat does not receive your email, name, or any other personal detail.
We never receive, see, or store your payment card information. Apple handles all payment processing under their own terms and policies.
1.11 Device, Diagnostics & Telemetry
- Device model (e.g. iPhone 15 Pro), iOS version, and app version — used for support and crash debugging.
- Crash reports via Apple's standard crash reporter (only if you've opted in to Apple's "Share with Developers" setting in iOS Privacy settings). Includes a stack trace; does not include any personal data.
- Anonymous request logs on our Supabase edge functions for security/abuse monitoring (IP address, timestamp, user agent). Retained for 7 days then automatically discarded.
We do not use any third-party analytics SDK (e.g. Mixpanel, Amplitude, Firebase Analytics, Segment). We do not collect advertising identifiers (IDFA) or perform cross-app tracking.
1.12 Local Device Storage
Most of the data above is mirrored locally on your device for offline use and fast performance. Local storage keys include your profile, daily logs, achievements, streak, splits, scans, weight history, ratings, chat history, theme, and your acceptance of the Terms of Service. Local data is wiped automatically when you log out or delete your account.
2. How We Use Each Category
| Category | Purpose |
| Email, password, session tokens | Authenticate you and keep you signed in |
| Profile (age, height, weight, goals, etc.) | Calculate personalized calorie/macro targets and tailor app guidance |
| Workout logs | Render your training history, detect PRs, compute the training component of your Discipline Score |
| Meal logs & nutrition data | Render your daily macros, compute the nutrition component of your Discipline Score |
| Face / physique / food photos | Generate the AI analysis you explicitly requested |
| HealthKit steps | Show today's step progress in the app (read-only, on-device) |
| Discipline / streak / XP / rank | Visualize progress and motivate consistency |
| AI usage logs | Enforce per-tier rate limits and prevent abuse |
| David chat history | Provide context-aware coaching across sessions |
| Subscription data | Unlock paid features, manage renewals, prevent re-paywalling paying users |
| Device diagnostics | Debug crashes, improve stability |
We do not:
- Sell, rent, or lease your data to anyone, ever.
- Use your data for behavioral advertising or marketing profiles.
- Share your data with advertising networks or data brokers.
- Train AI models on your data.
- Combine your data with data purchased from other sources.
3. Third-Party Service Providers (Sub-processors)
Ascend uses a deliberately small set of sub-processors. Each handles a specific job under their own privacy and security commitments:
Supabase, Inc. (USA)
Provides our authentication, Postgres database, and serverless functions. Stores: account credentials (hashed), profile, all logged data, scan history, achievements, subscription tier, AI usage logs. Encrypted at rest (AES-256) and in transit (TLS 1.2+). Supabase Privacy Policy.
Google LLC — Gemini API via Google AI Studio (USA)
Processes photos and text we forward to it for AI analysis (face scan, physique scan, food photo, food text description, David chat). We use Google's paid API tier; per Google's terms, content submitted via paid Gemini API is not used to train Google's models and is retained only as long as needed to produce a response and for abuse monitoring (typically <30 days on Google's side). Google Privacy Policy.
RevenueCat, Inc. (USA)
Manages subscription state and entitlement on top of Apple StoreKit. We send your Supabase user ID (a UUID) and receive your subscription status. RevenueCat does not receive your email, name, payment info, or any other personal detail. RevenueCat Privacy Policy.
Apple Inc.
Handles all payment processing for in-app purchases. Apple also provides HealthKit and StoreKit. We never receive your payment card data, Apple ID password, or full Apple Account profile.
U.S. Department of Agriculture — FoodData Central (USA)
Public food database we query when you search for a food. We send your typed query text; no account or user identifier is attached.
Open Food Facts (Worldwide, non-profit)
Public barcode database we may query when you scan a product barcode. We send only the barcode number.
We do not use any other third parties for analytics, advertising, tracking, push notifications, A/B testing, error monitoring, or session replay.
4. Photos & AI Image Analysis (General)
Whenever you submit a photo for AI analysis, the following happens, end to end:
- The photo is captured by your device's camera (you grant camera permission once via iOS).
- The image is base64-encoded locally and sent over an HTTPS/TLS connection to our Supabase edge function.
- The edge function verifies your authentication, checks your usage against the rate limits for your tier, then forwards the image to Google Gemini.
- Gemini returns a structured analysis (JSON with the relevant scores).
- The edge function returns that analysis to your device.
- The original photo is discarded from our server memory immediately after step 5. It is not persisted anywhere on our infrastructure unless you tap "Save Results" in the app.
AI results are estimates produced by a large language model and are not medical diagnoses or measurements. See our Terms of Service for the full disclaimer.
4a. Face Data (Sensitive — Special Handling)
Ascend's optional Face Scan feature lets you submit photos of your face for AI-assisted cosmetic analysis (skin, jawline, symmetry estimates). We treat face photos as sensitive personal data and apply stricter handling than ordinary content.
- What we collect: the face photos you choose to capture or upload through the Face Scan flow (typically three photos: straight-on, left profile, right profile) and the AI-generated numerical estimates derived from them. We do not use Apple's Face ID, ARKit face tracking, depth maps, facial geometry, biometric templates, or any face-recognition technology. We do not identify, authenticate, or recognize individuals from face photos.
- How it is used: the photo is sent over an encrypted (HTTPS/TLS) connection to our server, which forwards it to Google Gemini solely to generate the analysis you requested. The numerical scores returned are saved to your private account so you can compare scans over time. The face photo itself is not retained on our servers after the analysis completes unless you explicitly save the scan to your history.
- Third parties: Google (Gemini API) processes the photo on our behalf solely to produce the analysis. Per Google's paid API terms, your face photo is not used to train Google's AI models. We do not sell or share face photos with any other third parties, advertisers, data brokers, or marketing partners.
- Storage location: any retained scan photos and their derived scores are stored on encrypted Supabase servers in the United States, accessible only via your authenticated account.
- Retention: face photos discarded after analysis are deleted from server memory immediately when the analysis completes (typically under 10 seconds). Photos you choose to save to scan history are retained until you delete them individually or delete your account. When you delete your account (Profile → Settings → Delete Account), all face photos and derived data are permanently removed within 30 days.
- Your control: you may delete any individual scan at any time from the Scan tab. You may revoke camera and photo permissions from iOS Settings → Ascend at any time.
4b. Physique Photos
Same handling pipeline as Face Data above. Physique photos (typically four — front, back, left side, right side) are sent to Google Gemini for body composition estimation, then discarded from our servers unless you save the scan. Retention, deletion, and third-party rules are identical to Section 4a.
4c. Food / Meal Photos
Food photos are sent to Google Gemini for calorie and macro estimation. The image is discarded from our server immediately after the response is returned. The numerical estimate is saved to your meal log (as a regular meal entry). Food photos are never used to identify the person who took them and are subject to the same third-party and retention rules as Section 4a.
5. Apple HealthKit Integration
If you grant HealthKit permission, Ascend reads your step count for the current day only. This permission is requested only when you tap a HealthKit-relevant control. You can revoke it any time in iOS Settings → Privacy & Security → Health → Ascend, or Settings → Ascend → Health.
HealthKit data is read on-device by iOS and never transmitted to our servers. We do not write any data to HealthKit. We do not read any other HealthKit data type (no heart rate, sleep, weight, workouts, body composition, mindfulness, etc.).
6. Subscriptions, Purchases & RevenueCat
If you purchase Ascend Pro, all payment processing is handled by Apple through StoreKit. We never see your credit card, Apple ID password, or billing address. RevenueCat acts as our subscription state manager. We send RevenueCat your anonymous Supabase user ID; in return we receive your subscription status (active, expired, renewing, cancelled, grace period).
Receipt data, original transaction IDs, and renewal timestamps are stored in your account so the app correctly identifies you as a paying subscriber across devices and reinstalls.
You can cancel anytime in iOS Settings → Apple ID → Subscriptions. Refunds are handled by Apple at reportaproblem.apple.com.
7. AI Coach Chat (David)
When you chat with David, each message you type is sent to Google Gemini together with a context summary (your name, profile, recent discipline score, current streak, and the last few chat turns). David's reply is shown to you and saved to your chat history. We do not log chat content separately in our database for marketing or analytics — it lives only in your account record. Per Google's paid API terms, your chat content is not used to train Google's models.
8. Data Storage, Encryption & Security
Your data is stored on encrypted servers operated by Supabase in the United States. All connections between your device and our servers use HTTPS/TLS 1.2+. Passwords are one-way hashed (bcrypt) before storage; we never see or transmit plaintext passwords. Database fields are encrypted at rest using AES-256. API access requires a per-request JSON Web Token (JWT) tied to your authenticated session.
Per-user data is isolated via Postgres Row-Level Security (RLS): users can only read or write rows that match their own user ID. Administrative access is limited to a small number of operators with audit logging.
We take reasonable industry-standard measures to protect your data, but no system is 100% secure. In the event of a data breach affecting your information, we will notify you within 72 hours of becoming aware, in accordance with applicable law.
9. Data Retention & Deletion
We retain your data as follows:
- While your account is active: all categories above are retained until you delete them or your account.
- Face / physique / food photos discarded after analysis: deleted from server memory within seconds of the analysis completing.
- Edge function request logs (IP, user agent, timestamp): 7 days, then automatic deletion.
- After account deletion: all your personal data is permanently removed from active systems within 30 days. Backup copies are purged on a rolling 90-day cycle. Financial and tax records related to subscription transactions may be retained longer where required by law.
You can delete your account at any time in Profile → Settings → Delete Account. This calls our server-side deletion function which cascades through every per-user table and removes your authentication record. The process is irreversible once confirmed.
10. Your Rights & Controls
You have the right to:
- Access the data we hold about you. Most data is visible directly in the app; for a machine-readable export, contact us via Discord.
- Correct inaccurate data — most fields are editable in Profile → Settings or Personal Preferences.
- Delete your account and all associated data in-app via Profile → Settings → Delete Account.
- Export your data — request via Discord and we'll send a JSON archive within 30 days.
- Restrict or object to processing — contact us and we'll honor reasonable requests.
- Revoke iOS permissions (camera, photos, HealthKit) at any time in iOS Settings → Ascend.
- Lodge a complaint with your local data protection authority if you believe we've mishandled your data.
If you live in the EU/UK (GDPR) or California (CCPA/CPRA), you have these additional rights including the right to data portability and to opt out of the sale or sharing of personal data (we never sell or share — but the right exists). Vermont, Colorado, Connecticut, Virginia, and Utah residents have similar rights under their state laws.
11. International Data Transfers
Our servers (Supabase, Google Gemini, RevenueCat) are located in the United States. If you access Ascend from outside the U.S., your data will be transferred to and processed in the U.S. By using the app, you consent to this transfer. We rely on Standard Contractual Clauses and Apple's Data Processing Agreement for compliance where applicable.
12. Children's Privacy
Ascend is not directed to children under 13 and we do not knowingly collect data from children under 13. If you believe a child under 13 has created an account, contact us in Discord and we will delete it promptly. For users 13–17, parental consent is recommended; Ascend's content (fitness, nutrition, body composition analysis) is intended for general informational use and is not a substitute for guidance from a parent, doctor, or qualified professional.
13. Tracking, Analytics & Advertising
Ascend does not track you across other companies' apps and websites. We do not use the iOS Advertising Identifier (IDFA), the App Tracking Transparency framework's tracking permission, third-party analytics SDKs, or any advertising network. We show no advertisements inside the app. We do not sell any data of any kind.
14. Changes to this Policy
We may update this policy from time to time. Material changes (e.g. new data categories or new sub-processors) will be communicated through an in-app notice or by email to your registered address. The "Last updated" date at the top of this page always reflects the current version. Continued use after a material change indicates acceptance.
15. Contact
Questions, requests, or concerns? Join our community for support: Ascend on Discord. For data-subject requests (access, deletion, export, correction), DM the @support role in Discord and we'll respond within 30 days.