Mains — Privacy Policy

Effective: 3 August 2026 · Last updated: 3 August 2026 · Applies to: Mains for iOS

Mains is a workout and food logging app. This policy describes exactly what it collects, what leaves your phone, and who receives it. It is written from the app's source code, not from a template — every statement here corresponds to a code path that exists today.

1. Who is responsible

Mains is published by Yevhenii Skrebtsov, Truskavets'ka 40A, apt. 33, 61067, Kharkiv, Ukraine, the data controller for the processing described here.

Contact for any privacy question or request: support@mains.app

2. The short version

3. What stays on your phone (which is nearly everything)

Mains is offline-first. Your log lives in a SQLite database on the device and the app reads it directly; there is no round trip to a server to show you your own data.

Stored only on your device today:

CategoryExamples
Profiledate of birth, sex, height, locale, time zone, units, meal names, dietary preferences
Goalscalorie and macro targets, named goal profiles, per-day assignments
Workoutsroutines, folders, exercises, performed workouts, every set (weight, reps, timestamps)
Foodcustom foods, diary entries with their macro snapshots, saved meals, water logs
Bodyweigh-ins and body measurements
Apple Healththe daily steps / sleep / energy / exercise-minutes / heart-rate rows imported from Health

None of it is uploaded. The sync subsystem is built but is not configured in the shipped app, so the upload path has never run.

There is no backup. Your log exists in one file on one phone. If you lose the phone, reinstall the app, or sign out, that data is gone and we cannot recover it — we never had a copy. Use You → Export my data regularly if your history matters to you.

4. What leaves your phone, and to whom

There are exactly seven outbound channels in the app. This section lists all of them.

4.1 Your account — Supabase

Signing up sends your email address and password to Supabase, which hosts our authentication service and database. Supabase stores the email address and a hash of the password; we never see or store the password itself. Your session token is kept in the iOS Keychain on your device.

Region: eu-central-1 (AWS Frankfurt, Germany — within the EU/EEA).

Because sync is off (§3), Supabase holds no rows of your logged data — only the account record itself.

4.2 The AI features — our server, then Anthropic

Mains has eight AI capabilities. Each one is a single request carrying only the thing you gave it, plus your login token so we know the request is from a real account.

FeatureWhat you doWhat is sent
label_parsePhotograph a nutrition labelthe photo
food_photoPhotograph a mealthe photo
menu_parsePhotograph a restaurant menuthe photo
plan_parsePhotograph a training plan, or pick a PDF from Filesthe image or the PDF you chose
weight_parseImport a weight historya screenshot, or pasted text, or a CSV's header + up to 30 sample rows
nl_foodDescribe a meal in wordsyour text
food_describeDescribe a food to build a nutrition panelyour text
ping(connectivity check)nothing about you

Three details that are easy to miss and that you are entitled to know:

What is NOT sent with an AI request. The request carries your locale, your time zone and the app version, and nothing else about you. Your name, email, account id, date of birth, sex, height, weight, goals and diary are never included in a prompt.

What our server keeps. Nothing. The image or text is held in memory for the length of the request and is not written to any database or file store. Our server log records one line per request containing a request id, a truncated 8-character account id, timings, token counts and a status code — never the content of your request.

Anthropic processes the request as our sub-processor and returns the reading. See §6.

4.3 Food search — our server

When you type in the food search box, the search text is sent to our database with your login token, and matching foods come back.

4.4 Barcode lookup — our server

Scanning a barcode sends the scanned number (GTIN) with your login token.

4.5 Open Food Facts — contacted directly by your phone

When our own food catalog does not have what you scanned or searched for, your phone contacts Open Food Facts directly to ask. The request carries the barcode or the search words, your device's IP address (unavoidable for any internet request) and the identifier Mains/1.0 (mains.app). It does not carry your login token, your email, or your account id — Open Food Facts cannot connect the query to you as a Mains user.

This is a direct connection between your device and Open Food Facts. We do not control or receive their server logs. It only fires for a search of 3+ characters when our own results came up thin, and for barcodes our catalog missed.

4.6 App updates — Expo

Mains ships JavaScript updates over the air. At every cold start the app asks Expo's update server (u.expo.dev) whether a newer version exists. That request carries an install identifier, the app and runtime version, and your IP address. It carries nothing about your account or your data, and the install identifier is never joined to your account.

4.7 Apple Health — read-only, and it does not leave the phone

