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:
| Service | Purpose | Data shared |
|---|---|---|
| Convex | Cloud database and backend | All cloud-synced user data |
| PostHog (EU) | Analytics and session replay | Screen views, user ID, session recordings |
| Sentry | Crash and error reporting | Error messages, stack traces, device info |
| RevenueCat | Subscription management | User ID, purchase receipts |
| OpenAI / Gemini / Anthropic | AI features (BYOK) | Bean label photos, brew notes text |
| Apple / Google | App distribution and payments | Standard 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?