Privacy policy
Waifu Unzipped: Fashion Jam
Last updated: 2026-10-24 (an account linked to Google can be deleted on our delete-account page by signing in with Google, once that sign-in is set up; Google handles the sign-in, and we read only your Google account id from it to find the linked save and keep nothing from it but a random one-time code linked to no one; before that: a daily count of the requests that change your game is kept with your game progress, so one account can only make so many a day; before that: a daily count of wins played offline is kept with your game progress, and a level played offline is timed from how long ago your device says it started; before that: App Store purchases: Apple's server now tells ours when it refunds an App Store purchase or a subscription renews, fails to renew or ends, so a refund takes back what it granted; we keep only Apple's notification id, type and time for 30 days, with no account; a refunded App Store subscription period that never reached us keeps its own hash and its subscription's, with no account; before that: rewarded ads: the app gives AppLovin your anonymous account identifier and a random id for each rewarded ad, AppLovin's server sends them back when the ad pays out, and we keep that record for 7 days, and Download My Data does not include it; before that: ban appeals and the suspension record are disclosed: what you wrote (at most 500 characters), the reviewer's decision, and the suspension's start, end and reason, read only by our reviewers and kept while the account exists; before that: Download My Data now also returns your first-clear record, furniture affection record, account-merge record (when and with which sign-in provider, not the other account) and Petal Pass period records, leaving out only the short-lived guards kept at most 72 hours and the request counter, and the exported file is deleted after sharing and when you delete your account; the request counter is described as deleted within about 2 hours and the IP hash as deleted within 9 days, matching the cleanup schedule; a deleted account's old token is refused; only a request counter is written, and it is deleted within about 2 hours)
Who we are
Waifu Unzipped is run by a solo developer. The fastest way to reach a person is email: waifu.unzipped@gmail.com
What we collect, and why
We do not ask for your name, email address, phone number, or contacts. There is no sign-up form, and playing requires no account.
Signing in with Google is optional - it exists only so your save survives a lost device. If you do, we store the stable account identifier Google gives us and nothing else: not your email, not your name, not your profile picture. If you never sign in, your save is tied to the device and we have no way to identify you as a person at all.
If you sign in on a new device and choose to keep your linked save, the anonymous save that device held is abandoned: nobody can reach it any more. If you instead choose to keep this device's progress, the save that was linked to your Google account is the one abandoned. We mark an abandoned save and delete it once it has been unused for 30 days; if it is used again before then, it is kept. Up to 100 abandoned saves are deleted each night, so when there is a backlog a save can take a few days longer than 30. A deletion that fails is retried the next night.
| Data | Why we hold it | Where it comes from |
|---|---|---|
| An anonymous account identifier | To attach your progress to your device | Generated on your device at first launch |
| A device secret (stored only as a one-way hash) | To prove later launches are the same device | Generated on your device |
| Your date of birth | To confirm you are old enough for the chat feature | You enter it once |
| The time you last opened the game | To give a welcome-back gift after a few days away, and to let the character notice how long you were gone | Your device opening the game |
| Game progress - levels, petals, items, streaks | To make the game work | Your play |
| Relationship data - affection, gifts, episodes | To make the game work | Your play |
| Chat messages you send and the replies you receive | To hold a conversation and to remember its context | You |
| Short “memory” notes about you, written by the AI, and the wording of notes you deleted (a do-not-remember list) | To let the character refer back to earlier conversations, and to help keep a deleted note from being learned again | Derived from your chat messages |
| Subscription records (the store's own subscription identifier - the Google purchase token or Apple original transaction id - the end time it reports, and the latest order id of each pass (a renewal order id once the pass renews); for a held or paused pass, kept for up to 100 days after the hold was first seen) | To stop a lapsed pass granting its benefits on the day it ends, and to restore one that recovers | Google Play / the App Store |
| Purchase records (a hash of the store receipt, product, date, a one-way hash of the store order and what the purchase granted (petal amounts, consumable counts, sticker ids and a character id) so a refund can take them back; the one-way hash of the receipt of a refunded purchase that never reached us (for an App Store subscription period, also the hash of its subscription), with no account attached; for a subscription also which of your saves last used its daily perks and on what day, and one-way hashes of any of its orders the store refunded) | To grant what you bought and stop the same purchase being redeemed twice | Google Play / the App Store |
| Chat reports - when you report an AI reply: the reported reply text, which character sent it, and when (plus a count of how many reports you made today, at most 20 a day) | To review harmful AI output | You, when you report a reply |
| Ban appeals - if your chat is suspended and you appeal: what you wrote (at most 500 characters), when, and the reviewer's decision, note and time; and the suspension itself (start, end, reason) | To let a person review a suspension, one appeal per suspension | You, when you appeal; the suspension comes from the content-safety check |
| Content-safety scores on chat messages | To detect and block prohibited content | Automated classification of your messages. The replies the AI writes are checked the same way; nothing from that check is kept |
| A salted, one-way hash of your IP address (for an IPv6 address, of its network part - the first 64 bits); deleted within 9 days | To limit how many accounts can be created from one network per day | Your connection |
| Request counters - one for your account and one for your network (the same salted, one-way hash of your IP address, or of its first 64 bits), each with the start of its current minute; deleted by an hourly cleanup once idle for an hour, and the one keyed to your account is deleted with your account (a counter that a device still signed in to that account creates afterwards expires within about 2 hours) | To stop one account or network flooding the service with requests, and to limit Google sign-in attempts | Your connection and your play |
| Rewarded-ad records - when a rewarded ad you watched pays out: AppLovin's id for that ad view, a random id the app made for it, and when the reward was confirmed and claimed; deleted after 7 days | To pay a rewarded-ad reward only for an ad that was really watched, and only once | AppLovin's server, when the ad pays out |
| The start and end times of your last 20 wins (for a level played offline, worked out from how long ago your device says it started), and daily counts of wins played offline, of requests that change your game, of messages sent for safety checking, of purchase checks and of AI model calls (kept with your game progress) | To stop two levels played at the same time both paying out, to cap the offline wins that pay each day, to cap how many changes one account can make a day, and to cap calls to the AI provider (OpenRouter), the content-safety service and the app stores | Your play |
| If you allow notifications: your device’s push token, its platform, and the hour your daily note arrives (worked out from your device’s time zone; at most 3 devices per account) | To deliver the notes you allow, at an hour that is not the middle of your night | Your device, when you allow notifications |
| Which player holds first place on each character’s weekly board (kept for every first-place player, so a pass can be detected) and, only if you opted in to “someone passed you” notifications, a short-lived note that you lost that place | To tell you when someone passes you on a character’s weekly board, if you opted in | Your play; the note is deleted once the push is sent, or after 26 hours |
| If you link a Google account: the stable Google account id for you | To restore your save on a new device, and to find it if you delete your account on our web page | Google, when you choose to sign in |
We do not store the text of messages flagged by the safety classifier - only the category scores. We do not store your raw IP address, and we do not use advertising identifiers to build a profile of you.
Advertising
The app shows ads through AppLovin MAX, which may use device identifiers to select them. You can change your ad-personalisation choice at any time in Settings ▸ Ad Privacy Choices. When you watch a rewarded ad, the app also gives AppLovin your anonymous account identifier and a random id for that ad. AppLovin's server sends both back to ours when the ad pays out, so we can credit the reward to you once; we do not use them for anything else.
AI chat
Chat replies are generated by an external AI provider. The messages you send, along with recent conversation context, are transmitted to that provider to produce a reply. When you come back after a few days away, the number of days since you last opened the game is included too. The short memory notes about you are sent to the provider with each reply, and the do-not-remember list of notes you deleted is sent with the memory updates that run about every ten messages. Your device never contacts the provider directly - the request goes through our server.
Who else sees your data
- Cloudflare - runs our server.
- Supabase - stores the database.
- OpenRouter - AI chat inference.
- OpenAI - content-safety checking: your chat messages and the AI's replies are sent to its moderation service to be checked. We keep only the category scores of your messages.
- Your approximate country - taken from your connection when you send a message about harming yourself, only to show a crisis line for your country and to pick the reply language. The country is not stored and not sent to any other service; the reply language is kept with the request for up to 72 hours, and the reply itself stays in your chat history in that language.
- AppLovin - advertising, and confirming that a rewarded ad was watched (it receives your anonymous account identifier for that).
- Google / Apple - purchases (Apple's server also tells ours when it refunds an App Store purchase or a subscription renews, fails to renew or ends), and Google sign-in if you choose to link an account or to delete a linked account on our web page.
- Google (Firebase Cloud Messaging) - delivers the notifications you allow.
Where your data is held
Your account and game data are stored in the European Union - our database
runs in Paris (AWS eu-west-3), and our server is pinned to the same region.
Requests reach us through Cloudflare’s network, which terminates the connection at whichever
of its locations is nearest to you before passing it to that server.
Chat is the exception. To generate a reply, the messages you send are passed to an external AI provider, which processes them outside the European Union, including in the United States. That provider selects a model service per request, so the specific service handling any one message varies.
How long we keep it
We keep your data while your account exists. If you delete your account it is removed immediately, and a device still signed in to it is refused (at most a per-minute request counter keyed to the account id is written, and it is deleted within about 2 hours), with three exceptions (an abandoned save, described above, is deleted after 30 days unused instead, subject to the nightly limit described there):
- The random account identifier and the deletion date are kept for 30 days. This lets any other device still signed in to that account be logged out. After 30 days they are deleted.
- Purchase records are kept, with your account identifier removed. We keep a one-way hash of each store receipt so the same purchase cannot be redeemed twice by someone else. What remains is a hash, a product name, a date, a one-way hash of the store order, a record of what the purchase granted (amounts, sticker ids and a character id) and one-way hashes of any refunded orders, no longer linked to you. A refunded purchase whose receipt never reached us leaves one such hash (an App Store subscription period also its subscription's) with no account attached, kept indefinitely.
- Where the law requires us to retain something - for example a preserved record connected to a report of illegal content - we keep it for as long as that obligation lasts.
Ban appeals and the suspension record are kept while your account exists, included in Download My Data and removed by Delete Account; they are read only by our reviewers and never sent to a third party. Content-safety records are deleted automatically after 365 days. A push token is deleted 60 days after the device last opened the game, or when you delete your account.
Your rights
- Get a copy of your data - Settings ▸ Download My Data returns everything we hold about you as a JSON file, except two short-lived technical records kept at most 72 hours (the token of a level in progress and the request id that stops a double charge), a rewarded-ad record kept 7 days (the ad's random id, so one ad cannot pay twice), and a request counter kept about 2 hours. The file is saved in the app’s storage only so you can share it, and the app deletes it after sharing, when it next opens, and when you delete your account.
- Delete your account and data - Settings ▸ Delete Account, or see how to delete your account if you no longer have the app. This cannot be undone, and purchases cannot be restored afterwards. If your account is linked to Google, that page can delete it after you sign in with Google (once that sign-in is set up): Google handles the sign-in and sends us a signed token that also carries your email address, name and picture; we read only your Google account id from it, to find the linked save, and keep none of it. The only record left is a random one-time code, linked to no one, that stops the same sign-in being used twice; each later web deletion erases the codes more than an hour past their 15-minute life.
- Correct something the AI has remembered about you - the chat screen’s memory panel lets you delete individual remembered facts. When you delete a remembered fact we keep its wording on a do-not-remember list, sent to the AI provider with later memory updates to ask it not to learn the fact again. This helps but cannot guarantee it: the AI may still pick up a reworded version. The list keeps your 60 most recent deletions per character and is removed with your account.
- Change your ad choices - Settings ▸ Ad Privacy Choices.
To ask anything else, contact waifu.unzipped@gmail.com.
Children
This game is for adults. You must confirm your date of birth before using the chat feature, and it is not available to anyone under 18.
You enter your date of birth once, before chat becomes available, and it cannot be changed afterwards.
That check is self-declared. We record the date you give us and calculate your age from it, but we do not verify it against any document or third-party service.
Separately, Google Play restricts users it determines to be minors from downloading this app or making purchases in it. That is Google's check rather than ours, and Google notes it cannot catch everyone.
Changes
When this policy changes we update the date at the top of this page. If a change materially affects what we collect or who we share it with, we will also say so in the app.