PRIVACY POLICY

Privacy Policy.

Effective 1 October 2026

This Privacy Policy explains what information the Triffin app and its online service (together, the "App") collect, how it is collected and used, who it is shared with, how long it is kept, and the choices you have. Triffin F.Z.E ("we", "us", "our") is responsible for this information.

In short: we keep your account, your profile and your food diary on our server so the App can work across devices. The App's AI features send your meal photos, what you type, your profile and your diary numbers to outside AI services (Google's Gemini and Anthropic's Claude models, reached through OpenRouter, and Perplexity search), but only after you allow AI processing, and you can withdraw that at any time in Settings → AI processing. Photos you share publicly or use as your profile picture are always checked by an AI moderation model before others see them. If you link Apple Health, WHOOP or Strava, the activity the App reads from them is stored on our server to set your calorie budget, and is shared with an AI model only for daily tips, while they are on. We do not sell your information, show ads, or use third-party analytics or advertising tracking tools. The App is for people aged 18 and over.

Who we are

The App is operated by Triffin F.Z.E, B.C. 1309418, Ajman Free Zone, United Arab Emirates. For any privacy question or request, email support@triffin.app, or use Contact support in the App's Settings.

Information we collect

We collect the following information, either from you directly as you use the App, from the services you choose to connect, or from the sign-in provider you choose:

Some information stays only on your device and is not sent to us: your reminder settings (apart from the time of a reminder the App schedules, which a usage event records, and whether meal reminders are on, described above), the calendar events and reminders the App adds for your cooking plan and your choices for them, whether Apple Health sync is on, the list of samples the App has written to Apple Health (so it can update or remove them), your onboarding answers until you finish onboarding, and Apple's Declared Age Range answer. Ramadan mode is kept on your device too. While it is on, the App asks our server to count each day's meals from 06:00 to 06:00, and names the meal Suhoor or Iftar to our server when it picks your next meal and to the AI model that picks from a menu; our server does not store the setting, and keeps the names Suhoor and Iftar only in the text the menu model writes for a menu read, which we keep for 30 days. The App also works out on your device which of its own reminders to schedule and when, from your diary, your settings and your plan; for example, the time you usually have lunch is worked out on your device and is not sent to us.

How we use your information

We do not use your information for advertising, and we do not sell or rent it.

AI processing

The App's estimates, menu picks, recipes, captions, coaching, week review tips and daily tips come from AI models run by other companies. The App asks for your permission (AI processing) before any of your information is sent to them, and you can withdraw it at any time in Settings → AI processing. Allowing it also turns on daily tips, as described under Daily tips below, and withdrawing it turns them off. Without it you can still use the App by typing your meals' numbers yourself. Your health conditions, pregnancy and health note are never sent to an AI model without your permission, whichever version of the App you use.

Who receives it:

What each feature sends, when you use it:

Perplexity receives only search text: the name of a dish (as you typed it, or as the model read it from your photo) or of a packaged product, a restaurant's name and address, and, where you have told us about a health condition and allowed AI processing, the ingredient that condition concerns (for example sodium or added sugar), which can imply the condition itself. It never receives your name, email address, account ID, photos, meal notes or health note.

We do not include your name, email address or account ID in any AI request. However, a photo can show more than food, so avoid including people, documents or other personal information in your photos.

On every request, our server asks OpenRouter to use only providers that do not collect your data, meaning providers that do not store it or use it to train their models. The providers process the data to return a result to the App. OpenRouter's, Google's, Anthropic's and Perplexity's handling of the data they receive is also governed by their own terms and privacy policies.

For body photos specifically, we want to be exact about the limit of what we can promise. We do not store the photo, and we ask OpenRouter to route the request under a zero-retention policy to a single named provider, with no fallback provider. However, OpenRouter treats short-lived in-memory caching as something other than retention, and the Gemini endpoints this request can reach support that kind of caching. So the photo may be held briefly in Google's processing cache after it leaves us. That copy is outside our control and we cannot delete it for you. We tell you this in the App before the camera opens, and the estimate is optional for exactly this reason.

