Legal
Privacy policy
How Soma uses information in the app and on this website.
Your profile and journal are stored on your iPhone. Apple Health access is optional. With your cloud AI permission, selected content and context are sent through Cloudflare Workers to Google’s Gemini API for nutrition estimates and answers. Google processes these requests under its billing-enabled Paid Services terms. Cloud requests have retention described below. Manual logging works without cloud AI.
1. What Soma does
Soma is an iPhone app for adults aged 18 and older to track food, water, protein, calories, and steps. There is no Soma account or journal sync service. We use information to provide logging, history, exports, optional personalized AI answers, subscription management, support, and service security.
We do not sell your personal information, run advertising in Soma, or use your Health data for advertising, marketing, or unrelated data mining. Nutrition estimates are general information, can be inaccurate, and are not medical advice.
2. Information stored on your iPhone
Soma stores the profile and goals you enter, including an optional name and profile photo, age, sex, weight, height, activity level, measurement preferences, and daily targets; food, water, steps, and history records; and AI journal entries, including selected images and saved voice memos. These support your progress, history, editing, and exports.
The app uses local iOS storage and files. Its local profile, history, journal photo, and voice files are excluded from automatic device backups because they contain personal health information. Copies in older backups or exports you control are separate. Soma has no account backend holding a synchronized copy of your journal. Local storage does not mean information included in an authorized AI request stays on the device.
3. Apple Health and HealthKit
With the Health permissions you choose, Soma reads step count to show activity and writes dietary energy, protein, carbohydrates, fat, and water from your logged food and drink. Separate weight and height controls let you explicitly import the latest readable body mass and height into your profile after reviewing the measurements and their dates.
When authorized, confirming a weight or height edit in Edit Profile can write that measurement to Apple Health. Imported measurements are not written back as new samples. Details supplied in chat are saved locally; chat does not itself write body measurements to Health. Apple Health holds its own copies under your Apple settings, separately from Soma’s local journal.
Health access and cloud sharing are separate choices. Granting Health access does not by itself authorize sharing with Google. When you separately allow cloud AI, saved Health-derived step totals and weight or height you have imported into your profile may be included in the chat context sent through Cloudflare to Google Gemini for nutrition and personal progress questions. This is selected context, not access by Google to your entire Health database.
We do not send Health information for advertising, marketing, or general-purpose model training. Google’s Paid Services data-processing terms apply to AI content; its security and abuse-monitoring retention still applies. Health information is not sent to RevenueCat for subscription management.
You can change Soma’s Health permissions in the Health app or iPhone Settings. Withdrawing access stops the related reads and writes going forward; manual logging remains available. It does not erase previously imported profile values, previously written Health samples, or content already sent to an AI provider. Reset All Data attempts to remove only samples created by Soma, including its body measurements; it does not delete other apps’ Health data. You can review or remove remaining samples in the Health app.
4. Google Gemini: data shared and purpose
Soma uses Google’s Gemini API, accessed through a Google Cloud project with billing enabled, as its external AI processor. Requests pass through Soma’s proxy hosted on Cloudflare Workers. Google processes the request content to interpret meals, transcribe recordings, estimate nutrition, answer questions, and return results. Soma does not host or train the Gemini model.
| Information sent through Cloudflare to Google | Why it is sent |
|---|---|
| Typed meal notes and selected meal photos | Identify food and drink and estimate calories and nutrients. Only images selected for that request are included. |
| Voice recordings or recognized speech text | Transcribe your chosen recording and interpret the spoken food or drink log. Google’s resulting transcript may be sent in a follow-up request to estimate nutrition. |
| Chat messages and up to six recent conversational turns | Answer the current question, understand references to recent messages, and identify a requested log, correction, or profile update. |
| Saved food and drink names, descriptions, logging times, location labels, nutrition details, dated calorie/macro/water/step totals, lifetime aggregates, and current goals | Answer questions about your saved progress and history and correct a selected saved entry. Steps include the latest saved Apple Health readings. Recent history and aggregates are normally included; an older-date question can retrieve a bounded range of saved records. |
| Optional profile age, sex, weight, height, activity level, and measurement-unit preference | Personalize chat answers. Weight and height can include values you explicitly imported from Apple Health. Chat may ask for missing details and save current details you explicitly provide; it does not automatically change your daily goals. |
| An on-device nutrition estimate and the associated meal description | Check the estimate and return revised nutrition figures when appropriate. |
Your saved profile name, profile photo, and full library of journal photos or recordings are not automatically attached as chat context. Messages, selected images, or recordings may nevertheless contain personal information you choose to include. Missing history is not treated as proof that you ate or drank nothing.
Voice, photos, and on-device features
When voice audio is uploaded, Soma sends the recording to Google without the device recognizer’s transcript. Google transcribes that audio, and a subsequent request analyzes those model words. An explicitly selected transcript-only route may send recognized speech text instead. A failure to prepare an audio upload stops that attempt rather than silently substituting the device transcript. Apple speech recognition may also process audio through Apple’s services depending on device support and Apple settings.
Photos normally use Google Gemini. Supported on-device photo analysis can be tried first, but a cloud fallback remains possible if you have allowed cloud AI. Text estimates can start on-device and receive a cloud nutrition check. Conversational chat uses the cloud; local daily status answers remain available. An on-device-first setting is not a guarantee that a request will stay on the iPhone.
Google’s use and retention
Under the Gemini API Paid Services terms, Google does not use submitted prompts, files, or responses to improve its products. It processes this content under its data-processing terms. This is the developer API with billing enabled, rather than the consumer Gemini chat app or an unpaid API project.
Google’s abuse-monitoring documentation states that it retains prompts, additional context, and generated responses for 55 days to detect and prevent policy violations, maintain service safety and security, and meet required legal or regulatory disclosures. Flagged content can be reviewed by authorized Google personnel. Abuse-monitoring data is used for policy enforcement, including models used specifically for that enforcement, rather than general-purpose model improvement. We do not promise zero retention or the absence of human review.
Google also processes service usage and technical information needed to operate and secure the API, such as token counts, operational status, safety-filter events, authentication information, and network metadata, under its applicable terms. Google receives the connection from our Cloudflare proxy; the Worker does not deliberately forward your iPhone’s source IP as part of the AI content. Cloudflare receives the original app connection, as explained below.
Your permission and choices
Before a cloud AI request, Soma requires an explicit cloud-sharing decision and separate adult confirmation. The permission screen describes the content and purpose. Earlier grants are reviewed again when the app expands the data included, such as saved history or optional profile details. This policy identifies Google Gemini and Cloudflare as the recipients.
Choosing Not now, or leaving the permission screen without allowing sharing, blocks cloud requests, including background nutrition checks and cloud fallbacks. You can review the decision from the AI tab or turn off Cloud AI sharing in Settings → AI & Siri. Manual logging, local daily status answers, Siri water logging, and supported on-device analysis remain available. Siri meal logging requires prior cloud permission.
Turning cloud sharing off stops new AI requests; it cannot withdraw a request already processed or erase providers’ retained copies. Camera, microphone, speech, location, and Health permissions are additional iOS choices, not substitutes for cloud AI permission.
5. Cloudflare Workers and Apple App Attest
Cloudflare hosts the proxy that receives and forwards authorized AI content to Google and returns the response. It processes request bodies while handling them and connection information such as IP address, request URL, time, and technical service metadata to deliver and secure the service. The Worker’s application code does not persist or print meal descriptions, Health/profile content, photos, recordings, chat bodies, or Gemini responses.
Apple App Attest helps verify that cloud requests come from a genuine Soma installation and prevents forged or replayed requests. Apple processes key-attestation requests. The proxy receives and verifies installation-key identifiers, public keys, Apple attestation evidence/receipts, app and environment information, and signed request assertions. It retains the public-key record, registration evidence, app/environment metadata, and request counter in Cloudflare Durable Objects for ongoing verification and replay prevention. These records identify an installation; they are not your name or an advertising identifier.
The Worker hashes the connecting IP for rate limiting. A hashed IP is still security-related data; we do not describe it as anonymous. Registration challenges expire after three minutes and request challenges after one minute. Rate-limit windows are normally one minute, with a one-hour registration limit. Expired challenge and rate-limit records are removed during later challenge processing.
Installation-key records currently have no automatic expiry. Resetting local app data, turning AI off, or uninstalling does not automatically delete those server records. See retention and deletion for how to request review of information we can identify and control.
Cloudflare’s operational logging is enabled. It can retain invocation metadata and fixed diagnostic reason codes; the Worker does not deliberately log private content. Cloudflare currently documents standard Workers Logs retention of three days on its Free plan or seven days on its Paid plan. Other Cloudflare service/security records follow its applicable service terms. See Workers Logs retention and Cloudflare’s privacy policy.
AI transport uses HTTPS. App Attest verifies requests; it does not hide content from Cloudflare or Google when they process it and does not mean that cloud AI has no retention.
6. Apple, RevenueCat, and other device services
| Service | Information, purpose, and choice |
|---|---|
| Camera and photo selection | Used when you choose to capture or select a meal image. A chosen image can be saved in your journal and sent through Cloudflare to Google for AI analysis with cloud permission. |
| Microphone and Apple speech recognition | Used for voice logging and transcription with permission. A recording can be saved locally and sent for the cloud processing described above. Apple speech recognition can involve Apple’s services depending on your device and settings. |
| Location and Apple geocoding | With permission, iOS location and reverse geocoding help add a city or area label to an entry. Saved location labels may later enter authorized AI history context. Soma does not use location for advertising. |
| Notifications | Local reminders are scheduled on your device if you turn them on. |
| Spotlight and Siri search | Soma may index recent saved meals so you can find your logs in device search. Deletion updates the index; Reset All Data requests removal of Soma’s system search data. |
| Apple StoreKit | Apple handles purchases, payments, and subscription status. Soma uses verified transaction and entitlement information to provide Pro and restore purchases; it does not receive your payment-card details. |
| RevenueCat | The subscription SDK processes an automatically generated app-user identifier, Apple purchase/receipt and subscription information, and technical information such as app/SDK/OS versions and storefront/locale. This supports offerings, purchase reporting, restoration, subscription status, and subscription analytics. Soma does not supply profile, Health, meal, photo, voice, or chat content to RevenueCat. Automatic device-identifier collection and SDK diagnostics are disabled. See RevenueCat’s privacy policy and data-processing agreement. |
Apple’s platform services handle their own information under Apple’s privacy policy. A subscription or security identifier can exist even though Soma has no account or journal sync service.
7. This website and support email
This static website is hosted by Vercel. Its files contain no analytics script, ad tracker, contact form, or site-set cookie. Vercel processes visitor request details, including IP address, browser/system information, requested page, and access time, to deliver and secure the site under its privacy notice. Visiting this site does not submit your Soma journal to Google.
If you email us at our Gmail address, we and our email provider, Google Gmail, receive your email address and the message and attachments you choose to send. We use the exchange for support and privacy requests, and retain it as needed to resolve the request and meet legal obligations. This support email processing is separate from the Gemini API’s 55-day abuse-monitoring period. See Google’s privacy policy. Avoid sending sensitive health details unless necessary.
8. Retention, deletion, and your choices
| Record or copy | Retention and removal |
|---|---|
| Local profile, history, photos, and voice files | Remain until you delete them, use Settings → Reset All Data, or remove the app. Reset deletes in-app profile/journal records and saved voice files. Older device backups and copies you exported are separate. |
| Apple Health samples | Remain in Health until removed there or successfully removed by Soma. Reset attempts to remove only Soma-created samples; other apps’ records remain. Withdrawing Health access does not erase earlier samples. |
| Google Gemini request content and responses | Google documents 55-day abuse-monitoring retention, as described in section 4. Turning cloud sharing off or resetting Soma does not erase Google’s retained logs. Applicable legal obligations can affect deletion. |
| Cloudflare proxy security records | Installation-key records and replay counters have no automatic expiry. Challenges expire after one or three minutes; rate-limit windows after one minute or one hour. Expired short-lived records are pruned on later challenge processing. Local reset does not revoke a server key. |
| Cloudflare operational logs | Standard Workers Logs are retained for three days on Free or seven days on Paid under the currently documented service limits. Platform security records are governed by Cloudflare’s terms. The Worker does not deliberately log private request content. |
| Apple and RevenueCat subscription records | Retained to manage purchases, renewals, restoration, reporting, and applicable obligations under their service/data-processing terms. A local reset does not delete purchase history or cancel Pro. RevenueCat deletion requests can be directed to us for review; deleting a customer record does not cancel the Apple subscription. |
| Vercel website request records | Vercel retains information for the minimum period needed for its legal/contractual obligations and legitimate service purposes, then deletes or anonymizes it under its privacy notice. These records are separate from the app’s journal and its reset. |
| Support emails and attachments | Retained as needed to resolve the request and meet legal obligations. Contact us to request access, correction, or deletion of information we hold. The Gemini API retention period does not apply to email. |
| Exported CSV files | Remain wherever you save or share them until you delete them there. The destination you choose handles that copy; a Soma reset cannot remove it. |
Reset All Data preserves Apple-managed subscription status and the consumed AI scan balance. Follow Data choices to export or reset Soma, revoke cloud permission, manage Health access, and cancel Pro through your Apple Account.
Depending on where you live, you may have rights to request access, correction, deletion, portability, or restriction of personal information we control. Email us for these requests, including identifiable proxy security or RevenueCat records. We will explain what we can identify and control, any verification needed, and applicable legal limits. There is no Soma account, and we may be unable to match an installation key or provider log to an email address alone. Do not send private signing keys, security assertions, or your full health history.
We cannot promise immediate deletion of all provider logs or records that must be retained for security or legal reasons. We use providers under their applicable service and data-processing terms. Providers may process information outside your country; Google’s terms allow processing in countries where it or its agents maintain facilities. We will update this page and its effective date when our practices materially change.
9. Contact
For privacy questions or requests, contact Zeyad Hussein (Hyp4tia) at ziadm4772@gmail.com. Describe your request and avoid sending sensitive health information unless necessary. We may need enough detail to identify a support exchange or provider record, but there is no Soma account to look up.