Privacy Policy
Last updated: July 5, 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, behavioral tracking, or cloud sync. The app shows a single small banner ad served by Google AdMob (see Advertising below), and iOS offers an optional Tip Jar. Your app data stays on your device except for the specific AI/STT requests you initiate, barcode lookups you trigger, optional update metadata checks, ad requests made by the Google Mobile Ads SDK, and platform health sync you explicitly enable. (Earlier iOS versions offered an optional Fud AI Premium proxy subscription; Premium has been discontinued and current versions are bring-your-own-key only.) On supported iPhones, text, voice-transcribed, and Siri food descriptions can be processed locally by Apple Intelligence only as the final fallback after BYOK provider/fallback attempts fail. 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, or API keys.
Information You Provide
- Gender, date of birth, height, weight, and body fat percentage (entered during onboarding; body fat can be used locally for BMR and lean-mass protein target display)
- 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 or shared into Fud AI through the iOS Share Extension, 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 and Review Food nutrition edits you save by logging the meal
- Reviewed meal details and current daily macro totals when you tap What if? for an AI meal-impact suggestion
- Weight log entries
- Food and weight descriptions you provide through iOS Siri Shortcuts / App Intents
- 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, default grams, optional nutrient goals, Energy Burn Goals, and Adaptive Goals
How We Use Your Information
- AI Food Analysis: Food photos from the camera, system photo picker, or iOS Share Extension, meal notes, text descriptions, and the text produced from voice input are sent to your selected AI access path only after you choose to analyze them. In Bring Your Own Key mode, requests go directly from your device to your chosen AI provider (any of 13 supported: Google Gemini including Gemini 3.5 Flash, 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). For text descriptions, text produced from voice input, and Siri food logging on supported iPhones, Apple Intelligence may process the food description locally on-device only as the final fallback after BYOK provider/fallback attempts fail; photo scans, Nutrition Label, Coach, and speech transcription continue using the configured AI access path. The onboarding and AI Access settings explain that AI analysis sends request content for processing; manual entry never sends anything to an AI provider. Custom AI Instructions (optional, Settings → AI Access → BYOK): 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: in BYOK mode, if your primary 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.
- iOS Siri Shortcuts / App Intents: If you use Siri to log food, the spoken food description is handled as text input and sent through your selected AI access path to estimate nutrition; on supported iPhones it may use Apple Intelligence locally only as the final fallback after BYOK provider/fallback attempts fail. The resulting entry is logged locally and written to Apple Health if Health access allows nutrition writes. If you use Siri to log weight, the app parses the number locally, respects pounds/kilograms in the phrase or your unit setting, stores the weight locally, and writes it to Apple Health if authorized. If you ask Siri for today's calories, the app reads today's local totals and calorie goal. Phrase examples are shown inside the app under Settings → Siri Phrases.
- Meal What-If Suggestions: If you tap What if? on the Review Food screen, the app locally previews the meal's calorie/protein/carbs/fat impact. If it asks AI for a suggestion, it sends the reviewed meal name and macros, your current daily totals, daily goals, and minimal profile context through your selected AI access path. The meal is not logged until you tap Log.
- 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 AI provider key.
- 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. On Android, if the native recognizer reports that the selected language is unsupported or unavailable on-device, the app may retry native Android recognition with network/provider defaults before showing an error. In BYOK mode, if you pick a remote provider (Gemini Audio, OpenAI Whisper, Groq, Deepgram, AssemblyAI), a short audio recording is uploaded directly from your device to that provider and its text response is returned to the app. Groq (Whisper) and Deepgram are recommended alternatives when native Android speech is inconsistent on a specific phone. 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.
- Local Storage: All food entries, Siri-created food entries, saved Review Food nutrition edits, weight entries, Siri-created weight entries, body-fat readings, optional body-circumference measurements (waist, hips, neck, chest, arms, thigh, calf, wrist) you choose to enter, user profile (including any goal body fat %), Coach chat history, food photos, cached thumbnails, optional nutrient goals, Adaptive Goals preferences, Home nutrient-card choices, and app preferences are stored locally on your device — in
UserDefaults on iOS, in DataStore Preferences on Android. Body-fat-aware protein target display is calculated locally from that profile data. 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 and Apple Watch: To display today's calorie and selected nutrient totals in iOS Home Screen widgets (Fud AI Small, Medium, Large; Fud AI Protein Small), iOS Lock Screen widgets, Android Glance widgets, and Apple Watch, 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. iOS also sends the small numbers-only snapshot to the paired Watch app through WatchConnectivity when available. The snapshot never leaves your devices 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, can automatically import external weight + body-fat samples from any other Health-compatible app (Apple Watch, Withings, Renpho, smart scales), and can read active/total energy burned only when you turn on Energy Burn Goals in Goal Settings. Energy-burn goal estimates recalculate calorie targets but keep protein, carbs, and fat editable. On Android, Health Connect sync covers nutrition, weight, body fat, and active/total energy reads for Energy Burn Goals, with permission reconciliation and backfill support for compatible sources such as Samsung Health, Fitbit, Withings, and Google Fit. Adaptive Goals use local food, weight, and profile data to make small weekly calorie corrections and do not send that calculation to an AI provider. 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 asks Google Play through the Play In-App Update API whether an update is available for the installed app. 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, or API keys.
Information We Do NOT Collect
- We do not use any in-app third-party analytics or crash-reporting SDKs; the only ad component is the Google Mobile Ads SDK, used solely to display a single banner ad (see Advertising below)
- 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, or tracking servers
- We do not require an account, sign-in, or cloud sync
- We do not see your API keys; AI/STT requests go directly from your device to the provider you configure. Apple Intelligence fallback, when used for supported iOS text, voice-transcribed, or Siri food-description analysis, is processed on-device.
Advertising (Google AdMob)
The app shows a single small banner ad at the top of each tab, served by Google AdMob via the Google Mobile Ads SDK. To serve and measure ads, Google may collect device information such as the advertising identifier (IDFA on iOS, advertising ID on Android), IP address, and coarse ad-interaction data, handled under Google's Privacy Policy and How Google uses data from partner apps. We never send your food log, health data, profile, or API keys to the ad SDK, and we only see aggregate reporting (impressions, revenue) — never who saw an ad.
- iOS: the app asks the standard App Tracking Transparency permission once. If you decline, the advertising identifier is unavailable and ads are served without it — every app feature works the same either way.
- Android: you can reset or delete your advertising ID anytime in system Settings → Google → Ads.
Tips (iOS In-App Purchases)
The iOS app offers optional, consumable Tip Jar purchases that support development and unlock nothing. Payment is processed entirely by Apple under your Apple ID; we never see your payment details. The app uses RevenueCat to fetch tip products and validate purchases — RevenueCat receives an anonymous app-generated identifier and the App Store receipt, never your food, health, or profile data. The Android app has no in-app purchases; its optional Ko-fi link simply opens in your browser.
Data Storage & Security
| Data | Storage Location (iOS) | Storage Location (Android) | Accessible By |
| Food entries, Siri food logs, and saved review nutrition edits | 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, including Siri weight logs | 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 / Watch snapshot (today's totals) | App Group container + paired Watch transfer when available | Same DataStore | You only |
| App preferences (theme color, appearance, units, notifications, Home nutrient cards, optional nutrient goals, Adaptive Goals) | UserDefaults | DataStore Preferences | You only |
| API keys (LLM + STT) | iOS Keychain | EncryptedSharedPreferences (AES-256, AndroidKeystore-backed) | You only |
| Barcode values | Sent to Open Food Facts only when you scan a barcode. | Open Food Facts |
| Food photos, meal notes, and Siri food descriptions (for AI analysis) | Sent to your BYOK provider directly. Supported iPhones can process text, voice-transcribed, and Siri food descriptions with Apple Intelligence on-device as the final fallback after BYOK provider/fallback attempts fail. | Processed in transit, or on-device for Apple Intelligence fallback |
| Voice audio (remote STT) | Sent directly to your chosen BYOK STT provider. | Processed in transit |
| Coach chat messages and attached images | Sent to your BYOK provider directly. | Processed in transit |
| Banner ad requests | Handled by the Google Mobile Ads SDK — may include the device advertising identifier and IP address, per Google's privacy policy. | Google (AdMob) |
| Tip purchases (iOS only) | Processed by Apple; validated through RevenueCat using an anonymous identifier and the App Store receipt. | Apple + RevenueCat |
| 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.
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.
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, including active/total energy burned when you enable Energy Burn Goals.
- App Tracking Transparency (iOS) — requested once so AdMob can use the device advertising identifier for the banner ad. Declining changes nothing about app functionality; ads simply serve without the identifier.
- Internet — required for AI/STT requests to your chosen providers, the banner ad, and 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 / Watch 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.
- 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