Privacy

Privacy Policy

This policy covers the MoodMirror iOS and Android app and the moodmirror.io marketing website.

Last updated: 2026-05-09Version: 1.0.0

1. Introduction

MoodMirror is an AI-powered journaling app that reflects your emotional patterns back to you. We built it to be genuinely useful for self-reflection, which means we store sensitive personal content — your words, moods, and energy levels. We take that seriously.

This policy explains what data we collect, why we collect it, who we share it with, and how long we keep it. Our guiding principle is to over-disclose what's actually happening with your data rather than hide behind vague language. Every claim in this document maps to a specific call site in our codebase.

This policy applies to the MoodMirror mobile app (iOS and Android) and the moodmirror.io marketing site. It should be read alongside our Terms of Service. If you want to delete your account and data, see our Delete Account page.

2. Data we collect directly from you

When you use MoodMirror, we collect the following categories of information directly from you:

On our servers, data is stored in our managed Postgres database (Supabase), which encrypts data at rest. We are not end-to-end encrypted: our backend has plaintext access to your entries because the AI reflection feature needs to read them in order to generate reflections. Access is restricted by row-level security so only you can read your own data.

On your device, the local cache (offline queue and recently synced entries) is encrypted using a randomly generated key held in the iOS Keychain or Android Keystore. Authentication tokens are held in the Keychain / Keystore directly. The device-side encryption key is removed when you uninstall the app.

3. Data we receive from third parties

In addition to what you give us directly, we receive limited data from the sign-in and subscription platforms you use:

4. AI processing — how we generate reflections

MoodMirror's AI reflection feature is powered by the Anthropic Claude API, specifically the model claude-haiku-4-5-20251001. Reflections are generated on our backend; your entries are not sent to Anthropic from your device directly.

When you request a reflection, the following is sent to Anthropic's API:

Anthropic retains API request content for up to 30 days for abuse monitoring, after which it is deleted. Per Anthropic's commercial terms, your content is not used to train Anthropic's models.

5. Subscriptions and in-app purchases

In-app purchases and subscriptions are processed by the Apple App Store or Google Play Store. RevenueCat orchestrates entitlement validation and communicates subscription state to the app. The merchant of record for all transactions is Apple or Google — not MoodMirror.

We receive only entitlement state (e.g., “premium subscriber”) and transaction metadata such as purchase dates and product identifiers. We never receive or store your payment card numbers, billing address, or full Apple/Google receipt details.

6. Advertising and consent

The free tier of MoodMirror shows ads served by Google AdMob, mediated via the Google Mobile Ads SDK. No ads are shown on the paid tier.

Before initializing AdMob, the app presents a consent prompt using Google's User Messaging Platform (UMP). In the EEA and UK, this consent flow generates an IAB Transparency and Consent Framework v2 (IAB-TCF v2) consent string, which is passed with each ad request. AdMob is only initialized after UMP consent is obtained.

On iOS, the App Tracking Transparency (ATT) prompt additionally controls whether the IDFA (Identifier for Advertisers) is shared. The table below describes what identifier flows to AdMob in each branch:

ATT consent stateIdentifier shared with AdMob
GrantedIDFA shared with AdMob and mediated networks for personalized ads
Denied / Restricted / Not DeterminedNo IDFA. Vendor-scoped or limited-tracking identifiers may still flow for non-personalized ads

The ad request type (personalized vs. non-personalized) is gated on both the UMP consent result and the ATT authorization result. If either is denied, ads are served as non-personalized.

7. Permissions we ask for

MoodMirror requests the following system permissions. The exact text shown in the system prompt is included for each:

8. Children's privacy and COPPA

MoodMirror is not directed at children under 13 (or under 16 in jurisdictions where a higher digital-consent age applies under EU law). We do not knowingly collect personal information from children under 13. The App Store age rating for MoodMirror is 13+.

If we learn that we have collected personal information from a user under 13, we will suspend the account within 7 days and delete the data within 30 days. To report a suspected child user, parents may contact us at contact@moodmirror.io.

