Legal
Privacy Policy
Last updated: 2026-09-08
This is written in plain language on purpose. Where a term matters legally, we've tried to also say what it means in practice. This policy describes AnimeLife version 1.0 as actually built. Every claim below was checked against the app's source code and the narration service's source code before publishing, not written from a template.
The short version
AnimeLife stores your life, your choices, and your Life Ledger only on your device. No server holds a copy of your save. App Store build 16 and Google Play version 17 have no account or login. Recovery-item account protection is unavailable in these builds, and your save is never uploaded.
Native release builds connect to RevenueCat, our purchase-management provider, to load products and verify permanent purchases. Free play may request contextual story-break ads and optional rewarded ads through Google Mobile Ads. Story Polish is optional and off by default. In build 16 and version 17, AnimeLife's writing service is not configured, so Story Polish always falls back to the bundled story text and sends no story content.
What we collect
Your gameplay data stays local by default. Your life, stats, choices, relationships, family tree, Life Ledger entries, and save slots are stored in a local SQLite database inside the app's own sandbox on your device (expo-sqlite). We do not have access to it, and it is never uploaded anywhere unless you personally export or share a card image using the app's own Share sheet.
Build 16 and version 17 do not enable recovery accounts or collect an email address. A later build may offer optional email-code account protection for unused paid recovery items. If that feature is enabled, this policy and the store privacy disclosures will be updated before release. It will not upload your life, choices, relationships, family tree, Life Ledger, save slots, character name, or payment details.
Native release builds initialize RevenueCat so the app can load products, verify purchases, restore access, and react to refunds or revocations. RevenueCat normally generates a random anonymous app-user id and may receive device and platform technical details, the last time the app was seen, and, when a purchase exists, the Apple receipt or Google purchase token and transaction status. AnimeLife does not attach your name, email address, advertising id, or gameplay history to that id. If you turn on recovery account protection, the random Supabase user id replaces the anonymous install id. RevenueCat still does not receive your email address. RevenueCat uses this information for purchase validation, entitlements, fraud prevention, and its customer-history and purchase dashboards. See the Purchases section below.
Build 16 and version 17 include Google Mobile Ads and Google's consent SDK. When an ad request is eligible, Google may process an approximate location derived from an IP address, device or app identifiers, ad impressions, clicks, rewarded completions, advertising delivery data, and crash or performance diagnostics needed to operate the ad service. AnimeLife requests non-personalized ads, does not request Apple's tracking permission, and removes Android advertising-id access. We do not send life choices or general gameplay events to Google. We do not use a separate gameplay analytics or session-recording SDK. RevenueCat's purchase dashboards are the limited purchase analytics described in this policy.
Ads
Free play may show contextual interstitial ads only after several resolved story outcomes. After the first ad, another requires at least five more outcomes and an eight-minute cooldown. The app caps interstitials at two per session. It does not use launch ads, app-open ads, banners, onboarding ads, choice-screen ads, dice-screen ads, or death-screen ads. After a failed skill check, the app may offer an optional rewarded ad for one Lucky Break. Ad availability depends on consent, network access, Google account and app eligibility, and inventory.
The permanent Remove Ads purchase suppresses both story-break ads and optional rewarded prompts. Google may show a consent or privacy-choices form where required. See Google's privacy policy for Google's practices.
Optional Story Polish
AnimeLife's entire story engine, including every event, choice, and outcome, is built from hand-written templates and runs completely offline. That's the whole game, and it's on by default.
Settings → Story Polish is an opt-in feature, off by default, that can lightly rephrase a template so repeated play feels less familiar. It never invents new choices, stats, or consequences. Every effect on your life still comes from the game's own rules, validated before anything changes.
Build 16 and version 17 have no writing-service URL configured. Story Polish therefore remains inactive in these builds and the bundled template appears immediately. No story content is sent. If a later release enables the service, this policy and the store privacy disclosures will be updated before that release.
How an enabled service would work
The code supports two testable transports, but neither is available through the build 16 or version 17 consumer experience:
- AnimeLife's narration service (the normal path). Your device sends the request to a small server we operate (a Cloudflare Worker), which forwards it to Anthropic's API using our key and streams the answer straight back. This is a server in the middle, and we run it. It exists because asking every player to paste an API key isn't a real product.
- A developer test key. Internal development tooling can call the writing provider directly. The consumer Story Polish screen does not expose this control.
What is sent for one beat
For a single story beat, and only for that beat, the request contains:
- The kind of event it is (a betrayal, a romance, a job), the era, the in-game year, and your character's age.
- Your character's first name, and the first names and roles of the people directly involved in that one beat.
- The one-line notes our writer attached to that beat: what is pressuring your character, what everyone else in the scene thinks happened, what actually did, the moment the scene turns on, and how the beat is meant to leave you hanging.
- The labels of the choices on screen, which one you picked, and the beat's own template text: the setup line, and, once you've chosen, the outcome line the game already decided.
- On a Life Ledger callback beat: the earlier line from your Ledger that this beat is paying off. A callback is the whole point of the game, and it cannot be rewritten without the thing it refers to. This is prior-beat content from your own save, and we'd rather say so plainly than let you find it in a packet capture.
What is not sent: your save file, your full Life Ledger, your family tree, your stats, your other lives, your saves list, your settings, or anything from any beat other than the one being rendered and the single Ledger line it calls back to.
Nor is the app's own rendering machinery. The number that keeps a beat looking the same each time you see it, the internal event id, and the art/text pack the beat renders from are used to draw the screen on your device and are stripped before the request is built, because nothing on the other end reads them. The list of fields that may cross the network is a fixed allowlist in code, our own service rejects any request carrying anything else, and a test walks real lives and fails if the payload ever grows a field this section does not describe.
What our narration service sees, and what it keeps
When the request goes through our service (path 1 above), it receives:
- The beat content described above, and the template prose to rewrite.
- An opaque per-install device id that the app generates on your device. It is not your name, your email, your Apple/Google account, or your advertising identifier. We use it for one thing: counting requests so one install can't run up the bill.
The service does not store your story text. It keeps exactly one thing: a counter, so it knows how many requests that install has made today. That counter expires automatically after two days. Its operational logs record only whether a request was forwarded or blocked and the HTTP status, never the beat content.
Requests are capped at a modest number per day. Past that, AnimeLife quietly reverts to the offline template for the rest of the day.
Your own key, if you use one
Developer test keys are stored in the device's secure keychain or keystore-backed encrypted storage, never in ordinary save data and never transmitted to AnimeLife's service.
External writing provider
If Story Polish is enabled in a later release, the beat content described above may reach Anthropic as the external writing provider, and its privacy policy will govern that processing. See Anthropic's privacy policy.
Reporting a beat
If you use the in-app "Report" flag on a story beat, we write a small log entry with the beat and the reason you selected to the same local SQLite database as everything else. This log never leaves your device automatically. It exists so a future version of the app can let you, or our small team if you choose to send it, see what got flagged for improving the templates. We do not currently collect these reports remotely in v1.0. If a future version adds an optional "send this report to us" action, that will be a separate, explicit choice with its own disclosure.
Purchases
If you buy an AnimeLife mode, Director Mode, a recovery item, or the Mode Collection, the transaction is handled by Apple's App Store or Google Play's standard in-app purchase system, and by RevenueCat (our purchase-management provider) to determine what you're entitled to. We do not process or store your payment details ourselves. RevenueCat receives the anonymous app-user id or protected account's random user id, technical details, and purchase records described above. It uses them to validate purchases, restore access, prevent fraud, react to refunds or revocations, and provide customer-history and purchase dashboards to us. RevenueCat acts as our service provider for this data. See RevenueCat's privacy policy for details.
Crisis resources
Settings → Crisis Resources shows a fixed, hard-coded list of hotline numbers and links (988, Crisis Text Line, SAMHSA, IASP). Tapping one of these opens your device's own Phone, Messages, or browser app. We don't see whether you tapped it, and no data is sent to us as a result.
Children
AnimeLife is rated for adults and is not directed at children. It does not ask, estimate, or verify the real player's age in the app. Storefront ratings and device parental controls govern availability. The data practices in this policy apply the same way regardless of age.
Data deletion
Deleting the app deletes your locally stored lives, choices, settings, reports, and saved API key. It does not delete transaction records held by Apple, Google, or RevenueCat. Those records are used to restore purchases, handle refunds, prevent fraud, and meet legal and accounting obligations.
If you created a recovery account, Settings → Recovery Account → Delete Account deletes the Supabase user, email, authentication data, recovery-operation journal, and RevenueCat customer. Your local lives remain on your device. Apple and Google control their own transaction and payment records, which are not deleted by removing an AnimeLife recovery account.
To ask about access to or deletion of purchase-service data, email miwoju.business@gmail.com. If you did not create a recovery account, we may need your store, product, purchase date, and RevenueCat anonymous app-user id to locate the correct record. Apple and Google also control their own transaction records under their policies.
If Story Polish is enabled in a later release, its request counter will use an opaque device id that we cannot connect to your name or email and will delete itself within two days. Deleting the app removes any developer test key stored on the device.
Changes to this policy
If we add a feature that changes what leaves your device, such as analytics, a real "send my report to you" action, or cloud saves, this policy will be updated before that feature ships. The change will be described plainly, the same way this version is.
Contact
Questions about this policy: miwoju.business@gmail.com.