Protein Ring Privacy Policy
Effective date: 2026-06-30
Overview
Protein Ring helps users set nutrition targets, log meals, understand protein and macro progress, and use AI-assisted meal parsing. We collect the minimum data needed to provide account access, save nutrition logs, process subscriptions, improve the app, and diagnose crashes.
Data We Collect
Account Data
- Email address or sign-in provider account information used for login.
- Supabase user id and authentication session data.
- Account status, sign-in/sign-out events, and account deletion status.
Profile And Goal Data
- Onboarding answers such as goal, activity level, weight range, height range, age range, body frame, motivation, commitment, obstacle, and desired pace.
- Derived nutrition targets including calories, protein, carbs, fat, and fiber.
- Reminder preferences and Today ring display preferences.
Meal And Nutrition Data
- Meal text users type into the app.
- Parsed meal items, quantities, macro estimates, micronutrient estimates, FoodData Central food identifiers, confidence status, and clarification answers.
- Meal history, daily totals, weekly trends, and nutrient coverage summaries.
- Offline meal drafts or pending meal recovery state stored locally on device.
Purchase And Entitlement Data
- Subscription plan selection, product identifiers, package identifiers, purchase status, restore status, entitlement status, and management URL returned by RevenueCat, the App Store, or Google Play.
- The app does not directly collect full payment card details.
Analytics Data
- Installation id before sign-in and Supabase user id after sign-in.
- App events such as onboarding progress, paywall views, plan selection, purchase start/result, meal logging, meal parse success/failure, clarification flows, reminder events, and active-day events.
- Sanitized event properties such as app platform, local date, latency, item counts, provider status, and plan identifiers.
- Raw meal text and email addresses are blocked from analytics properties.
Crash And Performance Diagnostics
- JavaScript errors, native crashes, app version/release, environment, device/app runtime information, and performance spans for app start, auth hydration, entitlement hydration, and meal parsing.
- The only user identifier intentionally sent to Sentry is the Supabase user id.
- Raw meal text, prompts, emails, tokens, secrets, cookies, authorization headers, and API keys are stripped before diagnostic metadata is sent.
How We Use Data
- Provide account access and session management.
- Save and sync meal logs, nutrition targets, reminder preferences, and profile settings.
- Parse user-entered meals into structured food items and nutrition estimates.
- Match foods against FoodData Central and cache shared nutrition references.
- Unlock paid subscription features and restore purchases.
- Respond to support, export, privacy, and deletion requests.
- Improve onboarding, meal logging, paywall, and retention flows.
- Monitor crashes and performance issues in TestFlight and production.
Processors And Service Providers
Protein Ring uses the following service providers to operate the app:
| Provider | Role | Data Processed |
|---|---|---|
| Supabase | Authentication, database, storage for user-owned app data, and Edge Function runtime. | Account identifiers, profile/goals, meal logs, reminder preferences, auth session metadata, and deletion/export operations. |
| OpenAI | AI meal parsing through Supabase Edge Functions. | User-entered meal text and parsing context needed to return structured food candidates or clarification questions. |
| USDA FoodData Central | Nutrition reference lookup through Supabase Edge Functions. | Food search terms, FoodData Central food ids, and public nutrition reference data. |
| RevenueCat | Subscription entitlement and purchase state management. | App user id, product/package identifiers, subscription status, restore status, and store transaction/entitlement metadata. |
| PostHog | Product analytics event collection. | Sanitized event names/properties, installation id, Supabase user id after sign-in, platform, and timestamps. |
| Sentry | Crash reporting and performance monitoring. | Errors, crash diagnostics, release/environment tags, sanitized performance spans, and Supabase user id. |
| Apple App Store/StoreKit | Subscription billing and account subscription management. | App Store account purchase and subscription data handled by Apple. |
| Google Play/Billing | Subscription billing and account subscription management. | Google Play account purchase and subscription data handled by Google. |
API keys for OpenAI and FoodData Central run server-side in Supabase Edge Functions and are not shipped in the app.
Data Sharing
We do not sell personal data. We share data with the processors above only as needed to operate the app, process purchases, provide AI parsing, perform analytics, diagnose errors, or comply with user requests and legal obligations.
Data Retention
Account, profile, goals, and meal logs are retained while the account is active. Shared FoodData Central reference foods may remain after account deletion because they are not user-owned records. Local drafts, pending meal recovery state, entitlement mock state, reminder preferences, analytics local counters, and review prompt caps are cleared on the device after successful account deletion.
Account Deletion
Users can delete their account from Profile -> Account -> Delete account. Deletion removes user-owned Supabase rows for meals, meal items, goals, and profiles, then deletes the Supabase auth user. Subscription cancellation remains managed by Apple or Google through the user’s app store subscription settings.
Data Export And Support
Users can request a data export from Profile -> Account -> Export my data, which
starts an email to support@proteinring.com. Support should fulfill exports by
filtering Supabase user-owned tables by the requesting Supabase user id.
For privacy, deletion, support, or export questions, contact:
support@proteinring.com.
Security
Protein Ring uses Supabase authentication, row-level access patterns, server-side Edge Functions for private API keys, and local storage only for app state needed on the device. No security system is perfect, but production secrets must stay out of the app bundle and repository.
Changes
We may update this policy as the app changes. The published policy should show the current effective date and remain linked from Profile and store listing metadata.