cat privacy.md
Privacy Policy
Last updated: 2026-06-10
Local first
Calsheet works without an account. In guest mode your diary, food library, goal profile and preferences are stored only on your device. We receive none of it.
What we collect with an account
Signing in is optional and only needed for sync. If you sign in, we store: the identifier and email your account provides, and the records you sync — diary entries, foods, your goal profile and preferences.
Where synced data lives
On your device first, and — once you sign in — on a single EU-hosted server on kirillin.tech infrastructure. We do not access your records except to serve your own requests or comply with the law.
Open Food Facts lookups
Product search and barcode scans are proxied through our server to Open Food Facts. Only the search text or the barcode is sent — no account data, no diary contents, nothing that identifies you.
What we don't do
- We don't show ads.
- We don't sell data.
- We don't share data with brokers or advertisers.
- We don't use third-party analytics tied to your identity. Site analytics are self-hosted Umami (analytics.kirillin.tech), cookieless, anonymous and aggregated.
Authentication
Sign-in is handled by Zitadel at auth.kirillin.tech. If you sign in with an external provider through Zitadel, only the identifier it shares is stored.
AI connector (MCP)
If you connect Claude or another MCP client to your account, that client reads and writes your diary through scoped tools you can review. Disconnect anytime from the client's connector settings.
Your rights
You can export everything as JSON from Settings at any time. You can delete your account in-app, or write to us and we'll do it for you. Deletion removes your synced records from the server.
Contact
Questions or data requests: hello@kirillin.tech.
Not medical advice
Calsheet is not a medical device and does not provide medical or dietary advice. Calorie and macro figures are estimates. Consult a qualified professional before changing your diet, especially if you have a health condition.