Privacy Policy

Effective date: October 12, 2026

Koffeelab ("we", "us") is a coffee logging app and website operated from Denmark. This policy explains what data we collect, why, and what your rights are. It applies to the Koffeelab iOS and Android apps and to koffeelab.app.

1. Data we collect

  • Account data — your email address and sign-in identity, handled by our authentication provider Clerk. Signing in with Google shares your Google account email with us.
  • Profile data — the username, display name, and profile photo (avatar) you choose. Your username, display name, and avatar are visible to other signed-in users.
  • Your coffee content — the brews, beans, setups, grinders, defaults, notes, scores, comments, photos, and videos you log in the app, including sound recorded with a video. Photos and videos are stored in private cloud storage and served through short-lived signed links.
  • Location data — if you attach a location to a brew, we collect the precise GPS coordinates from your device and, when you pick a named café or place, its name, address, and place identifier. Location is optional and only captured when you add it. See section 5 below.
  • Social activity — who you follow and who follows you, the brews you like, and any content or users you report or block.
  • AI gear images — when you use the optional feature to generate a stylized image of your grinder or setup, the photo you provide is sent to our AI provider (OpenAI) to produce the image.
  • Notifications — in-app notifications (for example a new follower or a like) record who triggered them and what they relate to. If you enable push notifications, we collect a device push token to deliver them through Expo and Apple Push Notification service on iOS, or Google Firebase Cloud Messaging on Android.
  • Age confirmation: we store whether you have confirmed that you are at least 13, when you confirmed it, and whether the confirmation came from your declaration, Apple, or Google Play. We do not store your date of birth or the age range returned by the store.
  • Purchase data — your subscription or purchase status (product, trial/renewal state, expiry), processed by Apple or Google Play and RevenueCat. We never see or store your payment card details; the store handles payment processing. RevenueCat also sends your subscription events (such as a purchase, renewal, or cancellation, with the product and the amount we receive) to PostHog, where they are linked to your in-app analytics.
  • In-app analytics — how you use the app: the screens you visit and actions you take, such as completing onboarding, viewing the paywall, or unlocking Koffeelab Pro, plus the reason and any optional comment you give if you decline the subscription, and technical diagnostic events when a feature fails. Device and app identifiers and technical details such as app version and operating system may accompany these events. These events are linked to your account, including your email address. They are processed by PostHog on its EU host (eu.i.posthog.com). No advertising trackers. You can turn in-app analytics off at any time — see section 8.
  • Website analytics — anonymous page-view analytics on koffeelab.app via Vercel Analytics, and anonymous product analytics via PostHog on its EU host (eu.i.posthog.com), such as clicks on the App Store download links. No advertising trackers.
  • Communication — emails you send us, feedback you submit through the app, and the address we use to send you a welcome or service email.

2. How we use it

We use your data solely to run and improve Koffeelab: authenticate you, store and sync your coffee logs across devices, show your public profile and public brews to other users, power the map and social feed, generate the AI gear images you request, deliver in-app notifications, handle reports and keep the community safe, verify your Koffeelab Pro entitlement, respond to support requests, send essential service emails, and — through product analytics — understand how the app is used so we can fix what does not work and improve it. We do not sell your data, and we do not use it for third-party advertising.

3. Community catalog and public content

  • Community catalog — when you create a bean, setup, or grinder, an anonymous snapshot of its text details (and image, if any) may be published to the shared community catalog so other users can add it to their own lists. Catalog entries carry no account information and cannot be traced back to you.
  • Public profile — your username, display name, and avatar are visible to other signed-in users, who can follow you and view your public brews.
  • Public brews — brews are private by default. If you mark a brew public, other signed-in users can view it, including its photos, videos, and comments, and — when the brew is linked to a named place — its location, shown as a café name, address, and a map centered on the coordinates. Marking a brew with a location public shares that location.

4. Service providers

We rely on a set of processors to operate the service: Clerk (authentication), Apple, Google Play, and RevenueCat (purchases and subscriptions), Expo, Apple, and Google Firebase Cloud Messaging (push notifications), Neon (database), Cloudflare (photo and video storage), Mapbox (maps and place search), OpenAI (AI gear image generation), PostHog (product analytics, hosted in the EU), Notion (feedback and moderation records), Railway and Vercel (hosting), and Resend and Loops (service emails). Each receives only the data needed for its function.

5. Location data

Location is optional and collected per brew, only when you choose to attach it. When you do, the precise GPS coordinates from your device are sent to our servers, along with the name, address, and identifier of any named place you select. For brews you mark public that are linked to a named place, this location is shown to other signed-in users and on the map; the location of private brews is visible only to you. You can leave the location off a brew, or delete the brew, to remove it.

6. Reports and moderation

When you report content or a user, or block someone, we store that information to operate moderation and keep the community safe. A report may include your identity, the content or user reported, and your reason, and may be recorded in our moderation tooling (Notion). We may retain reports to enforce these terms and comply with the law, even after the reported content is removed.

7. Data retention and deletion

Your data is kept for as long as your account exists. You can delete your account yourself in the app, under Settings → Edit profile → Delete account; you do not need to email us. Deletion takes effect immediately — your account and content disappear from the app — and is then recoverable for 30 days: signing in again within that window cancels it. After 30 days the deletion is permanent, and your brews, photos, videos, comments, location data, profile, social connections, and entitlement record are removed from our systems.

You can also request account deletion without installing or opening the app. Visit our account and data deletion instructions or email emillykkeg@gmail.com from the email address linked to your account. We verify that the request belongs to you before deleting anything. The same 30-day recovery period applies. You can request deletion of specific content without deleting your account; describe the content you want removed in your request.

We do not keep in-app analytics events to a fixed period. We keep them only for as long as they remain useful for understanding how the app is used and how it changes over time — long enough to compare a release against earlier ones — and delete them once they no longer serve that purpose. Deleting your account removes your analytics profile, the record that links those events to you and carries your email address; the usage events themselves remain, no longer linked to you or to any other person.

Previously published anonymous catalog snapshots remain, as they contain no personal data, and moderation or support records may be retained where needed to comply with the law or enforce our terms. To request a copy of your data, email emillykkeg@gmail.com.

8. Your rights

If you are in the EU/EEA, the GDPR gives you the right to access, correct, export, and delete your personal data (including your profile, location data, and social activity), to restrict or object to processing, and to lodge a complaint with your local supervisory authority (in Denmark: Datatilsynet). We process your data to perform our contract with you (running the app) and on our legitimate interest in keeping the service secure and in understanding how the app is used so we can improve it.

You can object to the analytics part at any time, without giving a reason and without contacting us: turn off in-app analytics in the app, under Settings → Preferences. Once it is off, the app stops sending usage events, and the setting stays off until you turn it back on.

9. Children

Koffeelab is not directed at children under 13, and we do not knowingly collect data from them.

10. Changes

We may update this policy as the service evolves. Material changes will be announced in the app or by email, and the effective date above will be updated.

11. Contact

Questions about this policy or your data: emillykkeg@gmail.com.