Whether or not you allow AI processing, a photo you share with other people (a shared meal or recipe, or a new photo on one) and a photo you set as your profile picture are sent on their own to a Google Gemini model, through OpenRouter, to check them against the Community rules before anyone else can see them. This check keeps the community safe and cannot be turned off for shared photos; photos you do not share are never sent for it. If the check cannot run, a shared post waits for a person on our team to review it, and a new profile photo is not accepted.

Daily tips

Daily tips are a Pro feature, written only while your account has Pro. The screen that asks for AI processing says what they read and who receives them, and allowing AI processing on it turns them on. If you allowed AI processing on an earlier version of that screen, which did not say so, the App asks you about daily tips separately, with the same information, and they start only when you tap Turn on tips. Their settings are in Settings → Daily tips.

Once a day, at the time you choose in Settings → Daily tips, our server sends Anthropic's Claude model, through OpenRouter: the meals you logged that day (dish, meal and time eaten), up to three patterns our server found in them, each with the figures that show it (worked out from those meals' calories, protein, fibre and free sugars, whether you picked them from a restaurant menu in the App, your targets and that day's calorie budget), the profile details described under AI processing including your health conditions and health note if you gave them, and, if you linked them, that day's steps and active energy and your workouts from Apple Health, WHOOP or Strava. If a reply fails our checks on its length, its punctuation, its reasons or the figures it quotes, the same request is sent once more.

The tip is stored with your account and shown in the App. Its notification never shows the tip or anything from your diary: only a short line, in your language, that says a note is waiting and, at most, whether it is about something that stood out, an idea for the day or what is going well. The tip itself appears only inside the App.

You can turn daily tips off at any time on the same screen, and turning off AI processing in Settings → AI processing turns them off too. Turning them off stops the daily request and cancels any tip notification not yet sent.

Location and restaurant search

The App asks for location access the first time you open restaurant search, when you tap Find it near you on a next-meal suggestion you choose to buy, or on the budget page when you set up a week in Cook, not before. You can decline and still search by typing a restaurant name, a city or both. You can change location access at any time in your device or browser settings.

When you search for a restaurant, your search text and language are sent through our server to Google Maps Platform (Places API) to find matching restaurants. If you allowed location, your current latitude and longitude are sent too, and results are sorted by straight-line distance. Without location, the two-letter region code of your device's language settings (for example FR) is sent instead, so results come from your country. We do not store your coordinates or track your location in the background.

On the next-meal suggestion on Today (Pro), Buy it shows the nearest restaurant that serves the suggested dish. To find it, the App runs the restaurant search described above with the dish's name as the search text, and only when location is allowed: it then sends your device's current position with the search. Without location, it shows Find it near you, which asks for access. The position is sent with that search only and is never saved: while the App is open, your device keeps it in memory only to search again once you have moved more than 500 metres. The suggestions themselves are picked without it. The App does not order food: Log it adds the recipe to your diary, as logging a recipe from Cook does.

Cook prices a week's shopping in the currency of the country you are in. When you set up a week, the App reads your position if you have already allowed location, and asks for access on the budget page if you have never answered. Your device's own geocoding service (Apple's on iPhone, Google's on Android) turns the position into a country, and only its two-letter code (for example AE) reaches our server, where it is stored with that week's plan. Without location, the plan is priced for the country of your previous plan or the region code of your device's language settings. Your coordinates are never sent to our server for this.

The next-meal suggestions on Today (Pro) favour the cuisines common in the country you are in. If you have already allowed location, the App works out that country in the same way, and only its two-letter code is sent with the request for suggestions. It is used to order them and is not stored. The App never asks for location for this. Without location, the suggestions follow the country your device's time zone or region setting points to.

When you select a restaurant, its name, address and place identifier are used to look up that branch's menu, including through Perplexity search. The restaurant name and the menu reading are saved as a menu read. Google processes search requests under its terms and privacy policy: https://policies.google.com/privacy and https://maps.google.com/help/terms_maps/.

Apple Health

