Privacy Policy
Mivela is an iOS app that generates bespoke audio stories where you experience your dream life as if it's already happening. The stories are written for the specific dreams, people, and goals you share during onboarding. This policy explains what data we collect, what stays on your device, what is sent to third-party services to generate your stories, and the choices you have. We do not sell or rent your data.
1. Who we are
Mivela is operated by the developer of the Mivela iOS app (the data controller). In this policy, "we", "us", and "Mivela" refer to us, and "you" refers to the person using the app. Once Mivela's operating entity is incorporated, the legal name and registered address of the controller will be listed here.
You can contact us at privacy@mivela.app for any questions about this policy, to request your data, or to exercise any of the rights described below.
2. What we collect
Stored on your device only
The following information is stored on your iPhone. Parts of it are sent with each story, anchor and affirmation request (described below), and we don't store it on our servers:
- Your personalisation profile, captured during onboarding and editable any time from the Profile tab. Includes things like your first name, city, age, profession, relationship status, top life domains, the dream you are calling in, why it matters to you, your dream city and home, your hobbies, and the names (and optional relationship labels — e.g. "brother", "best friend") of important people in your life.
- Your language style and tone, chosen in onboarding: a preference for how your stories are worded (Grounded, Poetic or Cosmic) and how intense you would like the tone to be. This is an aesthetic choice about wording only; editable any time in Profile.
- Your anchor: the persistent dream-life narrative Mivela writes for you, played and refined over time. Stored locally with the rendered audio.
- Your story library: stories you have played recently and stories you have saved as favourites, including their full narrative text and rendered audio.
- Your verticals: the categories you organise your stories under (e.g. Career Success, Healing Relationships) and the menu of preview cards inside each.
- Your affirmation deck: bespoke affirmations and which ones you have favourited or dismissed.
- Your gratitude entries: the free-text reflections you write on the Gratitude tab.
- Your manifestation memory wall: photos you add of things you have called in that arrived, with optional captions. Photos are stored in the app's local Documents folder and are included in your iPhone's standard backup.
- Your "never include" list: words, names, and topics you have asked Mivela to keep out of your stories.
- App state: onboarding completion, subscription status cache, theme choice, voice choice, any preferences you set in Settings.
This data is stored in your device's user defaults and app sandbox. It is not synced to a cloud service controlled by us. Uninstalling the app deletes it.
Sent to our backend to generate a story, anchor, or affirmations
When you ask Mivela to write a story (Today's Moment, a vertical card, or a Custom prompt), generate or refresh your anchor, or refresh your affirmation deck, the app sends the following to our Cloudflare Worker backend, which forwards it to AI models to produce the result:
- A profile snapshot drawn from the fields above — what's relevant to writing one specific story or anchor (your dream, your dream setting, your language style, your hobbies, your "never include" list, etc.). Depending on what you entered in onboarding, it can also include your first name, city, gender, age bracket, and the names, ages and genders of your partner, children and other important people. Free-text fields are sanitised before they are sent.
- The request itself — which vertical, which preview title you tapped, what Custom prompt you typed, or (for an anchor refresh) any free-text refinements you have added.
- Your selected voice ID — chosen from the fixed set of ElevenLabs voices we offer in the app.
- A Sign in with Apple identity token — a short-lived token Apple issues when you sign in. Our backend verifies it cryptographically against Apple's public keys to confirm you are a signed-in user. The app does not ask Apple for your name or email address, so we do not receive them. We do use the stable, Apple-issued user identifier inside the token (the Sign in with Apple "sub") as your account key, as described below.
- For audio re-renders only (when your local audio cache has been evicted and you want to replay a story or anchor): the previously-generated narrative text is sent back inline, because our backend no longer keeps a copy after delivery. Your device is the canonical source.
We do not attach your email address or IP address (beyond standard request logging) to the generation payload. Our backend does, however, key your usage records, quotas and rate limits to your Sign in with Apple user identifier. This is a pseudonymous identifier: it is not your name or email, but it is a persistent identifier that is the same each time you sign in with the same Apple ID, so we treat it as personal data.
Pseudonymous usage analytics
In production builds of the app downloaded from the App Store, Mivela captures usage events through PostHog to understand how the product is used and where to improve it. Examples of events captured:
- Which screen you are viewing
- Whether you completed onboarding and which life domains you picked
- When you start, complete, or abandon a story
- When the paywall is shown, dismissed, or results in a purchase
- When you sign in with Apple
These events are tied to your Sign in with Apple user identifier, the same identifier our backend and RevenueCat use for your account (see below), so that we can look at retention and conversion across the three. We also attach a few properties to that profile in PostHog: whether you have a subscription, which plan, whether it is a free trial, the month you installed, your chosen voice, whether you have finished onboarding, and how many life goals you picked. We do not send your name, email address, or any free text you have written. PostHog also records app crashes and unhandled errors against the same identifier. TestFlight builds do not send analytics events; our internal development builds send them to a separate test project.
Install attribution (AppsFlyer)
When we advertise Mivela (for example on TikTok or Instagram), we use AppsFlyer to learn how people find the app: which ad, if any, led to an install, and whether that install went on to a subscription. In App Store builds, the AppsFlyer software in the app sends AppsFlyer:
- Install and app-open events, with their time
- Device details: model, iOS version, language, app version, and IP address
- Apple's identifier for this app on your device (IDFV), and Apple's privacy-preserving ad attribution data (SKAdNetwork / AdAttributionKit)
- Only if you allow tracking: your device's advertising identifier (IDFA)
- After you sign in, your Sign in with Apple user identifier, the same pseudonymous identifier used for analytics and purchases, so that we can match an install to a subscription
The first time you open Mivela, iOS asks whether Mivela may track you. If you choose "Ask App Not to Track", the advertising identifier is never sent. You can change your choice at any time in iOS Settings → Privacy & Security → Tracking. AppsFlyer never receives your profile, stories, gratitude entries, photos, name or email address. TestFlight builds send nothing to AppsFlyer; our internal development builds send test data.
To report an install to the ad network that showed the ad, AppsFlyer tells that network (for example TikTok or Meta) that the install came from its ad. If you allowed tracking, this can include your advertising identifier.
Subscription and purchase data
Subscriptions and purchases are managed by RevenueCat on top of Apple's in-app purchase system. RevenueCat identifies you by your Sign in with Apple user identifier (in internal development builds, that identifier carries a "dev:" prefix) and receives Apple's purchase receipt data. It does not receive your name, email address, payment method, or Apple ID. Apple handles the actual payment; we never see your payment details. This identifier is pseudonymous rather than anonymous: it is the same one used for analytics and by our backend, which lets us match purchases to your account.
Our backend receives subscription and purchase notifications from RevenueCat and keeps a cached copy of your subscription status (plan, whether it is active, trial status, and expiry date) so it can check your access quickly.
Sparks (credit packs)
As well as subscriptions, Mivela sells "sparks": consumable packs of credits (currently 5, 20 or 50) that you can spend on extra stories or anchors beyond your daily allowance. Sparks are bought through Apple's in-app purchase system and RevenueCat, like a subscription. Your spark balance is kept on our backend against your Sign in with Apple user identifier, because the balance has to be reliable across devices and reinstalls. For each purchase, spend or refund we also record a ledger entry: the amount, the new balance, the type of event, a timestamp, and (for purchases and refunds) RevenueCat's event identifier. The ledger holds no story text and no payment details. See section 5 for how long this is kept.
3. How we use your data
- To write and narrate your story. Your profile snapshot and the story request are used by Anthropic's Claude to write the narrative, then by ElevenLabs to render it as audio in your chosen voice.
- To produce your affirmation deck. The same profile snapshot is used to generate batches of bespoke affirmations.
- To enforce fair use. Your Sign in with Apple identifier is used for per-user rate limiting, daily usage limits, and keeping your spark balance accurate.
- To keep records of purchases and usage. We keep a ledger of spark purchases and spends, and a record of generation and subscription events, so that we can resolve disputes and refund requests, support you, and understand costs.
- To keep the product working. Cloudflare's edge network serves our backend; standard request logs exist for reliability and abuse prevention.
- To measure our advertising. Install attribution (AppsFlyer) tells us which ads bring people to Mivela, so that we spend on the ones that work.
- To improve the app. Pseudonymous analytics help us understand which features are used and where users drop off. We use this to fix bugs, improve onboarding, and prioritise development.
4. Who we share data with
Mivela uses the following third-party processors to operate. Each is contractually limited to processing your data solely for the purposes described below:
- Anthropic (story, anchor, and affirmation generation). Your profile snapshot and the generation request are sent to Anthropic's Claude API via our Cloudflare Worker backend. Anthropic's handling of API inputs and outputs — including their position on training, retention, and abuse monitoring — is governed by their own published policies, which we link below. Those policies are maintained by Anthropic and may change; please check the linked pages for the most current terms. See Anthropic's privacy policy and commercial terms.
- ElevenLabs (text-to-speech). The narrative text is sent to ElevenLabs to render as audio in your chosen voice. ElevenLabs' handling of API inputs and outputs — including training, retention, and abuse monitoring — is governed by their own published policies. Those policies are maintained by ElevenLabs and may change; please check the linked page for the most current terms. See ElevenLabs' privacy policy.
- Cloudflare (backend hosting). Our backend runs on Cloudflare Workers, and your audio is briefly held in Cloudflare's storage while it is delivered to your device. Cloudflare also stores the account records described in section 5. See Cloudflare's privacy policy.
- Apple (Sign in with Apple, payments, app delivery). Apple verifies your identity for sign-in and handles all in-app purchase transactions. See Apple's privacy policy.
- RevenueCat (subscription and purchase management, including sparks). See RevenueCat's privacy policy.
- PostHog (analytics, App Store builds only). See PostHog's privacy policy.
- AppsFlyer (install attribution, App Store builds only). See AppsFlyer's services privacy policy.
We do not sell or rent your data to anyone. We do not use your profile, stories or anything you write for advertising. The only data that reaches advertising companies is the install attribution described in section 2: AppsFlyer telling an ad network that an install came from its ad, with your advertising identifier only if you allowed tracking.
5. How long we keep data
Story and anchor content works as a delivery buffer: it is held briefly so your device can collect it, then removed on a timer. Some small account records are different, though. We keep them for longer (in some cases with no automatic expiry), and we set them out below so you can see exactly what they are. Specifically:
Short-lived delivery data
- On-device data (profile, anchor, story library, affirmations, gratitude entries, memory wall photos): stored locally until you uninstall the app or clear it from Profile.
- Generation requests sent to upstream providers: Anthropic and ElevenLabs each maintain their own retention windows for the API requests they receive. We do not control those windows. Please refer to the upstream policies linked in section 4 for current retention statements.
- Rendered story audio: held on our Cloudflare backend for up to 30 minutes while your device downloads it, then automatically deleted.
- Rendered anchor audio: held for up to 30 minutes, then automatically deleted.
- Narrative text (story or anchor): carried in the temporary job record described below so that your device can collect it, and not kept once that record expires. If you later need to re-render the audio, your device sends the text back to us inline.
- Story prompt preview lists: not retained on our backend. The list is generated on demand and held only on your device.
- Job status records (used to coordinate the generation pipeline): deleted automatically 30 minutes after the job starts (stories and the anchor).
- In-progress markers (used to avoid starting the same generation twice): about 8 minutes.
- Idempotency tokens (used to prevent double-charging on a network retry): up to one hour.
- Operational logs (request identifiers, your Sign in with Apple identifier, status codes, and cost figures; not story text): kept for about 3 days in our Cloudflare logs.
Account records we keep against your Sign in with Apple identifier
These records are keyed to your pseudonymous Sign in with Apple user identifier. They contain no story text, audio, or payment details.
- Spark balance and markers: your current balance, plus markers that stop the same purchase, spend or refund being counted twice. Kept while your account exists. Deleted when you delete your account.
- Purchase and spend ledger: one small record for each spark purchase, spend, refund or manual adjustment (amount, resulting balance, type, timestamp, and RevenueCat's event identifier where there is one). Kept while your account exists, and for 90 days after you delete it, so we can handle refunds and disputes. Then deleted.
- Generation and subscription history: one small record each time a story or anchor is completed (the story category or anchor identifier, audio size, narrative length, and the generation cost) and each time a subscription is activated, lapses or is refunded (event type, expiry date, trial status). Kept while your account exists, and for 90 days after you delete it, for refunds, disputes and support. Then deleted.
- Subscription status cache: your plan, whether it is active, and its expiry date, kept until 7 days after the subscription expires (for lifetime or open-ended access, up to 50 years). Deleted when you delete your account.
- Daily usage counters: how many stories, previews, affirmation refreshes, anchors and audio renders you have used today. Each counter resets automatically on the next UTC day. We do not delete counters when you delete your account.
- Free preview marker: a keyed one-way hash of your Sign in with Apple identifier, with no other personal details. It stops the one-off free preview being claimed again. Kept for 12 months after you delete your account, then deleted.
- Sign in with Apple refresh token: stored so that we can revoke it with Apple if you delete your account. We delete it when you delete your account. If you do not, it expires automatically after 1 year.
We keep these records on the basis of legitimate interest (preventing abuse and cost-cycling, resolving disputes, and supporting you) and, for purchase records, to meet accounting obligations. Section 6 explains what happens when you delete your account.
Held by other companies
- Analytics events and crash reports: retained by PostHog according to our PostHog plan's retention window. Deleting your account in the app may not yet remove this data. To have it deleted sooner, email us (see section 6).
- Install attribution data: retained by AppsFlyer under its own retention terms (see its policy in section 4). Deleting your account in the app does not yet remove this data. To have it deleted, email us (see section 6).
- Subscription and purchase records: held by RevenueCat and Apple under their own policies. When you delete your account, we ask RevenueCat to delete its customer record. Apple keeps its own billing records.
6. Your rights
Depending on where you live, you may have some or all of the following rights:
- Access a copy of the data we hold about you.
- Correct data that is inaccurate.
- Delete your data. Most data lives on your device — uninstalling the app removes it entirely. You can delete your account in the app (see below). Data held by processors, including analytics, can be deleted on request, although we may need to keep purchase records where the law requires it.
- Object to processing based on legitimate interest (this includes our analytics).
- Withdraw consent for anything you previously consented to.
- Complain to a data protection authority if you are in the EU or UK.
To exercise any of these rights, email privacy@mivela.app. If you want us to delete data held by our processors (for example, to have your story requests (which carry no account identifier) removed from Anthropic's or ElevenLabs' retention windows), include enough context (approximate dates, device type) that we can identify which records to remove.
Deleting your account from inside the app
You can delete your account in Settings → Account → Delete account. Before you confirm, the app tells you how many sparks you will lose. Sparks cannot be restored after deletion.
What we delete: your account record; everything Mivela holds on your device (profile, stories, anchor, affirmations, gratitude entries, memory wall photos, cached audio and the local encryption key); your profile; your spark balance; your subscription status record; and your Sign in with Apple token, which we revoke with Apple. We also ask RevenueCat to delete its customer record for you.
What we keep, and for how long:
- Purchase, spend, generation and subscription records are kept for 90 days after you delete your account. We keep them so that we can handle refunds and disputes. We then delete them.
- Daily usage counters are not deleted when you delete your account. They reset automatically each day.
- A coded marker is kept for 12 months. It is a keyed one-way hash of your Sign in with Apple identifier. It holds no other personal details. We use it only to stop the one-off free preview being claimed again. Our lawful basis is legitimate interest (preventing abuse).
Subscriptions. Apple bills your subscription. Deleting your account does not stop it. Cancel it first in your App Store subscriptions.
Analytics and attribution. Deleting your account in the app may not yet remove your data from PostHog, and does not yet remove it from AppsFlyer. We keep this data as set out in section 5. To have it deleted, email privacy@mivela.app.
Temporary delivery data (job records and audio) is not deleted at that moment. It expires on its own timers, as set out in section 5. Uninstalling the app also removes everything held on your device.
7. Lawful basis (for users in the UK, EU, and similar jurisdictions)
Where GDPR or a similar law applies, we process your data on the following lawful bases:
- Contract: to deliver the core story-generation feature you requested when you tap a story or refresh your affirmations, and to honour the subscriptions and sparks you buy.
- Consent: to send your device's advertising identifier to AppsFlyer, only if you allow tracking when iOS asks. You can withdraw consent at any time in iOS Settings → Privacy & Security → Tracking.
- Legitimate interest: to run pseudonymous analytics and crash reporting (PostHog) in order to measure feature usage, improve the product, and diagnose issues; to measure which of our ads lead to installs and subscriptions (AppsFlyer, without the advertising identifier); to enforce per-user rate limits and daily usage limits for cost control and abuse prevention; to keep purchase, spend, generation and subscription records for 90 days after account deletion for refunds and disputes; and to keep a coded marker (a keyed one-way hash of your Sign in with Apple identifier) for 12 months after account deletion, solely to stop the one-off free preview being claimed again. You can object to this processing by contacting us.
- Legal obligation: to respond to valid legal requests where we are required to, and to keep purchase records for accounting.
If you prefer not to participate in analytics at all, contact us to request an opt-out.
We don't ask for, and don't intend to process, special-category data. That means information about your health, religious or philosophical beliefs, sexual orientation, and similar sensitive topics. Please don't include it in the free-text fields (for example, your self-description, your dream, or your "never include" list). If you do choose to share something like this, it is used only to write the story you asked for, and it is handled in the same way as everything else you write in the app. You can edit or delete it at any time in Profile.
8. Age requirement
Mivela is intended for users aged 18 and over. By creating an account or using the app, you confirm that you are at least 18 years old. We chose this threshold because Mivela is a recurring paid subscription, which requires the capacity to enter a binding contract. We do not knowingly collect data from anyone under 18. If you believe a person under 18 has used the app or that we hold data about them, contact us and we will take appropriate steps, including deletion of any applicable data and termination of the account.
9. Security
Communication between the app and our backend is encrypted over HTTPS/TLS. Data held on our backend sits on Cloudflare's infrastructure; delivery data expires automatically, and the account records in section 5 stay until deleted. The Sign in with Apple identity token is verified cryptographically against Apple's public keys on every request. No internet-connected system is perfectly secure; we do our best to protect your data.
Notifying you of a data incident
Because we deliberately do not collect email addresses or other direct contact information (see section 2), we cannot send you a personal message if a data incident occurs. If we become aware of an incident that affects you, we will notify you through:
- An in-app banner shown the next time you open Mivela. The banner appears at the top of the Home screen and explains the incident in plain language. You can dismiss the banner once you have read it.
- A persistent record in Settings → Notices inside the app. Even after you dismiss the banner, the full text of every active notice remains available there for as long as the notice is published — typically 30 to 60 days for an incident — so you can re-read it any time.
- A prominent notice published on this website, which serves as the permanent public record. The in-app notices link to this page when more detail is needed.
Where the law requires us to notify a supervisory authority (for example, under GDPR Article 33, which requires notification of qualifying breaches within 72 hours), we will do so within the required time window. Where the law allows public communication as an equivalent measure to direct notification (GDPR Article 34(3)(c)), we rely on the combination of in-app banner, Settings → Notices archive, and public notice on this site as that equivalent measure.
10. International transfers
Our processors (Anthropic, ElevenLabs, Cloudflare, Apple, RevenueCat, PostHog, AppsFlyer) operate globally. Your data may be processed in the United States, the European Union, or other jurisdictions depending on the processor and your location. Each processor maintains its own safeguards for international transfers, typically via Standard Contractual Clauses or equivalent.
11. Changes to this policy
We may update this policy when we add features, change processors, or clarify how we handle data. The "Last updated" date at the top of this page reflects when the current version took effect. Material changes will be announced in the app or by email where we have one.
12. Contact
For any questions about this policy, to exercise your rights, or to report a concern, email privacy@mivela.app.