Privacy Policy

Last updated: 21 October 2026

KcalScan ("we", "us") is a nutrition tracking service operated by Tiago Fernandes, available as an iPhone app, an Android app, a web app and this website. This policy explains, in plain language, what we collect and how, what we use it for, who processes it — including the AI services that analyse your meals — how long we keep it, and how you stay in control.

In short. We use your data to run KcalScan for you. We never sell it, never show ads and never share it with advertisers. AI features send the data they need to Google (Gemini) and, as a backup for food analysis only, to OpenAI — and only after you allow it on the in-app permission screen, "Share your data with AI providers?". You can change that choice at any time in Settings → Privacy & AI, and export or delete your data in Settings → Account.

1. Information we collect and how we collect it

2. How we use your information

We do not sell your personal data, do not show ads, do not share your data with advertisers or data brokers, and do not track you across other companies' apps or websites. We do not use your data to train AI models. Google does not use what our AI features send it (section 3) to improve its products or to train AI models, apart from models used only to detect abuse. OpenAI does not use what our AI features send it (section 3) to train its models.

3. AI processing and your permission

Your permission comes first

Before KcalScan sends any of your data to an AI provider, it asks for your permission on a dedicated screen, "Share your data with AI providers?". The screen lists the data each AI feature sends, names the providers — Google (Gemini) and OpenAI — and offers two buttons of the same size, Allow and Don't allow. It is separate from accepting our terms and this policy. New users see it during setup; people who already used KcalScan see it once, the first time they open an updated version of the app. If you close it without choosing, nothing is sent, and the app asks again the next time you use an AI feature.

What each AI feature sends, and to whom

AI requests travel from your device to our own servers (Google Cloud Functions), which forward them to the AI provider. Providers receive the content the task needs — never your name, email address, account ID or payment details, unless they appear in something you choose to send, such as a nutrition plan document with your name on it. Before a photo leaves your device, the app removes hidden details the camera may have added, such as where the photo was taken; if it cannot remove them, it does not send the photo. PDF files are sent as they are, including any details stored in them, such as the author's name.

Google (Gemini) handles every AI feature. OpenAI is a backup, used only when Gemini is unavailable and only for the food-analysis features marked below. AI coach conversations, meal verdicts, the report summary and plan import never go to OpenAI; meals the AI coach logs for you are analysed like any other meal.

FeatureData sentSent to
Meal photo analysis — including the first scan during setup, retries, meals the AI coach logs from a photo you attach, and photos of what you left of a saved meal (Platinum)The photo; any description you add; your country; food names you've corrected or told the coach about; names of foods you often log at that meal; the app language. For a photo of what you left: that photo, the meal's stored preview, and the meal's food names and caloriesGoogle (Gemini); OpenAI as backup
Text estimates — AI quick add, Recalculate, automatic recalculation after you correct a food name, and meals the AI coach logs from what you writeThe food description or item names (for meals the coach logs, the meal as described in your message); your country; the app languageGoogle (Gemini); OpenAI as backup
Pantry photo scan and sorting your kitchen staples ("Organize unsorted")The fridge or pantry photo; the names of your kitchen staplesGoogle (Gemini); OpenAI as backup
Supplement label scan and supplement quick addThe label photo; the supplement or medication text you typeGoogle (Gemini); OpenAI as backup
Nutrition report AI summary ("Include AI summary") — on by default once you have allowed AI data sharing; you can switch it off for any reportNames of foods logged in the report period; and, without your name: age, sex, height, weight, BMI, goal, declared health conditions and allergies, weight trend, intake against targets, nutrients below or above target, meal timing, frequent foods, supplements, plan adherence, and steps, active energy and sleep from Apple Health or Health ConnectFood names: Google (Gemini), OpenAI as backup. Everything else: Google (Gemini) only
AI coach conversations (Platinum) — including the end-of-day check-in opened from a notification and "Ask the coach about this meal"Your messages, the conversation so far and photos you attach; your profile (sex, age, height, weight, activity level, goal, diet type, restrictions, declared health conditions, pregnancy and breastfeeding status); country, local date and time, and travel destination and accommodation; kitchen staples; your saved memories (what you told the coach to remember, the notes and food swaps you added, and the scan corrections you chose to keep); today's and recent days' meals with your notes; nutrient totals, targets and recent averages; supplements and whether you took them today; your imported nutrition plan, including the professional's name; if connected, steps, energy burned, workouts, sleep (duration, score and stages), 7-day averages, and a day-by-day table of the last 7 days (meals you logged, and energy burned, steps and sleep from Apple Health or Health Connect), and older days when the coach looks them up; if connected, the title, time and location of up to 10 calendar events in the next 48 hoursGoogle (Gemini) only
Meal verdict (Platinum) — created when you open a meal's summaryMeal type; food names; the meal's calories, macronutrients and micronutrients; your daily targets; the app languageGoogle (Gemini) only
Nutrition plan importThe PDF files or photos you pick. They are not stored; only the plan extracted from them is saved to your accountGoogle (Gemini) only

How the AI providers protect your data

Same or equal protection. Both agreements require Google and OpenAI to process your data only on our instructions, to bind the people who handle it to confidentiality, to keep it secure, to help us respond when you exercise your rights, to delete it when the service ends, and to protect international transfers with the EU Standard Contractual Clauses. Together with the commitments above, they give your data the same or equal protection as this policy.

