Last updated: 2026-10-23
MusicMood is an Android application designed to help you understand the relationship between your music listening habits and your emotional well-being. The app operates on a principle of automated, passive analysis combined with user-controlled privacy.
Music Detection & Analysis: The app observes the songs you listen to natively on your device. Rather than relying on simple, generic database tags, basic track details are sent to Google’s Gemini AI service for analysis — extracting multi-dimensional musicological qualities (such as musical intensity, vocal delivery, tempo ranges, and core lyrical themes) that populate your personal on-device baseline.
Contextual Integration & Summarization: To transform raw listening metrics into meaningful insights, MusicMood correlates your song history with real-time context. This includes your location categories (like home, work, or gym), calendar events, weather, time of day, and current physical activity (such as driving, walking, or running), alongside physiological metrics (like heart rate and HRV-derived stress) from your wearable devices. To compile comprehensive daily summaries, anonymous contextual baselines and aggregated biometric statistics (daily heart-rate and stress ranges, hourly averages) — stripped of identity markers, never raw sensor samples — are processed by Google’s Gemini AI service to generate the natural-language summary you see in-app.
Personalized Baseline: By combining this data with specific details you provide about what different types of music mean to you, the app establishes a personalized listener profile unique to your habits.
Longitudinal Trends: Your data is structured into distinct listening sessions that aggregate into days, weeks, and months, allowing you to see how your habits shift over time.
Predictive Mood Journaling: This continuous history enables a smart mood-journaling interface. Instead of forcing you to face a blank page, the app reduces the effort of journaling by providing a predicted mood for the day alongside contextual examples of what you did and listened to, allowing you to easily validate, adjust, or reflect on your emotional trends.
The purpose of this document is to provide complete transparency regarding the specific device permissions MusicMood requests and to explain exactly how they are used to power your experience.
Android/data/, unreadable by other apps), used to debug issues. A You-page “Export Logs” action copies them to Documents/MusicMood/exported-logs/ on demand.All of the above is stored in an on-device SQLite database (musicmood.db), in cached image files, and in text log files. Your personal data — listening history, context, biometrics, journal — is never uploaded to any server we control.
The only server infrastructure MusicMood operates is a small backend (Google Firebase) with two jobs: (1) it relays AI requests so the AI API key never ships inside the app, and (2) it maintains a shared cache of song analyses. That cache stores universal facts about songs — title, artist, album, the AI’s musicological analysis, and public metadata such as release year, track duration, and popularity statistics — never your identity, your listening history, your location, your biometrics, or your journal. An analysis generated when you play a song may be served from this cache to other users (and vice versa); nothing in a cached entry indicates who triggered it. Personal-context requests (session mood summaries, daily insights) pass through the backend as a relay only and are not stored on it.
These services receive the listed inputs only — no other data, no personal identifiers, and no historical behavioral timelines beyond the current request. (Requests to our own backend carry the anonymous token described in its row; no third-party service receives any identifier at all.)
| Service | What we send | What it returns |
|---|---|---|
| MusicMood backend (Google Firebase, operated by the developer) |
AI analysis requests (relayed to Google Gemini as described below). Song-analysis requests and their results are stored in the shared song-analysis cache, together with the song’s public metadata (release year, duration, popularity statistics). Every backend request carries an anonymous, randomly-generated authentication token created per install plus a device-integrity attestation — both used solely to prevent abuse of the AI quota. The token is not linked to your name, email, device identifiers, or any account, and is not stored with cached song analyses. | Song analyses (from the shared cache or freshly generated) and relayed AI responses. |
| Google Gemini API (Google LLC, via the backend relay) |
Song title, artist, album, optional release metadata (release year, genre). For session mood summaries: anonymized session-level context including aggregated activity, location category, weather, time of day, aggregated listening statistics (e.g. your recent harsh-vs-clean vocal mix), and aggregated biometric statistics (e.g. daily heart-rate/stress ranges and hourly averages) — never raw GPS coordinates, never raw heart rate samples. Calendar context is included two ways: (1) per-song/session context carries only a short keyword phrase derived from the event title plus its category (e.g. “eye doctor”, medical) — not the full title; (2) the once-daily insight and session-level mood analyses additionally include the titles of notable, non-routine calendar events verbatim — concerts, trips, holidays, and personal milestones such as weddings, anniversaries, birthdays, and memorials — within a bounded window around each event (up to 10 days before and 7 days after, extended for grief-related events), accompanied by the display name of the calendar they belong to (e.g. a subscribed “Phases of the Moon” calendar) when that name aids interpretation — because the event name itself (e.g. which band you’re seeing) is what powers those insights. Routine and recurring events (regular work meetings, weekly classes) are filtered out and never sent by title, and calendar items that are really to-do reminders are never treated as attended events. An event’s category may additionally be derived on-device from the type of venue in its location field (e.g. a movie-theater address categorizes the outing as a movie) — the address itself is never sent anywhere. For a notable event whose title can’t be categorized any other way, the daily insight may run a one-time, cached, web-grounded Gemini check asking whether the title is a currently-playing movie; that request contains the event title only. Daily insights and mood analyses can also draw on your daily mood check-ins, under the in-app controls described in “Your journal-sharing controls” below: check-in ratings (e.g. “Good”, “Rough”), and — only if you enable journal access — the text of check-in notes and journal entries. | Per-song musicological analysis (genre, mood, vocal style, lyrical themes, confidence) and session-level natural-language mood summaries. |
| MusicBrainz (MetaBrainz Foundation, public web service) |
Song title, artist, optional album | Release year, album name, track duration |
| Last.fm (Audioscrobbler / CBS Interactive) |
Song title, artist | Listener count and community tags. Used as a popularity anchor for AI confidence calibration; never queries your personal listening history. Only active when a Last.fm API key is configured in the build. |
| LrcLib (lrclib.net) |
Song title, artist, optional album and duration | Synchronized lyrics |
| Genius (Genius Media Group) |
Song title, artist (only when LrcLib has no lyrics for the song, or when you switch the lyrics source to Genius manually) | Lyrics |
| Open-Meteo (open-meteo.com) |
Latitude/longitude | Current weather conditions |
| Overpass / OpenStreetMap (overpass-api.de) |
Latitude/longitude | Local road speed limit (used to detect slow traffic when driving) |
Use of each third-party service is subject to that service’s privacy policy. None of these services receive your name, email, permanent device identifier, full historical timelines, unshared journal entries, or raw biometric samples. Calendar data flows only to Google Gemini, only in the two limited forms described in the table above. Requests sent to Google Gemini are subject to Google’s Generative AI API terms.
Daily mood check-ins (a rating like “Good” or “Rough”, plus an optional written note) are the most personal data in the app, so their use in AI features is governed by explicit in-app controls (You page → Check-ins & Journal Options):
We do not sell, rent, or share your data with any third party for advertising, analytics, or marketing purposes.
The third-party APIs listed above receive only the inputs specified. They are not provided with your listening history, journal entries, health metrics, or any identifier tying their request back to you.
MusicMood has no accounts, so most privacy rights are things you exercise directly on your device:
We do not sell personal information, and we do not share it for cross-context behavioral advertising (as those terms are defined under the California Consumer Privacy Act). If you are in a region with statutory privacy rights (such as the EU/UK GDPR or a US state privacy law) and want anything beyond the tools above, email the contact address below and we will handle it directly.
MusicMood is not directed at children under 13. We do not knowingly collect data from children. If you are a parent and believe your child has been using MusicMood, uninstalling the app removes any locally-stored data.
If MusicMood’s data handling changes, this policy will be updated and the “Last updated” date above will change. Material changes that affect what data is collected or shared will also be disclosed in-app.
MusicMood’s Terms of Use are presented for acceptance at first launch and remain available inside the app (You page) and on this site.
Maintainer: Matthew Harkless Email: support@harkcode.app
If you have questions about this policy, want to request deletion of data, or report a concern, email the address above.