Floofy

Privacy Policy

Effective date: 2026-05-16
Last updated: 2026-06-03
Contact: ccccccara@outlook.com
App developer: ccccccarachen (sole developer)

Floofy ("the app", "we", "our") is an iOS app that helps owners of cats with chronic conditions log daily health data and share reports with a veterinarian. This policy describes what data we collect, how we use it, who we share it with, and the choices you have.

This policy applies only to the Floofy iOS app and the back-end services that support it. It does not cover the practices of third parties (e.g., Apple, your veterinarian) that you separately interact with.

1. Short version

2. Who we are and how to reach us

Floofy is built and operated by a sole developer. For privacy questions, data-access requests, or deletion requests outside of the in-app flow, contact ccccccara@outlook.com. We aim to respond within 14 days.

3. Data we collect

3.1 Data you give us directly

When you use Floofy as a guest, the following stays only on your device (Apple SwiftData, encrypted by iOS at rest as part of normal iOS data protection):

When you sign in with Apple at the end of onboarding (or any time later), the same data is also written to our Supabase project so you can use it on another device. We also store:

3.2 Data created automatically

3.3 Data we do not collect

4. How we use your data

We use the data above only for the purposes listed below. We do not repurpose it for advertising, profiling, or sale.

PurposeData used
Show your pet's history, trends, and dashboardsPet profile, log entries, medical records (on your device)
Sync your data across your iOS devices when you are signed inPet profile, log entries, medical records, reminders, photos, PDFs, app preferences (Supabase)
Run the Auto-Recognize Lab Values feature (Pro)The specific photo or PDF of a lab report you tap "Auto-Recognize" on
Run AI Medical Report Analysis & answer your follow-up questions (1 free, then Pro)The medical record(s) you choose to analyze — attached photos/PDFs, lab values, record title/date/clinic, your pet's basic profile (name, conditions, breed, sex, approximate age/CKD stage), and the free-text questions you type in the follow-up chat. Sent to Google Gemini via our Cloudflare Worker. See §5c.
Generate a bilingual vet report you can save to Photos or copy as textWhatever you select in the report-setup screen. If you choose a target language different from the language your records are in, the selected text is sent to Google Gemini via our Cloudflare Worker for translation. See §5b.
Send local push remindersYour reminder titles and times (sent to iOS, not to our servers)
Authenticate you and back up your data when you sign inApple ID identifier, Apple-relayed email, Supabase JWT
Bill the Floofy Pro subscriptionApple StoreKit transaction (Apple, not Floofy, handles the charge)
Detect crashes and product issues, prioritise fixesPostHog anonymous events, iOS analytics opt-in (if granted)
Comply with applicable law (e.g., respond to lawful requests)Whatever is strictly necessary for the request

We do not:

5. Auto-Recognize Lab Values — what happens to the image you send

This feature is part of the Floofy Pro subscription. It is opt-in: you must explicitly tap "Auto-Recognize Lab Values" on a medical record. When you do:

  1. Floofy reads the photo(s) or PDF you attached and sends the bytes over HTTPS to a Cloudflare Worker we control (gemini-vision-proxy.<workers-subdomain>.workers.dev). The Worker uses your Supabase access token to confirm you are an authenticated Floofy user and that you have an active Pro subscription.
  2. The Worker forwards the image to Google Gemini 2.5 Flash with a prompt asking it to extract structured lab values (lab name, value, unit, date, clinic).
  3. Google returns a JSON response. The Worker passes it back to your device. Floofy parses it and shows you the extracted values so you can confirm or edit them before saving.

Where Google's role ends. Google processes the request under its enterprise API terms. Per those terms, Google does not use Gemini API content to train its general models. We do not retain a copy of the image on our Worker (the Worker is stateless and does not log image bytes), and we do not store the raw Gemini response after the user closes the medical-record editor without saving.

You can use the manual lab-row editor at any time and never use Auto-Recognize. Floofy does not require this feature to function.

5b. Bilingual Vet Report Translation — what happens to the text you send

