Privacy Policy

Last updated: March 23, 2026

Coffee Lab is built on a privacy-first philosophy. You can use the app in full without an account — all your data stays on your device by default. Cloud sync is entirely opt-in and only available to Pro users. This policy explains exactly what we collect, why, and how it is handled.

1. Data You Create in the App

Coffee Lab stores the following data that you enter directly:

  • Beans — name, roaster, origin, process, roast level, tasting notes, preferred grind setting, photos, and any AI-generated suggestions you accept
  • Brew sessions / recipes — brewing method, grind setting, coffee dose (grams), water amount (grams), temperature, brew time, rating (1–5), and personal notes
  • Grinders — name, type, and description
  • Brew templates — method, parameters, difficulty, and step-by-step instructions you define
  • Tags — custom labels you create for categorising recipes
  • Inventory fields — bag weight, remaining weight, opened date, and roast date (stored locally only)

Local-only mode (default): All of the above is stored exclusively in an SQLite database on your device. Nothing is uploaded to our servers. No account is required.

Cloud sync (Pro, opt-in): If you sign in and enable cloud sync, the data above is synced to Convex cloud servers to enable access across devices. Sync is bidirectional and includes soft-delete timestamps so deleted items can be reconciled across devices. Your data is associated with your account ID and is never shared with other users unless you explicitly publish it via community features.

2. Community Features (Pro)

If you choose to participate in community features, the following additional data may be stored on our servers and visible to other users:

  • Public profile — username, bio, favourite brewing methods, and brew count
  • Shared recipes — any recipe you choose to share publicly, including method, parameters, grind setting, and notes
  • Bean contributions — beans you add to the community database
  • Bean reviews — your rating and tasting notes on community beans
  • Recipe likes — which shared recipes you have liked

All community participation is voluntary. You control whether your profile is public. You can delete your shared content at any time.

3. Account and Authentication

If you create an account to use cloud sync or community features, we collect:

  • Your email address
  • A bcrypt-hashed password (we never store your plain-text password)
  • Authentication session tokens stored securely on your device

Authentication is powered by Convex. Google OAuth sign-in may be added in a future update. You can delete your account at any time from the Settings screen, which permanently removes all your cloud data.

4. Local Device Storage

The following is stored locally on your device and never sent to our servers:

  • Device ID — a randomly generated UUID created on first launch to identify your device for sync purposes
  • App mode — whether you are in local-only or cloud-sync mode
  • Language preference
  • AI provider settings — your chosen provider (OpenAI, Gemini, Anthropic, or custom) and API key, stored in the device's encrypted Secure Storage (iOS Keychain / Android Keystore)
  • Subscription status cache — a local copy of your Pro status for offline use
  • Sync state — timestamps tracking which changes have been uploaded, to support offline-first sync

Your AI API key is encrypted at rest and never transmitted to Coffee Lab servers. It is sent directly from your device to your chosen AI provider.

5. AI Features

Coffee Lab's AI features require an API key — either your own key (Bring Your Own Key / BYOK) or from Coffee Lab's included quota. The following data is sent to AI providers when you use these features:

  • Bean Label Scanner — a base64-encoded photo of a coffee bag label is sent to your chosen AI provider to extract roaster, name, origin, process, roast level, and tasting notes
  • Brew Summarizer — your brew's tasting note text is sent to generate a summary and flavour tags

When using your own API key, data is sent directly from your device to your chosen provider (OpenAI, Google Gemini, or Anthropic). Those requests are subject to your provider's privacy policy, not ours.

When using Coffee Lab's included quota, requests are proxied through our backend, which forwards them to our AI provider. We do not log or store the content of these requests beyond what is needed to enforce usage limits.

6. Analytics

We use PostHog (EU-hosted at eu.i.posthog.com) for product analytics. This includes:

  • Screen views — which screens you visit within the app, recorded as named events
  • User identification — if you are signed in, your Convex user ID is associated with your analytics session so we can understand how features are used across sessions
  • Session replay — screen recordings of app sessions to help us identify UX issues. Session replay may capture taps and navigation but does not capture the content of text fields
  • Autocaptured events — standard interaction events (button taps, screen transitions) collected automatically

Analytics data is stored in the EU under PostHog's data processing terms. You can opt out of analytics by contacting us at contact@getcoffeelab.com.

7. Error Reporting

We use Sentry to capture crash reports and errors. When an error occurs, Sentry collects:

  • The error message and stack trace
  • Contextual tags we attach to identify the feature area (e.g., "auth", "ai", "sync") and action (e.g., "save_bean", "analyze_label")
  • Device type and OS version (collected automatically by Sentry)

We capture 100% of errors to ensure we can identify and fix issues quickly. Error reports do not include the content of your coffee data. Sentry data is processed under Sentry's privacy policy.

8. Purchases and Subscriptions

In-app purchases are handled through the App Store (Apple) or Google Play. We use RevenueCat to manage subscription status. RevenueCat receives:

  • Your Convex user ID (to link subscription status to your account)
  • Purchase receipt data from Apple / Google (managed by RevenueCat)
  • Your active entitlements (e.g., "pro")

Coffee Lab does not receive or store your payment card details. All payment processing is handled directly by Apple or Google. Your subscription status is cached locally on your device for offline use.

The Pro plan is a lifetime one-time purchase at $39.99. There is no recurring billing.

9. Data Retention and Deletion

  • Local data — remains on your device until you uninstall the app or clear app storage
  • Cloud data — retained for as long as your account is active. Deleted items are soft-deleted (marked with a timestamp) to support sync, then permanently purged after 90 days
  • Account deletion — you can delete your account from Settings → Account. This permanently and irreversibly removes all your cloud data, community contributions, and account information within 30 days
  • Analytics — PostHog data is retained per PostHog's default retention policy. Your analytics identity is reset when you sign out
  • Error reports — Sentry retains error events for 90 days by default

10. Data Export

Pro users can export their entire bean library, brew journal, grinder collection, and recipes at any time from Settings → Export Data. Exports are available in JSON and CSV formats. Your data always belongs to you.

11. Third-Party Services

Coffee Lab integrates with the following third-party services. Each has its own privacy policy:

ServicePurposeData shared
ConvexCloud database and backendAll cloud-synced user data
PostHog (EU)Analytics and session replayScreen views, user ID, session recordings
SentryCrash and error reportingError messages, stack traces, device info
RevenueCatSubscription managementUser ID, purchase receipts
OpenAI / Gemini / AnthropicAI features (BYOK)Bean label photos, brew notes text
Apple / GoogleApp distribution and paymentsStandard platform data

We do not sell your data to any third parties. We do not use your data for advertising.

12. Children's Privacy

Coffee Lab is not directed at children under the age of 13. We do not knowingly collect personal information from children. If you believe a child has provided us with personal data, please contact us and we will delete it promptly.

13. Changes to This Policy

We may update this privacy policy from time to time. We will notify you of material changes via an in-app notice or email. Continued use of Coffee Lab after changes take effect constitutes acceptance of the updated policy.

14. Contact

Questions, requests, or concerns about this privacy policy or your data?

contact@getcoffeelab.com