AI output can be inaccurate. Check estimates, especially if you have allergies, and do not rely on AI for medical decisions.

4. Service providers and other third parties

These companies process personal data for us, to provide their service to KcalScan:

Same or equal protection. Each of these providers processes personal data on our behalf (apart from Stripe's own role described above), under data processing terms that require it to keep the data confidential and secure and to use it only to provide its service to us. This gives your data the same or equal protection as this policy.

These services receive data as independent companies, under their own terms:

5. Apple Health, Health Connect and calendar

Connecting a health source or your calendar is optional — every other feature works without it — and we only ever read what you explicitly grant.

We use health and activity data to calculate your Total Daily Energy Expenditure (TDEE) and to power optional dynamic calorie targets. If you allow AI data sharing, it is also used as context for the AI coach and for the AI summary of your nutrition report — for example, suggesting recovery-appropriate meals after a workout — and is then sent to Google (Gemini) as described in section 3: steps, energy burned, workouts, and sleep duration, score and stages. It is never sent to OpenAI. Calendar events are used only as AI coach context, in the same way. Daily totals of your steps, energy burned, workouts and sleep (one entry per day) are saved in your account, so you can see past days on any device and the AI coach can compare days. Switch off "Save activity history" in Settings → Devices & calendar to delete them and stop saving. Other activity and sleep readings from Apple Health or Health Connect, and calendar events, stay on your device; our servers do not store them.

We never use health data for advertising or marketing, never sell it, and never share it with advertising networks, data brokers, or resellers. Apart from the AI processing you allow in section 3, which is used only to give you health and nutrition guidance, it is not shared with anyone. We never use it to train AI models, and Google does not use what the AI features send it to train AI models, apart from models used only to detect abuse (section 3). OpenAI does not use what the AI features send it to train its models either (section 3). This holds for data read from Apple Health, in line with Apple's HealthKit requirements, and for data read from Health Connect, in line with the Health Connect permitted-use policies. You can revoke access at any time in Apple Health, in Health Connect, or in your device's calendar settings; to stop only the AI use, turn off AI data sharing in Settings → Privacy & AI.

6. Data storage and security

7. Your rights and choices

Under the GDPR and similar laws, you can:

8. Data retention and deletion

DataHow long we keep it
Your account: profile, diary, meal previews, settings, your AI data sharing choice and other preferences, coach action records, feedbackWhile your account exists. When you delete it, it is erased from our live database straight away, except the daily app-usage snapshots below; the database's short-term recovery copies expire within 7 days.
Activity history: daily totals of steps, energy burned, workouts and sleepWhile your account exists, or until you switch off "Save activity history" in Settings → Devices & calendar, which deletes it straight away.
Accounts created with "Continue without an account"The same: kept until you delete the data in Settings → Account → Delete my data. We do not delete inactive accounts automatically. These accounts have no sign-in, so if you remove the app without deleting the data first, it stays stored and we cannot link it back to you.
Data on your device: offline copy, AI coach conversations, calendar events, and activity and sleep readings other than the daily totals aboveUntil you log out, delete your account or remove the app.
Daily app-usage snapshots used to time reminders and emails (user ID, first name, platform, language, activity counts, which health source is connected)30 days, then deleted automatically — also after you delete your account.
AI requests held by the AI providersGoogle: 55 days. OpenAI: up to 30 days, longer only in the cases described in section 3.
Crash and error reports (Sentry)Up to 90 days.
App analytics events (Google Analytics)Event-level data up to 14 months, and the analytics identifier until up to 14 months after your last activity; summary reports that do not identify you may be kept longer.
Server logs, such as IP addresses and request times30 days.
Your email contact at BrevoUntil you delete your account. If you unsubscribe, we keep your address only to make sure we don't email you again.
Purchase, billing and referral recordsAs long as tax and accounting law requires. Referral records are kept for commission accounting; they hold no name or email, and after you delete your account the random ID they carry no longer matches any account. RevenueCat keeps the purchase history stored under your random user ID, with no name or email. Apple, Google Play and Stripe keep their own purchase records under their own policies.

9. Children

KcalScan is for adults aged 18 or over and is not directed to anyone younger. New users confirm that they are 18 or older and enter their date of birth during setup. If the date of birth on an account shows an age under 18, our servers refuse its AI requests, so nothing from it is sent to an AI provider; the rest of the account keeps working. If we learn in any other way that an account belongs to someone under 18, we record the account holder's date of birth on the account, so that our servers refuse its AI requests in the same way, and we delete the account when the account holder, or their parent or guardian, asks us to. If you believe someone under 18 has an account, contact us.

10. International transfers

Our database is in the European Union, but our server functions run in the United States, sign-in records may be stored there, and our providers — including Google and OpenAI for AI processing — may process data in the United States and other countries. Where data leaves the EU/EEA or the UK, we rely on recognised safeguards, such as the EU Standard Contractual Clauses included in our providers' data processing terms.

11. Changes to this policy

When we change this policy, we update the date at the top and, for significant changes, tell you in the app or by email. If a change adds an AI provider or a new category of personal data sent to AI, we will ask for your permission again in the app before sending anything under the new terms.

Contact

Questions about this policy or your data:

Email: tiago@kcalscan.app