Publisher: Casian Dan Colto (individual sole publisher, based in Germany) · Contact:casian.colto@gmail.com
TL;DR. vibe-ai needs an account so the recommendations get smarter for you over time. We store the songs you've played and which moods you tend to gravitate toward. We never store the raw text of your searches — only a hash. We never sell your data. You can delete everything any time from Settings → Account → Delete Account.
1. Who's responsible for this data
The data controller is Casian Dan Colto, an individual sole publisher based in Germany. You can reach me at casian.colto@gmail.com.
2. What we collect
2.1 Account data
Provided by you and your sign-in provider (Google, Apple, or email/password) when you create an account:
Email address
Display name (optional — provided by Google/Apple)
Profile photo URL (optional — provided by Google)
The sign-in method you used
A Firebase-assigned anonymous user ID
2.2 Listening data
Created as you use the app:
Songs you've tapped to play, including title, artist, and genre
Time-of-day you listen (hour bucket, UTC)
Mood tags associated with played songs (e.g. "nostalgic", "melancholic")
Aggregate counts per artist / genre / mood — used to personalise recommendations
2.3 Search data
Created as you search:
A SHA-256 hash of your search query. The raw query is never stored on our servers.
The mode (song search or vibe search) and the number of results returned.
A snapshot of the AI-generated vibe profile for each search (anchor song, mood tags, must-match list).
2.4 Cost & usage data
For each AI request you make:
Number of tokens sent and received
USD cost
Which AI provider served the request
Aggregated per-month for your monthly cost cap (see §5)
2.5 Taste preferences
Manually entered by you in Settings:
Favourite genres / artists / mood
Genres to avoid
Discovery level
Custom instructions for the AI
2.6 Diagnostic data (Firebase Crashlytics + Firebase Performance Monitoring)
iOS version, device model, app version, locale
Stack traces when the app crashes
Performance traces (e.g. how long an AI request took)
A randomly-generated installation identifier (not tied to your account)
2.7 Approximate location (opt-in)
If you enable "Use approximate location" in Settings and grant iOS location permission:
The app reads your approximate location (~3 km radius — controlled by iOS's "Precise Location" toggle, which we ask to be off).
The coordinates are reverse-geocoded on your device into a "City, Country" label (e.g. "Berlin, Germany").
Only that label leaves your device. Raw GPS coordinates are never sent to our servers, never stored, never shared.
The label is included as a hint to the AI prompt so recommendations can lean toward music that fits where you are.
Off by default. You can turn it off any time in Settings; the cached label is cleared immediately.
Sensitive fields (raw search queries, raw user input, custom instructions) are SHA-256 hashed before they reach Firebase Analytics. Arrays of song titles are stripped entirely. The Identifier-for-Advertising (IDFA) is not collected.
2.9 Playlist exports (public pages)
When you export a playlist, vibe-ai publishes a page at listentoyourvibe.com/p/… containing the playlist's name, its vibe text (if it came from a vibe search), the song titles/artists/artwork, and links to those songs on other services. This page is public — anyone with the link can view it (the URL is random and unguessable, and pages are excluded from search engines). Export pages are only ever created by you pressing Export, and the point of them is to be shared. If you want one taken down, contact us and we'll delete it.
2.10 Purchases
Payments are processed by Apple — we never see your card or billing details. To deliver what you bought (export packs, subscriptions), we store your purchase state (plan, expiry, remaining export credits) keyed to your account, and our payments partner RevenueCat processes your purchase receipts and an app-user identifier on our behalf (see 4.4).
3. What we DON'T collect
Your raw search text
Your contact list, photos, microphone, camera, or location
Health data, financial data, or sensitive personal categories under GDPR Art. 9
We do not send your email, your Firebase user ID, your sign-in provider, your device identifiers, or your full play history. OpenAI processes this under their API data-usage policy; per that policy, requests made via the API are not used to train OpenAI's models.
4.3 Apple
Apple MusicKit — runs on your device to search the Apple Music catalog and play tracks. Data sent to Apple Music is governed by Apple's privacy policy. vibe-ai creates a library playlist called "vibe ai" in your Apple Music library and appends recommended tracks to it.
4.4 Payments (RevenueCat) & export links (Google)
RevenueCat (US) — processes in-app purchase receipts from Apple and tells our backend what you're entitled to. It receives your app-user identifier and purchase history, never your payment details. Subject to RevenueCat's privacy policy.
YouTube Data API (Google) — when a playlist is exported, our backend looks up matching YouTube videos by song title/artist. Only the song metadata is sent — nothing about you.
4.5 Optional metadata enrichment
Last.fm and Genius — if (and only if) you enter your own API keys for these services in Settings, the app calls them from your device to enrich the prompt with metadata. We don't proxy these calls and we don't see your keys.
4.6 We do NOT
sell your data to anyone, ever
share data with advertisers
share data with data brokers
5. How long we keep it
While your account exists:
Account profile, listening buckets, usage totals, search records — retained for as long as your account exists.
Play events — retained per the cap configured in the app (most recent N events); older ones are pruned automatically.
Crashlytics crash reports — retained ~90 days, per Google's defaults.
Analytics — retained per Google Analytics defaults (up to 14 months, in aggregated form).
After you delete your account (industry-standard retention timeline):
Active Firestore data (your /users/{uid}/... documents) — deleted immediately.
Database backups — purged within 30 days, per Google's standard backup-retention timer.
Function logs referencing your Firebase UID — expire within the 30-day Cloud Logging window.
Aggregated, fully-anonymized statistics (with no link back to you) may be retained indefinitely for service improvement.
We will hold data longer only if a specific law explicitly requires it (e.g. a court order); this is rare for a consumer music app.
6. Your rights under GDPR (and your equivalents elsewhere)
Wherever you live, you have these rights for data we hold about you:
Access — request a copy of the data we hold.
Rectification — correct any inaccuracies in your taste profile or account info.
Erasure — delete your account (instant via Settings → Account → Delete Account) or write to casian.colto@gmail.com.
Restriction — pause processing while a dispute is resolved.
Portability — receive your data in a machine-readable format.
Objection — object to processing based on legitimate interests.
Withdraw consent — for anything that depends on your consent.
Complaint — file a complaint with your local supervisory authority. In Germany the publisher's competent authority is determined by the federal state (Bundesland) of residence; you can find the right one via the federal directory. Users outside Germany may file with their own national authority.
Our infrastructure runs in Google Cloud us-central1 (Iowa, USA). When you use the app, your data is transferred from your device to the United States. This transfer is covered by:
Standard Contractual Clauses — as the secondary safeguard.
OpenAI is also based in the United States. The same safeguards apply.
9. Children
vibe-ai is not directed at children under 13 (or 16 in the EU). We don't knowingly collect data from anyone in that age group. If you believe a minor has registered, email casian.colto@gmail.com and we'll delete the account.
10. Security
All data in transit is encrypted with TLS 1.3.
All data at rest in Firestore is encrypted by Google with AES-256.
AI provider API keys are stored as Firebase Secrets and never reach the iOS app.
Calls to our backend are gated by Firebase Auth + Firebase App Check (Apple App Attest), so only the real vibe-ai app binary on a real iOS device can invoke them.
No system is perfectly secure. We will notify affected users within 72 hours of becoming aware of a breach that materially affects them, per GDPR Art. 33–34.
11. Changes to this policy
We may update this policy. When we do, the Effective date at the top changes and we'll surface the new policy on the next app launch via the Privacy & Terms sheet in Settings → Account. Material changes will also trigger an in-app dialog asking you to review.