Health sync is available only in the iOS app and is off until you turn it on in Settings or link Apple Health, during onboarding or under Settings → Connections. Before the Apple Health permission screen, the App tells you what it will read, that it is synced to our server, and when it is shared with an AI model. On iPhone, with your permission, the App:

The App asks for no other Apple Health data types.

What leaves your device: the day's steps and active energy and your latest weight are synced to our server when you link Apple Health and then about every 30 minutes while the App is open. We store the steps and active energy with that day's activity, and the weight with your account. We use them to calculate each day's calorie budget and to cost your workouts. When Apple Health has a weight from today, the App also offers it on Today's weigh-in; it is saved as a weigh-in only if you save it.

Who else receives it: Apple Health data is shared with a third party only in these cases. While daily tips are on, that day's steps and active energy are sent to Anthropic's Claude model through OpenRouter, as described under Daily tips. The day's calorie budget, which includes the calories you earned from activity, is one of the numbers recipe suggestions work from. And when you add a note or your own figure to a workout you log by hand, your weight goes with it to the AI model, and that weight comes from Apple Health if it is the only one we have.

Apple Health data is not used for advertising, marketing or data mining, is not sold, and is not stored by us in iCloud.

You can turn sync off in Settings, or unlink Apple Health in Settings → Connections. Either one stops the App from reading or writing health data and deletes the Apple Health activity and weight stored on our server. You can also review or revoke the App's permissions in the Health app on iPhone. Data the App has already written to Apple Health stays there until you delete it in that app.

WHOOP and Strava

You can link a WHOOP or Strava account in Settings → Connections, so your exercise can add to the day's calorie budget. Linking opens WHOOP's or Strava's own sign-in page, where you approve the access.

The access tokens WHOOP and Strava give us are stored on our server, encrypted, because exchanging and refreshing them needs a secret that cannot be kept inside the App, and because the day's budget is calculated on our server. They are used only to read the data described above. The activity we pull is stored with your daily activity until you unlink the service or delete your account.

While daily tips are on, the workouts and active energy from WHOOP or Strava are part of what is sent to Anthropic's Claude model, as described under Daily tips.

Unlinking, in Settings → Connections, deletes the tokens and the activity pulled from that service from our server at once, and asks WHOOP or Strava to revoke the App's access. If WHOOP cannot be reached, our server keeps retrying the revocation for up to 7 days. If Strava cannot be reached, you can remove Triffin from the apps connected to your Strava account in Strava's settings. The calorie budgets already calculated for past days stay with your diary. Deleting your account unlinks both.

Health-related data and your consent

Some of what the App can hold says something about your health: the health conditions and health note you give us, whether you are pregnant or breastfeeding, your body measurements, activity from Apple Health, WHOOP or Strava, and a body photo if you use the photo estimate. In many places, including the European Union and the United Kingdom, this is treated as a special category of personal data, which may only be processed with your explicit consent. We ask for that consent wherever you live.

We ask for it at the moment it applies rather than burying it here. The health questions can be skipped, and your answers are saved only when you tick the consent box, which explains that they are stored on our server and sent to AI services only if you allow AI processing. Linking Apple Health shows you what is read and shared before the permission screen. The body-fat question can be skipped, and the photo estimate shows you what is sent, to whom, and what we cannot control, before the camera opens. You have to accept that screen for the camera to open at all, and it is shown every time rather than remembered, so your answer is always a current one.

You can withdraw consent at any time, and withdrawing it is not made harder than giving it: remove your health details in Settings → Health; remove your body-fat value in Settings → Body, which deletes the percentage and range, removes the percentage from your past weigh-ins and recalculates your protein target without them; unlink Apple Health, WHOOP or Strava in Settings → Connections; and turn off AI processing in Settings → AI processing or daily tips in Settings → Daily tips. Withdrawal does not undo processing that already happened, and it cannot reach a copy held in a third party's processing cache, which is why that limit is stated above and in the App.