9. Data retention

10. Cookies and local storage on moodmirror.io

The moodmirror.io marketing website sets one functional cookie that remembers your light/dark theme preference. It stores only your visual preference and does not track you across sessions or sites. Under EU ePrivacy classifications it is a functional cookie, not a tracking or advertising cookie, and does not require consent under the “strictly necessary” exemption.

We do not use tracking cookies, advertising cookies, or third-party analytics on the marketing site at this time.

11. International data transfers

MoodMirror and most of our sub-processors operate in the United States. Specifically: Supabase (AWS us-east-1 by default), Anthropic, RevenueCat, Google AdMob, Google Sign-In, Apple Sign In with Apple, and Expo / EAS are all US-based.

For users in the EEA, UK, or other jurisdictions with data-transfer restrictions, transfers rely on the Standard Contractual Clauses (SCCs) contained in each sub-processor's standard data processing terms.

12. Your rights

Depending on where you live, you may have the following rights regarding your personal data:

13. Sub-processors

We share data with the following sub-processors. The data categories listed are the complete set of information each processor may receive.

Supabase

Authentication, encrypted database storage, file storage for entry attachments, and serverless Edge Functions

Region: United States (AWS us-east-1 by default for free tier)

  • Account email address and authentication credentials
  • Journal entries including titles, tags, mood, energy ratings, and free-text content
  • Photo and audio attachments uploaded to entries
  • AI reflections, weekly reports, and per-day usage counters

Anthropic PBC

Generates AI reflections via the Claude API using the model claude-haiku-4-5-20251001

Region: United States

  • User journal text including titles, tags, mood, and energy ratings
  • Recent prior entries selected for thematic context
  • Prior assistant turns within the same entry thread

RevenueCat

Subscription management, receipt validation, customer entitlement records, and webhook delivery for purchase events

Region: United States

  • Stable user identifier from Supabase Auth
  • Subscription status, entitlement, transaction history
  • App Store / Play Store receipt metadata

Google AdMob

Ad serving on the free tier, mediated through Google Mobile Ads SDK with UMP / IAB-TCF v2 consent management

Region: United States

  • When ATT is granted: IDFA (iOS Identifier for Advertisers) shared with AdMob and mediated networks for personalized ads
  • When ATT is denied or UMP consent is not obtained: vendor-scoped or limited-tracking identifiers used for non-personalized ads
  • IAB-TCF v2 consent string when applicable in the EEA / UK

Google (Sign-In OAuth)

OAuth sign-in flow that returns an identity claim used to authenticate the user with our backend

Region: United States

  • Google account identifier, email address, display name, and profile picture URL contained in the ID token

Apple (Sign In with Apple)

Sign In with Apple — returns an Apple identity claim used to authenticate the user. Users may use Apple's Hide My Email relay, in which case we store an *@privaterelay.appleid.com alias and do not attempt to resolve it to a primary email

Region: United States

  • Apple user identifier and (optionally relayed) email address
  • Display name when the user chooses to share it on first sign-in

Expo / EAS

Build infrastructure (EAS Build), submission tooling (EAS Submit), and over-the-air update delivery (EAS Update)

Region: United States

  • Build artifacts and OTA update payloads (no end-user content)
  • Push notification tokens if push is later enabled

Google Fonts

Inter and Fraunces font files used on the marketing website. Fonts are downloaded at build time and served from MoodMirror's own domain at runtime, so no end-user requests reach Google

Region: Build-time only (United States)

  • No end-user data is shared at runtime; font files are downloaded at build time only

14. Contact and policy changes

Questions about this policy? Email us at contact@moodmirror.io.

We update the “Last updated” date at the top of this page whenever the policy changes. For material changes — such as new sub-processors or new data categories — we will make reasonable efforts to notify you via an in-app banner on your next sign-in or by email.

See also our Terms of Service and our Delete Account page.