Privacy policy
Last updated: 24 October 2026
This policy explains what data the Calorko website and app collect, why, who we share it with and how you can delete it. It is written in plain language, with nothing hidden in the small print.
Who is responsible
The data controller is Jovan Ilić, Podgorica, Montenegro. For any privacy question, write to podrska@calorko.app.
In short
- The website sets no cookies and does not follow you from page to page.
- Meal photos are not stored by default. They are sent for analysis and discarded, unless you turn on "keep photos".
- We use no advertising SDKs and we do not sell data to anyone.
- You can delete your account and all data from inside the app, and export your data as CSV.
Website
Cookies and statistics
The website is static and sets no cookies, so there is no cookie banner. If we measure visits, we do it with Plausible Analytics, a tool that uses no cookies, builds no visitor profiles and only produces aggregate numbers (how many visits, which pages, which country).
Hosting
The website is served by Cloudflare Pages. Cloudflare processes IP addresses in server logs for security and attack protection. We do not use those logs to track individuals.
Early-access list
If you sign up for early access, we store your email address, the phone you picked (iPhone or Android), whether you want to test the app before launch, the page language, the page or campaign you signed up from and the time of sign-up. The data sits in a Supabase database on servers in the EU (Dublin, Ireland), in a table the website can only write to, not read. We use it only to tell you when the app is out and, if you ticked testing, to invite you to the test. For the test we give your address to Apple (TestFlight invite) or Google (tester list on Google Play), for that purpose only. Your IP address is used only briefly, in memory, to limit the number of sign-ups, and is not stored. We send no newsletter and sell no addresses. We delete the list 12 months after the app launches, and your address earlier as soon as you ask at podrska@calorko.app.
App
Account
Sign-in runs on Supabase Auth: Apple, Google or an email link. We store your email address and account identifier.
Profile and plan
To calculate your daily calorie and macro target, you enter sex, year of birth, height, current and target weight, goal and activity level. We store these, together with the meals and weights you log, so the app can work. We treat weight and diet data as sensitive: we process it only to show you your diary and progress, never for advertising.
Meal photos
When you photograph a meal, the image is downscaled on your phone and sent to our server function, which passes it to an AI model for analysis. The result (dish name, items, grams, calories) is saved with your meal. To answer repeated requests we cache the result under a fingerprint (hash) of the image, not the image itself. The photo itself is stored only if you turn on "keep photos"; it is then visible only to you.
Scan usage
The free plan includes 3 AI scans per day, so for each scan we record the time and technical details (which AI service answered and how long it took). This is how we enforce the daily limit and check that the app stays fast.
Subscription
Payment is handled by Apple (App Store) or Google (Google Play). We never see your card details. RevenueCat only tells us whether a subscription is active and until when.
Product analytics
With PostHog we record in-app events, for example that an onboarding step was completed, a scan was started or saved, or the daily limit was reached. It shows us what is broken and what to fix.
Barcodes
When you scan a barcode that is not in our database, we look the number up in Open Food Facts. Only the barcode number is sent, nothing about you.
Who we share data with
We use the following processors, only for the purposes listed:
- Cloudflare — website hosting and passing early-access sign-ups to the database.
- Supabase — sign-in, database (with per-user access rules, known as row-level security) and server functions.
- Google (Gemini) — main AI model for analysing meal photos and descriptions.
- OpenAI — fallback AI model, used only when the main one does not respond.
- RevenueCat — subscription status.
- Apple — App Store, billing and TestFlight (iPhone testing).
- Google — Google Play, billing and Android testing.
- PostHog — in-app product analytics.
- Plausible — aggregate website statistics, no cookies.
Some of these services process data outside the European Economic Area. In those cases the transfer relies on safeguards provided for by the GDPR, such as standard contractual clauses.
Legal basis
- Performance of a contract — account, food diary, plan and subscription, because the app cannot work without them.
- Consent — the early-access list and storing photos. You can withdraw consent at any time.
- Legitimate interest — security logs and aggregate statistics, so the website and app run reliably.
How long we keep data
We keep account data for as long as the account exists. When you delete your account in the app, your profile, meals, weights and stored photos are deleted. We delete the early-access list 12 months after the app launches, as described above.
Your rights
Under the GDPR and Montenegro's Law on Personal Data Protection you have the right to:
- access the data we hold about you;
- correct inaccurate data;
- ask for deletion (in the app: Profile → delete account);
- take your data with you (in the app: CSV export);
- restrict or object to processing;
- withdraw consent;
- complain to Montenegro's Agency for Personal Data Protection and Free Access to Information or to the supervisory authority in the country where you live.
Send requests to podrska@calorko.app. We reply within 30 days.
Security
All traffic goes over HTTPS. In the database each user can read and change only their own rows. Only Jovan Ilić has access to production data.
Changes
When we change this policy, we publish the new version on this page with a new date. We will also tell you about significant changes in the app. See also the terms of use.