Privacy Policy
Last updated: May 19, 2026
Fud AI ("we", "our", "the app") is an open-source iOS and Android app developed by Apoorv Darshan. This privacy policy explains how your information is handled across both platforms. In short: we don't have Fud AI accounts, in-app analytics, ads, or behavioral tracking. Your app data stays on your device except for the specific AI/STT requests you initiate, barcode lookups you trigger, optional update metadata checks, platform health sync you explicitly enable, and Fud AI Plus requests when you choose the paid no-key setup on iOS. The public website may use Vercel Web Analytics for aggregate pageview metrics; those website metrics are not connected to your app food log, health data, API keys, or Plus subscription.
Information You Provide
- Gender, date of birth, height, weight, and body fat percentage (entered during onboarding)
- Activity level, weight goal, target weight, and weekly weight-change rate
- Food photos taken within the app, including two-photo Camera + Camera analysis when you choose it
- Food photos selected from your library through the system picker, plus any meal notes or text descriptions you submit for AI analysis
- Images attached to Coach messages, including camera captures or photo-library selections where supported
- Barcode values scanned for packaged-food lookup
- Food entries and nutrition data you log (including manual entries)
- Weight log entries
- Body fat % readings logged over time, plus an optional goal body fat % (only collected if you opt into body-fat tracking during onboarding or later in Settings)
- Voice recordings (when using voice meal input)
- AI Coach chat messages (multi-turn conversation history)
- AI provider and speech-to-text provider API keys (stored encrypted on device — see below)
- App preferences: appearance mode, theme color, units (metric / imperial), week-start day, notification times, speech-language preferences, Home nutrient-card choices, and optional nutrient goals
- Fud AI Plus subscription status on iOS, if you subscribe, restore purchases, or switch AI Access mode to Plus
How We Use Your Information
- AI Food Analysis: Food photos from the camera or system photo picker, meal notes, text descriptions, and the text produced from voice input are sent to your selected AI access path. In Bring Your Own Key mode, requests go directly from your device to your chosen AI provider (any of 13 supported: Google Gemini, OpenAI, Anthropic Claude, xAI Grok, OpenRouter, Together AI, Groq, Hugging Face, Fireworks AI, DeepInfra, Mistral, Ollama running locally, or a custom OpenAI-compatible endpoint you configure). In Fud AI Plus mode on iOS, requests are sent to Fud AI's serverless proxy, which forwards them to Google Gemini using Fud AI's API key and applies daily quota/fallback handling. Explicit in-app consent before any data leaves your device: the first time you trigger an AI analysis (photo, voice, text, or nutrition label), the app shows an "AI Analysis Notice" sheet that names your current AI access path, lists exactly what is sent (photo / voice transcript / text / profile data for Coach chat), and requires you to tap Allow before the request fires. Manual entry never requires consent because no data is sent anywhere. Custom AI Instructions (optional, Settings → AI Provider): if you fill in the Custom AI Instructions text box, that text is appended to every AI request so the model sees your context. The text stays local except when included in the AI request payload. Fallback AI Provider (BYOK only): if your primary BYOK provider returns an error, the request can retry with the secondary provider you configured. Note on OpenRouter
openrouter/free: when you pick the free-tier default model on OpenRouter, OpenRouter itself selects the upstream provider that handles your request.
- Barcode Lookup: On iOS and Android, if you choose Barcode from the logging menu, the scanned barcode is sent from your device to the public Open Food Facts API. Fud AI requests only product fields needed for nutrition logging, such as product name, brand, quantity, serving size, and nutriments. If Open Food Facts has no product or incomplete nutrition, the app asks you to scan the nutrition label instead. Barcode lookup does not use your BYOK AI key or Fud AI Plus quota.
- AI Coach Chat: When you use the Coach tab, the app sends a slim system prompt (your profile, BMR/TDEE/macro formulas, weight forecast, current date/timezone, and a one-line "data available" snapshot) plus your conversation history through your selected AI access path. Coach can additionally call tool functions mid-turn to fetch any date range of your weight, body-fat, calorie, or food-entry history when you ask about specific past dates ("what was my weight in March?", "what did I eat Tuesday?"). If you attach an image to a Coach message, that image is included in the AI request. The fetched data is sent as part of the AI request and may include meal source, meal type, serving size, and micronutrients when relevant. Full chat history is kept locally; only the last 20 messages are included in each LLM request to cap token cost.
- Optional Nutrient Goal Estimation: If you tap the AI estimate button for detailed nutrient goals, the app sends the minimum profile context needed for that estimate, such as your goal, body measurements, activity level, and current calorie/macro targets, through your selected AI access path. Returned detailed goals such as fiber, sugar, fats, cholesterol, sodium, potassium, calcium, iron, magnesium, zinc, vitamins, folate, omega-3, and related nutrients are stored locally as settings and do not change the calorie/protein/carbs/fat calculator.
- Speech-to-Text: If you pick the on-device option (Native iOS on iPhone, Native Android
SpeechRecognizer on Android), voice recognition happens on your device and the selected language is passed as a local recognition hint when applicable. If you pick a remote BYOK provider (Gemini Audio, OpenAI Whisper, Groq, Deepgram, AssemblyAI), a short audio recording is uploaded to that provider and its text response is returned to the app. In Fud AI Plus mode on iOS, remote voice input is capped at 60 seconds, uploaded to Fud AI's serverless proxy, and forwarded to Deepgram for transcription. If you choose a fixed speech language or "Use Device Language" instead of Provider Auto, the corresponding language code may be sent with the audio so it can bias transcription. Provider Auto for Plus follows your iPhone language.
- Fud AI Plus Subscriptions: iOS Plus subscriptions are processed by Apple and entitlement status is managed in the app through RevenueCat. Apple and RevenueCat may receive subscription-related identifiers and events such as an app user/customer ID, product ID, weekly/monthly/yearly product ID, purchase, renewal, cancellation, refund, expiration, restore, and related timestamps. We do not receive your payment card details. Subscription records are used only to unlock or restore Plus access and to support subscription management.
- Plus Quota Checks: Fud AI Plus requests include an anonymous install ID so the serverless proxy can count daily food, speech, Coach, and total usage. If Vercel KV is configured, daily quota counters may be stored there until expiry; otherwise the proxy keeps temporary in-memory counters. Food and Coach payloads are forwarded to Gemini; speech audio is forwarded to Deepgram. Payloads are not used to create a Fud AI account.
- Local Storage: All food entries, weight entries, body-fat readings, user profile (including any goal body fat %), Coach chat history, food photos, cached thumbnails, optional nutrient goals, Home nutrient-card choices, and app preferences are stored locally on your device — in
UserDefaults on iOS, in DataStore Preferences on Android. Nothing leaves your device except the specific AI/STT requests described above.
- API Key Storage: On iOS, your API keys are stored in iOS Keychain (encrypted, hardware-backed, accessible only to the app). On Android, they are stored in
EncryptedSharedPreferences using AES-256 with the master key managed by Android Keystore (also hardware-backed on devices with a TEE / StrongBox).
- Widgets: To display today's calorie and selected nutrient totals on the Home Screen / Lock Screen, the main app writes a small snapshot (today's totals + goals + selected Home nutrient cards) into a shared container — App Group on iOS, the same DataStore on Android. The widget reads this snapshot to render. The snapshot never leaves your device and contains only numbers and nutrient labels — no food names, photos, or identifiers.
- Apple Health (iOS) / Health Connect (Android): If you enable health integration in Settings, the app writes body measurements (weight, height, body fat percentage where supported) and per-meal nutrition to the platform's health store. On iOS, it also reads weight + body fat + height + date of birth + biological sex back into your profile, and can automatically import external weight + body-fat samples from any other Health-compatible app (Apple Watch, Withings, Renpho, smart scales). On Android, Health Connect sync covers nutrition, weight, and body fat with permission reconciliation and backfill support for compatible sources such as Samsung Health, Fitbit, Withings, and Google Fit. On first enable where supported, historical backfill pulls past weight/body-fat samples into the Progress chart so the chart starts populated rather than blank. You control this via iOS Settings → Health → Data Access → Fud AI, or via the Health Connect app on Android.
- Notifications: If you enable streak, daily-summary, log-weight, or log-body-fat reminders, they are scheduled locally via iOS local notifications (iOS) or
AlarmManager + POST_NOTIFICATIONS permission (Android 13+). All four are smart-fire — they skip on days you've already logged the corresponding metric. No notification content is ever sent to a server.
- App Update Checks: About can check whether a newer app version exists. On iOS, the app requests public metadata from Apple's iTunes Lookup API for the Fud AI App Store ID. On Android, it requests public GitHub Releases metadata for this repository and filters Android release tags. The installed version is compared locally; the app does not send your food log, profile, API keys, or health data for update checks. If an update is available, tapping Update opens the App Store or Play Store listing.
- Website Analytics: The marketing website may load Vercel Web Analytics to understand aggregate visits and page performance. This is separate from the mobile apps and is not connected to food entries, health data, API keys, or subscriptions.
Information We Do NOT Collect
- We do not use any in-app third-party analytics, crash reporting, or advertising SDKs
- We do not track your behavior, location, or browsing activity
- We do not sell your personal data
- We do not operate Fud AI accounts, in-app analytics, ads, or tracking servers
- We do not require an account, sign-in, or cloud sync
- We do not see your BYOK API keys; Fud AI Plus payloads pass through our serverless proxy only to reach Gemini for food/Coach or Deepgram for voice
- We do not receive your App Store payment card details
Data Storage & Security
| Data | Storage Location (iOS) | Storage Location (Android) | Accessible By |
| Food entries | UserDefaults | DataStore Preferences | You only |
| Food photos and cached thumbnails | App Support directory | filesDir/fudai-food-images/ plus local thumbnail cache | You only |
| Weight entries | UserDefaults | DataStore Preferences | You only |
| Body-fat entries (history) | UserDefaults | DataStore Preferences | You only |
| User profile (incl. goal body fat %) | UserDefaults | DataStore Preferences | You only |
| Coach chat history and attached thumbnails | UserDefaults | DataStore Preferences | You only |
| Widget snapshot (today's totals) | App Group container | Same DataStore | You only |
| App preferences (theme color, appearance, units, notifications, Home nutrient cards, optional nutrient goals) | UserDefaults | DataStore Preferences | You only |
| API keys (LLM + STT) | iOS Keychain | EncryptedSharedPreferences (AES-256, AndroidKeystore-backed) | You only |
| Plus subscription status (iOS) | Apple App Store + RevenueCat; small local cache in the app for access state. | You + Apple + RevenueCat |
| Plus quota counters | Anonymous install ID + daily task counts in the Fud AI proxy / Vercel KV when configured. | Processed for quota enforcement |
| Barcode values | Sent to Open Food Facts only when you scan a barcode. | Open Food Facts |
| Food photos and meal notes (for AI analysis) | BYOK: sent to your chosen AI provider. Plus: sent through Fud AI's proxy to Google Gemini. | Processed in transit |
| Voice audio (remote STT) | BYOK: sent to your chosen STT provider. Plus: sent through Fud AI's proxy to Deepgram. | Processed in transit |
| Coach chat messages and attached images | BYOK: sent to your chosen AI provider. Plus: sent through Fud AI's proxy to Google Gemini. | Processed in transit |
| Health data | Apple HealthKit | Health Connect | You + apps you authorize |
Third-Party AI Providers
When you send a request to an AI or STT provider, including food analysis, optional nutrient-goal estimation, Coach chat, or remote voice transcription, you are subject to that provider's privacy policy. Each provider handles data differently — some log prompts, some don't; some train on inputs, some don't. We recommend reviewing the policy of whichever provider you choose:
If you use Ollama or a custom OpenAI-compatible endpoint, requests go to whatever URL you configure — typically your own machine or a self-hosted server.
If you use Fud AI Plus, food and Coach requests are routed through Fud AI's serverless proxy to Google Gemini, while remote speech requests are routed through the same proxy to Deepgram. The proxy uses an anonymous install ID only for quota enforcement and does not require a Fud AI account.
Barcode/Product Data Provider
Barcode lookup uses the public Open Food Facts API. When you scan a barcode, the barcode value is sent to Open Food Facts so the app can retrieve public product and nutrition data when available. Open Food Facts' own policies apply to that lookup.
Payments & Subscription Providers
Fud AI Plus subscriptions on iOS are purchased through Apple App Store in-app purchase and managed in-app using RevenueCat. Apple handles payment processing and billing information. RevenueCat helps the app verify, restore, and synchronize subscription entitlement state. Their policies apply to subscription processing:
Permissions Requested
- Camera — for snapping food photos and scanning barcodes. Prompted on first use.
- Microphone / Speech Recognition — for voice meal input. Prompted on first use.
- Photo Library / Storage — to pick existing food photos. iOS uses
PHPicker; Android uses the system PickVisualMedia photo picker — neither requires broad photo-library access.
- Notifications — only if you enable streak or daily-summary reminders. On Android 13+, this triggers the runtime
POST_NOTIFICATIONS permission prompt.
- Health — only if you flip on Apple Health (iOS) or Health Connect (Android) integration. The system permission sheet lists exactly which read/write types are requested.
- Internet — required for AI/STT requests to your chosen providers and for optional app-update checks. Implicit on iOS; declared in
AndroidManifest.xml on Android.
- Battery Optimization (Android, optional) — Settings exposes a deep-link to whitelist Fud AI in Android's battery-optimization list. This is needed on aggressive OEM skins (OriginOS, MIUI/HyperOS, One UI) where exact alarms are killed otherwise. Whitelisting only affects local reminder reliability — it does not change anything about data handling.
Open Source
Fud AI is open source under the MIT License. You can review exactly what the app does — including every network call — at github.com/apoorvdarshan/fud-ai.
Data Retention & Deletion
- All data remains on your device until you delete it or uninstall the app.
- Delete All Data (Settings → Delete All Data) wipes the app's local storage on both platforms: food log, weight log, body-fat log, profile, Coach chat history, saved meals, optional nutrient goals, Home nutrient-card choices, widget snapshot, API keys, and preferences. It intentionally does not touch Apple Health or Health Connect — those samples are personal and survive the reset. If you want them removed too, on iOS go to Settings → Health → Data Access & Devices → Fud AI; on Android use the Health Connect app's data management screen.
- Clear Food Log (Settings → Clear Food Log) removes local food entries only; previously-synced Apple Health / Health Connect samples are kept.
- Deleting app data or uninstalling the app does not cancel an active App Store subscription. Manage or cancel Fud AI Plus from your Apple ID subscription settings.
- Uninstalling the app removes everything in its sandbox (same as Delete All Data) — again, Apple Health / Health Connect samples persist unless deleted separately.
Children's Privacy
Fud AI is not directed at children under the age of 13. We do not knowingly collect personal information from children under 13. If you believe a child under 13 has provided us with personal data, please contact us so we can assist.
Changes to This Policy
We may update this privacy policy from time to time as the app evolves. Changes will be reflected in the "Last updated" date above. Continued use of the app after changes constitutes acceptance of the updated policy.
Contact
For privacy questions or deletion requests, contact either of: apoorv@fud-ai.app or ad13dtu@gmail.com