Stored encrypted in our database, under keys kept separately from it: in your profile, your health conditions, health note, pregnancy or breastfeeding, allergies, sex, birth year, height, weight, target weight and body-fat values; the weight and body fat of each weigh-in; the note on a workout you log by hand; the WHOOP, Strava and Apple sign-in tokens; and a rejected daily tip. Stored without this extra encryption: the rest of your profile answers (your goal and weekly pace, eating patterns, note on how you eat, dislikes, cuisines, habits you want to watch, coach tone, activity level, training sessions, language and region), the copy of your sex, age, height, weight and targets kept with your account settings for the daily calculations, the weight read from Apple Health, your meal logs, your activity figures, and your social content.

Subscriptions and payments

Subscriptions and top-ups are sold through Apple In-App Purchase on iPhone and through Google Play's billing system on Android. Apple or Google processes your payment; we never receive your payment card details.

We use RevenueCat to manage subscriptions. The App's RevenueCat software connects to RevenueCat to check your subscription status and available plans, and when you sign in we link your purchases to your Triffin account ID in RevenueCat. Our server also asks RevenueCat whether your account is subscribed and which top-ups it has bought, so it can count your credits. RevenueCat's handling of data is also described in its own privacy policy.

Sign-in providers

Google and Apple authenticate you when you sign in and share the account information described above with us. Their handling of your data is governed by their own privacy policies.

Notifications, camera and photos

The App schedules most of its notifications itself, on your device: reminders to log your lunch and your dinner, only on days you have not logged that meal yet; a recap of your week on Mondays; a weekly reminder to weigh in, once you have weighed in since onboarding; a reminder when your free photos come back; and, before you have saved a meal, a reminder on your first and third day. They follow your choices in Settings → Notifications: at most two a day, none between 22:30 and 08:00 unless you chose that time yourself, and a kind you have not answered five times in a row pauses for 14 days. If you allow notifications, we also store the push token Expo issues for your device and send these through Expo and Apple's push service (or Google's, on Android), none of them between 22:30 and 08:00 your time:

The App uses the camera and photo library only when you take or choose a photo yourself: a meal photo, a menu photo, a recipe photo, a profile photo, or, if you choose the optional body-fat estimate, one body photo. It never opens the camera on its own. A body photo taken for an estimate is never written to your device's storage or photo library. You can change camera, photo library and notification permissions at any time in your device settings.

When you choose to share a meal card or photo to another app, that app receives what you share.

Within Triffin, a shared meal's photo, dish name, calories and public caption are visible according to the creator's current profile audience. When you share a meal or a recipe it also appears in the feed of the people who follow you, in the order it was shared, rather than only on your profile; sharing it again moves it back to the top of their feed. Nothing you have not shared ever appears there, and the feed is ordered by time alone. Find people and an empty feed suggest profiles to follow: first the people whose recipes you saved, then accounts we feature and public profiles that shared something in the last 14 days. Only public profiles are suggested, so if your profile is public and you shared something recently, it can be suggested to other people; a private profile never is. Comments, and the number of likes on the meal and on each comment, are visible to people who can access the meal. Liking, commenting on, reposting or saving another person's meal notifies its creator and identifies your social profile, and liking a comment notifies the person who wrote it. You can mention another account in a comment only if you follow each other. A mention links to that account's profile, so people who can see the comment can tell that you follow each other, and the person you mention is notified only if they can see the meal. Your Saved meals collection is visible only to you, even though individual saves notify creators. Blocking and access restrictions also apply to these features.

Reports: when you report a profile, post, comment or repost, the people who run Triffin see the report, the reported content and the reported account; the person you report is not told who reported them. The first report of an item sends an email alert to our team; the alert contains no user content. A notice of illegal content sent to us by email (see our Terms of Use) is kept in our email, with the sender's name and email address, for as long as we need it to handle the notice and any dispute about it; the person it concerns is not told who sent it.

Newsletter and blog

The articles on our blog at triffin.app open once you subscribe to the Triffin newsletter with your email address. When you subscribe, our server stores that address, the time you subscribed and the article you subscribed from. We use the address only to send you the newsletter. Subscribing does not create a Triffin account and is not linked to one.

Subscribing also places a cookie named triffin_reader in your browser, which keeps the blog's articles open in that browser for one year. It holds the time you subscribed and a signature showing that our server issued it, not your email address. Our website sets no other cookies and uses no analytics or advertising cookies.