This feature is available to all users (free and Pro) but only runs when you actively initiate it. When you open the Export Vet Report flow and choose a target language different from the language your records are entered in (e.g., your records are in Chinese and you choose to export in English), the following happens:

  1. Floofy gathers only the report content you have opted to include in the export (you pick the date range and which sections — pet profile, log entries, medical records, etc.) and sends those strings over HTTPS to a Cloudflare Worker we control (llm-proxy.<workers-subdomain>.workers.dev). The Worker uses your Supabase access token to confirm you are an authenticated Floofy user — translation is gated behind sign-in to prevent abuse.
  2. The Worker forwards the text to Google Gemini (currently gemini-3.1-flash-lite) with a fixed system prompt instructing it to act as a medical translation assistant, preserve terminology and units, and return only the translated text in a structured JSON array.
  3. Google returns the translated text. The Worker passes it back to your device. Floofy renders the translated report — either as an image you can save to Photos or as text you can copy.

What is sent: only the report content you selected for export. This may include pet name, dates, lab values, free-text notes, and medical record contents if those sections are included. What is NOT sent: any record you did not include in the export, your photos, your PDFs, your reminders, your app preferences, or any other in-app data.

Where Google's role ends. Same enterprise API terms as §5 above — Google does not use Gemini API content to train its general models. Our Worker is stateless and does not log request bodies. The translated output is held only in memory on your device for the lifetime of the export view; closing the export view discards it.

You can always export the report in its original language to skip translation entirely. The "no translation" path never sends data to Google.

5c. AI Medical Report Analysis & Follow-up Questions — what happens to what you send

Floofy can read one or more of your medical records and produce a plain-language summary ("AI Medical Report Analysis"), and you can then ask free-text follow-up questions about that report in a chat. Every user gets one free analysis; after that the feature is part of the Floofy Pro subscription. It is opt-in — nothing is analyzed until you explicitly tap "Analyze" on a record (or a set of records), and no question is sent until you type it and tap send.

When you run an analysis or ask a follow-up question:

  1. Floofy gathers the record(s) you selected and sends them over HTTPS to the same Cloudflare Worker that handles translation (llm-proxy.<workers-subdomain>.workers.dev). The Worker uses your Supabase access token to confirm you are an authenticated Floofy user — the feature is gated behind sign-in to prevent abuse and to enforce daily limits.
  2. The request includes: the photos and/or PDF you attached to the record(s) (images are downscaled before sending); the lab values Floofy holds for those records; the record title, visit date, and clinic; your pet's basic profile (name, conditions such as CKD/HCM, optional breed, sex, neuter status, and approximate age or CKD stage); the vet's own narrative if you entered one; and any owner notes on the record. For a follow-up question, the request also includes your typed question, the prior analysis the question is about, and up to the last few question/answer turns from the current chat so the assistant can follow the thread.
  3. The Worker forwards this to Google Gemini (currently gemini-3.1-flash-lite) with a fixed system prompt instructing it to explain the report in plain language and not to give its own diagnosis, treatment, medication, dose, or diet advice. Google returns the answer; the Worker passes it back to your device.

What is NOT sent: any record you did not select for analysis, your other pets, your reminders, your daily log entries, your app preferences, your account email, or your payment details.

Storage. This is the strictest part of the feature: the AI's analysis cards and follow-up answers are session-only. They live in memory while the app is open and are never written to disk and never uploaded to Supabase. Close the app and they are gone; the next analysis starts fresh from your stored records. Our Worker is stateless and does not log request bodies.

Where Google's role ends. Same enterprise API terms as §5 and §5b — Google does not use Gemini API content to train its general models. The assistant is informational only; the app shows a standing reminder in the analysis and chat that, for diagnosis or treatment, you should check with your veterinarian.

You never have to use this feature. Your records, summaries, and trends remain fully available without it.

6. Who we share data with

We share data only with the service providers listed below, each of which is bound by its own privacy and security commitments. We do not sell or rent your data.