If you connect Apple Health, Mains reads exactly eight kinds of data: body mass, step count, sleep analysis, active energy burned, basal energy burned, Apple exercise time, resting heart rate, and heart-rate variability (SDNN).

You can revoke Health access at any time in iOS Settings → Privacy & Security → Health → Mains.

4.8 Account deletion — our server

Tapping Delete account sends only your (freshly re-authenticated) login token. No other data is attached to the request.

4.9 Cloud sync — currently off

The app contains a full sync subsystem that would upload your log to Supabase. It is not enabled in any shipped build, so it has never run. If we ever turn it on, this policy will be updated before the change ships, and the App Store privacy labels will be updated with it.

5. What we do NOT do

Each of these is verifiable by inspecting the app, not merely promised:

6. Who else processes your data (sub-processors)

ProcessorWhat they receiveWhy
Supabaseyour email address, password hash, session tokens; your login token on food-search, barcode, AI and delete requestsauthentication, the food catalog, and hosting the AI proxy
Anthropicthe photo, PDF, or text you handed to an AI feature, plus your locale/time zone/app versionreading labels, meals, menus, plans and weight histories
Open Food Factsa barcode or search words, and your device's IP addresslooking up packaged foods our catalog lacks
Expo (EAS Update)an install identifier, app/runtime version, IP addressdelivering app updates
AppleApp Store account and device-level data governed by Apple's own policydistributing the app; HealthKit lives entirely on your device

Which AI models. Requests are answered by Anthropic's claude-haiku-4-5 and, for higher-resolution reading and second-look rechecks, claude-sonnet-5.

Anthropic processes these requests under their commercial API terms and their published data retention policy. We have no separate arrangement that would allow your content to be used to train models.

7. AI outputs are estimates you confirm

Mains is not a medical device and gives no medical advice. Calorie and macro figures — whether from a database, a label or an AI estimate — are approximations. Do not use them to manage a medical condition without professional advice.

8. How long we keep things

DataRetention
Your log (workouts, food, weight, health)On your device, for as long as you keep the app installed. Deleting the app deletes it.
Account record (email, password hash)Until you delete your account (§9), then removed immediately.
AI request contentNot retained by us. Held in memory for the request only; never written to a database or file store.
Server request logsShort-lived operational logs with no request bodies: request id, truncated account id, timings, token counts, status.
AnthropicPer Anthropic's own retention policy for API requests.
Open Food Facts / ExpoPer their own policies; we receive nothing back from them about you.

9. Your rights, and how to use them in the app

Under the GDPR (and comparable laws elsewhere) you have the right to access, correct, export and erase your data, and to object to or restrict processing. Two of these are one tap away:

Export your data (portability)

You → Export my data. Mains assembles every row it holds for you — profile, goals, workouts, routines, foods, diary, saved meals, water, body metrics and imported Health rows — into a single JSON file and hands it to the iOS share sheet, so you can save it to Files, email it, or send it anywhere you like. Nothing is uploaded to produce it.

Delete your account and everything in it (erasure)

You → Delete account. You re-enter your password, type DELETE to confirm, and are offered an export first. On confirmation Mains deletes every server-side row belonging to you, deletes your authentication account, and wipes the local database on the device.

The deletion is immediate and irreversible. We keep no copy and cannot restore it.

Everything else

For access, correction, restriction, objection, or a complaint, write to support@mains.app. We answer within 30 days. You also have the right to complain to your national data protection authority.

10. Age

Mains is for people aged 16 and over. The app asks for your date of birth during setup and will not let you continue if you are under 16. We do not knowingly collect data from anyone younger; if you believe a younger person has an account, write to support@mains.app and we will delete it.

11. International transfers

Mains's sub-processors (§6) may process data outside your country, including in the United States. Where that happens we rely on the transfer mechanisms in those processors' own terms — for Anthropic and Supabase, their standard data processing agreements and Standard Contractual Clauses.

12. Security

No system is perfectly secure, and the honest caveat that matters most for this app is the one in §3: because your log is device-local, its security is your device's security.

13. Data sources and attribution

Mains's food catalog is built from public data:

Full attribution and licence terms are on the attributions page that ships beside this one (attributions.html).

14. Changes to this policy

If we change what the app collects or who receives it, we will update this page and change the “Last updated” date. A change that materially expands processing — turning on cloud sync being the obvious one — will be announced in the app before it takes effect.

15. Contact

support@mains.app