Your address stays on the list until you unsubscribe. To unsubscribe, email support@triffin.app and we delete the address. Deleting your account in the App does not remove it, because the list is kept apart from App accounts.

Who we share information with

We share information only as described in this policy:

We share information with these service providers only so they can perform services for us, and they are required to protect it in a way that is consistent with this Privacy Policy.

The App does not contain advertising, third-party analytics or cross-app tracking tools. The usage events described above are counted on our own server and are not shared with anyone.

How long we keep information

Deleting your account and data

You can delete your account in the App's Settings (Delete account). If you have a subscription, the App first reminds you that deleting the account does not cancel it. When you delete your account, we straight away: sign you out on all devices; revoke the App's access to your Apple ID if you use Sign in with Apple (retrying if Apple cannot be reached); unlink WHOOP and Strava and ask them to revoke our access; delete your activity, daily budgets and daily tips, what you marked "Not for me" and any next-meal suggestions we still hold from earlier versions of the App, your push tokens and the Apple Health data we hold; delete your social notifications; and mark your account, meal logs (including saved photos), weekly pages, week reviews, menu reads, recipes and social profile as deleted, withdraw the meals and recipes you shared, and hide your comments, likes and reposts, so none of it appears in the App or to anyone else.

For 30 days after deletion, you can restore your account and logs by signing in again and choosing to restore it. After 30 days, the account can no longer be restored.

After the 30 days, your account and everything held under it are permanently erased from our database: your profile including the health fields, your weigh-ins, meal logs and their photos, corrections, weekly pages, week reviews, menu reads, recipes, credits, social profile, posts, comments, reposts, likes, saves, follows, blocks, reports you filed and reports about you, strikes, bans and moderation decisions, your usage events, the record of the notifications we sent you, and any App Store notification matched to your account. Other people's comments that mentioned you keep their words but no longer link to your account. To have this done sooner, email support@triffin.app from the email address linked to your account, and we will erase it and confirm when this is done.

Three records are deliberately kept after that, and why:

If Apple tells us that a parent or guardian has withdrawn consent for an account's use of the App, we disable the account as soon as we can match the notification to it (our team reviews any we cannot match automatically). A disabled account cannot be signed into or restored, and it is deleted in the same way.

Deleting your account does not cancel your subscription (manage it in Settings > Apple Account > Subscriptions on iPhone, or in Google Play > Payments & subscriptions > Subscriptions on Android), and it does not delete data held by Apple, Google, RevenueCat, WHOOP or Strava under their own policies, or data the App has written to Apple Health.

Your choices and rights

Depending on where you live, you may have additional rights over your personal information, such as the right to object to or restrict certain processing, and the right to complain to your local data protection authority. We will not treat you differently for exercising your rights.

Security

Your logs are only returned to the signed-in account they belong to. Session tokens are kept in the operating system's secure storage on your device and only as a one-way hash on our server. A password is stored only as a salted one-way hash. The fields listed under Health-related data are encrypted in our database. No method of storing or transmitting data is completely secure, so we cannot guarantee absolute security.

Children

The App is only for people aged 18 and over. It asks for your birth year before any profile question and does not let anyone younger continue, and on iPhone it also checks Apple's Declared Age Range. When either shows that you are under 18, the App deletes your account, in the same way as Delete account in Settings. We do not knowingly collect personal information from anyone under 18. If you believe someone under 18 has given us personal information, contact us at support@triffin.app and we will delete it.

Where information is processed

Our server and database are hosted by Render in the United States. Our other service providers, including OpenRouter, Google, Anthropic, Perplexity, RevenueCat, Expo, Hostinger, WHOOP and Strava, may process information in the United States and in other countries. Crash reports are kept by Sentry in the European Union (Germany).

Changes to this policy

We may update this Privacy Policy. When we do, we will change the effective date above, and for material changes we will let you know in the App or by other reasonable means before they take effect.

Contact

Triffin F.Z.E, B.C. 1309418, Ajman Free Zone, United Arab Emirates. Email: support@triffin.app.