ProviderRoleWhat they receiveLocation
AppleSign in with Apple, push notifications, App Store / StoreKit billingApple ID identifier (per-app, opaque), relayed email, subscription receipts, push notification tokensPer Apple's privacy policy
Supabase (Supabase, Inc.)Database, file storage, authentication backendEncrypted record contents you create when signed in; uploaded files; user ID; emailUnited States (West region)
CloudflareWorker proxies for (a) Auto-Recognize Lab Values OCR, (b) AI Medical Report Analysis & follow-up Q&A, (c) bilingual vet report translation, (d) anonymous PostHog analytics forwarding, (e) account deletion (Apple revoke + Postgres cascade)Authorization header; the specific image you submit for OCR; the record contents, pet profile, and free-text questions you submit for analysis; the specific report text you submit for translation; the PostHog event payload; the account-deletion requestUnited States edge (request-local, not stored)
Google (Google LLC)Gemini API in two roles — Vision (gemini-2.5-flash) for Auto-Recognize Lab Values OCR, and text/vision (gemini-3.1-flash-lite) for AI Medical Report Analysis, follow-up Q&A, and bilingual vet report translationThe image you submit for Auto-Recognize; the record contents (including attached photos/PDFs), pet profile, and follow-up questions you submit for analysis; the report text you submit for translation; and the corresponding promptsPer Google's Gemini API terms
PostHog (PostHog Inc.)Anonymous product analyticsAnonymous install ID, anonymous event names, app version, device model class, iOS versionUS cloud (us.i.posthog.com)

We will share your data outside these providers only if a law enforcement agency or court order in a jurisdiction we operate in compels us to, and only to the extent required.

7. International transfers

Your data is processed in the United States (Supabase West US region and PostHog US cloud). If you use Floofy from outside the United States, by signing in you understand that your data is transferred to and processed in the U.S. We rely on the lawful transfer mechanisms each sub-processor provides (e.g., Standard Contractual Clauses for users in the EEA, UK IDTA for the UK).

8. How long we keep your data

TypeRetention
Guest-mode data on your deviceUntil you delete the app or wipe iOS. Floofy never uploads it.
AI Medical Report Analysis cards & follow-up answersSession-only — held in memory while the app is open; never written to disk or uploaded. Gone when you close the app.
Signed-in data in SupabaseUntil you delete your account (Settings → Account → Delete Account).
Photos and PDFs in Supabase StorageSame lifetime as the row that references them; orphaned files are purged within 30 days.
PostHog anonymous eventsUp to 7 years (PostHog default), but they are not linked to your identity.
Apple sign-in audit logs in Supabase AuthUp to 90 days, then purged by Supabase.
Cloudflare request logsUp to 30 days of metadata (timestamp, status code) — no image bytes.

When you delete your account, we mark all of your rows for deletion immediately and purge them from primary and backup storage within 30 days. Anonymized analytics that cannot be tied back to you are not deleted because they cannot be located.

9. Your choices and rights

You can exercise the following choices directly from Floofy:

Depending on where you live, you may have additional rights:

To exercise any right, contact ccccccara@outlook.com. We may ask you to verify control of your Apple ID before acting on requests that involve cloud data.

10. Children

Floofy is not directed to children under 13 (or the equivalent minimum age in your country, e.g., 16 in some EU member states). The App Store age rating is 4+ because the content is benign, but the data-entry workflow is intended for adult caregivers of cats. We do not knowingly collect personal information from children. If you believe a child has provided data to Floofy, contact ccccccara@outlook.com and we will delete it.

11. Security

No system is perfectly secure. We commit to telling affected users without undue delay if we become aware of a breach that affects their data, as required by applicable law.

12. Data-breach notification

If we discover a personal-data breach that is likely to result in a risk to your rights and freedoms, we will notify the relevant supervisory authority where required and notify you directly, by email or in-app, within 72 hours of becoming aware.

13. Changes to this policy

We will revise this policy when the app changes in a way that affects what we collect or how we use it. Material changes will be announced in-app and on this page at least 14 days before they take effect. The "Last updated" date at the top is the source of truth for the current version.

14. Disclaimer

Floofy is informational only. It does not diagnose, treat, or replace veterinary advice. Always consult your veterinarian before changing your cat's diet, medication, or care plan. See the in-app Medical Disclaimers screen for the full text.