Last updated: 2026-05-25 Operator: Martin Fu (Uncle’s Pills) Contact: unclespills-privacy@fufamily.com
This Privacy Policy explains how Uncle’s Pills (“the app”, “we”, “us”) handles information when you use it on your iOS device. Uncle’s Pills is a family medication tracker. Unlike a fully local app, Uncle’s Pills stores its data in Google Firebase so that the members of one family can share a single medication list across their phones. This document is specific about what goes where.
Uncle’s Pills uses Firebase Authentication to sign you in. You can choose one of three providers:
Whichever provider you pick, the resulting account is a single Firebase user record identified by a Firebase UID. Uncle’s Pills does not run its own account server, set its own password, or see the password / face data that you used to sign in with Apple or Google.
Once you sign in, Uncle’s Pills stores the following data in Google Firestore (a NoSQL database hosted by Google) and Firebase Cloud Storage (Google Cloud Storage with Firebase rules in front), inside the operator’s Firebase project:
Per-user document (/users/{uid}). Your display name, profile
photo URL, language preference, the ID of the family you currently have
selected, and your Google AI Studio API key if you have entered one (see
“AI scan” below). This document is readable and writable only by you.
Per-family document (/families/{familyId}). A family represents a
shared medication list. The document holds the family name, the list of
member Firebase UIDs, the list of admin UIDs, the timestamp of when each
member joined, and the most recent active invite code (if any). Every
family member can read and update this document; only admins can delete
the family. There is no separate “household” concept — joining a family
means joining a shared dataset.
Family snapshot (/families/{familyId}/data/snapshot). All
medication-related data for one family lives in a single document:
This document is readable and writable by every member of the family. Uncle’s Pills does not encrypt fields inside the document — the Firestore service holds them in plaintext, the way any Firestore document is held, with TLS in transit and at-rest encryption managed by Google. The security boundary is the family membership list: a user who is not in the family cannot read the document.
Avatar images (/users/{uid}/avatar.jpg in Firebase Storage).
Square JPEGs at 512×512, capped at 2 MB. Any authenticated Uncle’s Pills user
can read avatars (so other family members can see your face on the list
view); only you can write yours.
Medicine-bag photos (/families/{familyId}/photos/{id} in Firebase
Storage). When the AI scan flow runs (see below), the original photo
is uploaded so other family members can review the source image later.
Capped at 8 MB. Only members of the same family can read or write
photos under that family’s path.
Invite codes (/invites/{code}). When you generate a join code,
Uncle’s Pills writes a small lookup document with the family ID and an
expiration timestamp. The code is rotateable from inside the app. Any
authenticated user can read this lookup (that is how the join-by-code
flow works); only an admin of the target family can create one, and
the joiner deletes it after use.
Uncle’s Pills includes two optional features that send data to Google’s Gemini API (Google’s generative-AI service):
Before either of these features will run, Uncle’s Pills shows you a consent screen that names Google as the recipient, lists exactly what data is sent, and asks you to tap “Allow”. No photo or typed medication name is sent to Gemini until you tap “Allow”. If you tap “Not now”, AI scan and AI autocomplete are turned off and the app never contacts Gemini. You can change your mind any time in Settings → AI assistance (Google Gemini), which also shows when you originally allowed it and lets you turn it back off.
| Action | Data sent to Google Gemini |
|---|---|
| You tap “Analyze” on the AI scan modal | The base64-encoded photos you added (which may show a patient’s name, clinic name, prescribing doctor, drug name, dosage, instructions, and any other text on the medicine bag) plus a prompt asking Gemini to extract the medication fields |
| You type into a medication-name field | The text you typed (after a ~500 ms debounce), plus a prompt asking Gemini to suggest matching drug names |
The request is sent directly from your device over HTTPS to
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent,
using your own Google AI Studio API key (the app is
“bring-your-own-key” — see below). The request is not routed through
any Uncle’s Pills server.
You paste a Google AI Studio API key into Settings → AI assistance.
That key is stored in your per-user Firestore document
(/users/{uid}.geminiApiKey) so it follows you to other devices you
sign in on. It is read by the app at request time and attached as the
key= query parameter on the call to the Gemini endpoint. The key is
readable and writable only by you under our Firestore rules.
The recipient is Google LLC, operator of the Gemini API. Google sees the photo bytes (or typed text) and the prompt because it is the service performing the inference. Google handles the data under Google’s privacy policy (https://policies.google.com/privacy) and the Google APIs Terms of Service that govern your AI Studio key (https://ai.google.dev/terms). Google offers data protections that we consider materially equivalent to those described in this policy; we encourage you to read Google’s terms before allowing AI features.
Uncle’s Pills does not run an AI server of its own, does not log or cache the photos or typed text on any Uncle’s Pills server, and does not share this data with any other AI vendor. We do not send the photo or any of your data to Anthropic, OpenAI, or any other AI vendor. The only AI calls the app makes are the two Gemini calls described here. Disabling consent (or removing your Gemini key) is sufficient to stop all AI calls — the app falls back to its on-device medication-name list and to manual medication entry.
Uncle’s Pills does not use:
The app’s interface is available in English, Traditional Chinese (繁體中文), and Simplified Chinese (简体中文). The language preference is stored in your per-user document so it follows you across devices. This is a UI preference; it does not change anything about what data is collected.
| Data | Where it goes | Who sees it |
|---|---|---|
| Apple / Google sign-in token | Firebase Auth | Google (Firebase Auth servers) |
| Phone number for SMS code | Firebase Auth | Google + SMS carrier |
| Display name, photo URL, language | Firestore | Google + your family members (display name and photo) |
| Family name, member list | Firestore | Google + your family members |
| Medication list, dose log, pillbox config | Firestore | Google + your family members |
| Medicine-bag photos | Firebase Storage | Google + your family members |
| AI-scan request (photo + prompt) — only if you have allowed AI assistance and configured a Gemini key | Google Gemini API | Google (Gemini), under Google’s privacy policy |
| AI-autocomplete request (typed medication name + prompt) — only if you have allowed AI assistance and configured a Gemini key | Google Gemini API | Google (Gemini), under Google’s privacy policy |
| Profile avatar | Firebase Storage | Google + any signed-in Uncle’s Pills user (avatars are intentionally readable across families) |
The operator (Martin Fu) is the owner of the Firebase project that holds this data and therefore has administrative access to it in principle, the same way any Firebase project owner does. We do not read the data in the normal course of operating the app. We do not sell, rent, or share it with anyone outside Google’s processor role.
Uncle’s Pills is intended for adults managing medications, for themselves or their family members (including children whom they care for). The app itself is not directed at children as users. Adults who add a child as a tracked person in their family are managing that child’s data on the child’s behalf. We do not separately collect data from children.
We do not share, sell, rent, or transfer your data to anyone outside of Google (acting as our cloud-platform processor) and Google (acting as the operator of the Gemini API when you choose to use AI scan). We do not have advertising partners. We do not buy or enrich data about you from third parties.
If we change how Uncle’s Pills handles your data, we will update this document and change the “Last updated” date at the top. Material changes will ship as a new version of the app released through the App Store.
Questions about this policy, or requests related to your data, go to unclespills-privacy@fufamily.com.