Duo Sort Privacy Policy
Last updated: 22 October 2026
This policy explains what data Duo Sort ("the game") uses, why, who receives it, how long it is kept, and the choices and rights you have.
Who is responsible
The controller of your personal data is Darius Andrei Aftan, an individual developer in Romania ("we", "us"), who publishes the game on Google Play as "Darius Development" and on the App Store as "Aftan Darius Andrei".
- Based in: Romania (individual developer, sole trader)
- Email for anything about your data: [email protected]
We have not appointed a data protection officer, because the law does not require one for a game of this size; write to the address above and we will answer ourselves.
The launch waitlist on our website
Before Duo Sort comes out, you can leave your email address on luviduo.com/duosort so we can tell you when the game is available. We store your email address, the phone you picked (iPhone or Android), your browser's language and the time you signed up, on Supabase's servers in the European Union. To stop abuse of the form, we count sign-ups per IP address hash for 10 minutes (see Keeping the servers safe).
We use your address only for one email on launch day, and we delete the whole list after that email has gone out. We don't add you to a newsletter, we don't use the list for ads and we don't share it. You can only sign up if you are 16 or older. To be taken off the list earlier, write to [email protected] from that address.
Playing without an account
You can play as a guest. Then your progress (levels, coins, café, purchases of coins and boosters, settings) is saved only on your phone, and deleting the game deletes it. We don't ask for your name, email, contacts, photos or location. A few things are still stored on your phone:
- your birth year, which the game asks once before you play, so it can follow the rules for younger players (for example no account under 13, no personalised ads and no gameplay statistics under 16). For a guest it stays on the phone and is never sent to us;
- your answers to the consent questions (ads, gameplay statistics, notifications);
- a random player ID created by the game, with nothing about you in it. It lets us tell apart crash reports, gameplay statistics (only if you allow them) and event summaries coming from the same installation. It is not your advertising ID and it is not linked to your account.
Guests can also open a Play in 2 room with a friend and send event summaries (see below).
Your account (optional)
Accounts are for players 13 or older. If you create one (with email, Sign in with Apple, Google or LuviDuo), we keep:
- your email address, and the ID Apple, Google or LuviDuo gives us for you, so you can sign in;
- your password, if you chose one, only as a secure hash (we can't read it);
- your birth year, given once when you sign up, so the game can follow the rules for younger players. It can't be changed later from the game;
- the player name you pick, if you choose one (see Friends and the leaderboard);
- your game progress (levels, stars, coins, boosters, your café and its decor, what you bought and your Café Pass), so you can continue on another device;
- the platform and app version, and when you last played, to keep your save working across versions.
We email you only to confirm your address or reset your password. You can delete your account and everything saved with it at any time: see Delete your account.
Friends and the leaderboard
- Your friend code. With an account you get a friend code (like DUO-AB12). Anyone you give it to can send you a friend request.
- Friend requests and friends. We keep who asked whom, when, and whether the request was accepted or declined. A declined request is deleted after 30 days; a friendship lasts until one of you removes it or deletes the account. Friends see each other's player name, level and stars.
- Your public player name. If you choose a name, other signed-in players see it on the leaderboard (with your level and stars), in friend lists, in Play in 2 rooms, in tandem events and in the invite links you share. Names are checked against a list of blocked words. Players under 13 can't have a name: they appear as "Player #" followed by four characters. Only signed-in players can see the leaderboard.
- Wrong codes. To stop people from guessing codes, we count how many wrong friend codes an account types in an hour. The count is deleted after one day.
Play in 2 rooms
When you open a Play in 2 room, we create the room with a short code to share, a one-way hash of your random player ID (and your friend's when they join), your account ID if you are signed in, and when the room was made. The room closes 12 hours after the last join and is deleted one day later. While you play, the game sends your moves, your player name (only if you are signed in and 13 or older) and an "I'm here" signal with the current time through a private channel that only the two players in the room can use; these messages are not stored by us.
Tandem events
In a tandem event you ride as a team of two. We keep the team (its two members, the Luvi names shown on it, how far you got and the last stop each of you saw), every batch of pedals you give (how many, the day, the edition) and the requests for help you send your partner (from whom, to whom, at which stop, and the name of your Luvi). Pedals and requests are deleted after 60 days; the team stays until one of you deletes the account.
Invites
- Invite links. An invite link looks like luviduo.com/duosort/r/?c=DUO-AB12&n=Ana: it contains your friend code and, if you have one, your player name, so the friend sees who invited them. Anyone who gets the link can see both. If you don't want your name in links, play without a name.
- Invite rewards. We keep who invited whom, how the invite arrived (link, store referrer, clipboard or typed code), how far the friend got and which rewards were collected. When an invite reward is claimed, the game sends a one-way hash of your device's app identifier so that the reward is given once per device. The hash is kept on our server until you delete your account, is never shared with anyone and is never used for advertising.
- Invite statistics. We count where invite buttons are used (for example "the Friends screen"), with your account ID, to learn which ones help. These rows are deleted after 120 days; if you delete your account, they stay without your account ID until then.
Signing in with LuviDuo
LuviDuo is our app for couples. If you choose Continue with LuviDuo or Connect LuviDuo and allow it in LuviDuo, the game receives:
- your LuviDuo user ID, your email address and whether it's verified, to sign you in. If your Duo Sort account has the same verified email, they become one account;
- your display name in LuviDuo, shown on your account screen;
- your couple's Luvi: how it looks (its animals, colours and markings), its name, its growth stage and what it wears, plus an ID for the couple, so your Luvi can live in your café.
While you are connected, we tell LuviDuo how many levels you have won in Duo Sort, together with your LuviDuo user ID, so LuviDuo can give you its own rewards for playing. We send only that number: nothing else about your game, your purchases or your friends.
LuviDuo then sends us changes to your Luvi (when it hatches, grows, is renamed or changes clothes) and tells us if your couple ends, if you disconnect Duo Sort, or if your LuviDuo account is deleted. We never receive anything about your partner (not their name, not their activity), nor your messages, moods or anything else from LuviDuo.
You can disconnect at any time in LuviDuo: Settings > Connected apps. Then we delete your couple's Luvi and the link. If your couple ends, the couple's Luvi is removed for both of you. Your Duo Sort account and progress stay unless you delete them. The LuviDuo sign-in itself (its user ID and email) stays on your account as a way to sign in until you delete the account.
Purchases and offers
- Payments are made through Apple or Google. We never see your card or payment details.
- Purchase records. RevenueCat checks every purchase for us. When you are signed in, RevenueCat knows you by your account ID; as a guest, by a random ID it creates. RevenueCat then tells our server about each purchase, refund or cancellation: the product, the store, the transaction IDs, the price in US dollars and your currency, your country code, the dates, and your account ID or RevenueCat's random ID. We keep these records to deliver what you bought, handle refunds, prevent fraud and keep our accounts.
- How offers are chosen. Some offers depend on how you play and what you bought before: for example a welcome offer from level 8, a rescue pack after two lost levels in a row, an opening offer when a new café opens, and, when you run out of an event resource, a pack sized close to what you usually buy (or the smallest one if you never bought anything). This is worked out by the game on your phone, from your own purchase history and your coins; we don't build a profile of you on our server, and it has no legal or similarly important effect on you. The game shows at most two offer popups a day, and players under 13 get none.
Event summaries and ratings
At the end of each event edition, the game sends us a short summary to learn whether the event was fun and fair: your random player ID, the event and edition, the platform and build, how far you got, how many times and for how long you opened it, what you earned, spent and won, whether you looked at or bought a pack, how many reward ads you watched, the rating you gave (if any) and whether something went wrong. Guests send it too. It is linked to the random player ID, not to your account, so it is not deleted with your account; all summaries of an edition are deleted 90 days after that edition's last summary arrives.
Notifications
The game can send you notifications. Reminders that only your phone needs (your lives are full, the daily gift is ready, an event is ending) are set up on your device itself and never leave it. The rest come from our server, because only it knows them: a friend asking to play, your partner pedalling, a new chapter opening.
We never ask on your first launch. The question comes the first time you ask for a notification yourself, for example by tapping a bell to be told when your lives are back. You then pick what we may send, in three groups: Gameplay (lives, the daily gift, events, your café and Luvi), Friends (friend requests, tandem rides, invites and LuviDuo) and Offers (the piggy bank, offers and packs). Offers is off until you turn it on. Saying no leaves the rest of the game exactly as it is.
To send a notification from our server we need an account, and we keep one row for each of your devices with: the notification token that Apple's or Google's notification service gives us for that device (an opaque identifier that lets us address your phone, with nothing about you in it); whether it is an iPhone or an Android phone; the language the device is in, so the notification is in your language; your three choices above; your time zone offset, so nothing arrives between 22:00 and 09:00 your time; the age group your birth year puts you in; the app version; and when the device last opened the game. Nothing else about your device is kept: not its name, not its model, not its location, not what else is installed on it. We also keep a line for each notification we actually sent you (which notification it was, its group, the language it went out in and whether you opened it), so that we can keep to our own limits of at most a few a day and stop sending a kind of notification you never open. The notifications themselves carry no personal data about anyone else; a friend's notification shows only the public player name they chose.
The device row is deleted when you delete your account, when you sign out, when you turn all notifications off, when Apple or Google tell us the device no longer accepts them, and in any case after 180 days in which the game was not opened on that device. The record of notifications sent is kept for up to 400 days and then deleted.
You can change your mind at any time, in two places:
- in the game, under Settings > Notifications, where each of the three groups has its own switch. Turning a group off stops it at once, including reminders already waiting on your device;
- on your phone, under Settings > Notifications > Duo Sort (iOS) or Settings > Apps > Duo Sort > Notifications (Android), which turns off all of them whatever the game says.
Players under 13 cannot create an account, so they get no notifications from our server at all: only the reminders their own device sets, and never anything about friends, purchases or offers.
Keeping the servers safe
To limit abuse, our server counts requests per account or, when there is no account, per one-way hash of the IP address. These counters are deleted after one day.
Service providers
| Provider | What it receives | Why |
|---|---|---|
| Google AdMob (Google LLC; for players in the EEA, Google Ireland Limited) | Device and app information, IP address, advertising identifier (if allowed), ad interactions, and your consent choices | To show ads, including rewarded ads you choose to watch; to measure ads and prevent fraud. Ads are personalised only if you agree in Google's consent form. For personalised ads Google acts as an independent controller under its own privacy policy. |
| Apple App Store / Google Play | Purchase transactions | To process in-app purchases, as independent controllers. We never see your payment details. |
| RevenueCat, Inc. (United States) | Your account ID (or a random ID for guests), purchase history and receipts, device and app information | To verify purchases, restore them and report revenue, on our behalf. |
| Supabase (Supabase Pte. Ltd. and Supabase, Inc.) | Everything our server keeps, as described in this policy, and your IP address when the game talks to it | To store your account, your saved game and the rest of our data, on servers in the European Union (Frankfurt), on our behalf. |
| Sentry (Functional Software, Inc., United States) | The app version, the device model and operating system, the level and screen you were on, the steps in the game just before the problem, and a random identifier that tells reports from the same installation apart, but not your name, email address, IP address or device name | To receive a technical report when the game crashes or hits an error, so we can find and fix it. Stored for us in the European Union (Frankfurt). |
| Resend (Plus Five Five, Inc., United States) | Your email address and the email we send you (the code to confirm your address or reset your password) | To deliver these account emails on our behalf. |
| GameAnalytics ApS (Denmark) | Only if you allow it (see Your choices): your random player ID, device maker and model, OS version, country (from IP), session numbers, and gameplay events (levels started, won and lost, coins earned and spent, events played, buttons used, purchases made in the game). Never from players under 16. | To understand how the game is played and improve it, on our behalf, as our processor. |
| Google (Firebase Cloud Messaging, Google LLC) | The notification token of your device and the notification we ask it to deliver (its title and text, and which screen it opens) | To deliver our notifications to your phone, on our behalf. Apple's own notification service delivers them on iPhones. |
| LuviDuo (us) | Only if you connect it: see Signing in with LuviDuo | LuviDuo is our own app; the same controller runs both. |
Our processors (RevenueCat, Supabase, Sentry, Resend, GameAnalytics and Google for Firebase Cloud Messaging) may use data only on our instructions, under data processing agreements with us. Apart from your account, none of this is used to identify you. We don't sell your personal data and we don't share it with anyone else, unless the law requires it.
Bug reports. When you send a bug report (Report a bug in Settings, or by shaking the phone), we also receive what you wrote, a screenshot of the game screen unless you turn it off, and, only if you are an adult and choose to give one, an email address so we can reply. Players under 18 are never asked for an email address. We use crash and bug reports only to find and fix problems, keep them for up to 90 days, and never use them for advertising. To have a report deleted, write to [email protected].
Data outside the European Union
We keep our own server data in the EU, but some providers process data in other countries, mostly the United States. Each transfer is protected as the GDPR requires:
| Provider | Where | How the transfer is protected |
|---|---|---|
| Google (AdMob, Firebase Cloud Messaging) | United States and Google's data centres worldwide | Google LLC is certified under the EU-U.S. Data Privacy Framework; the European Commission's Standard Contractual Clauses apply as a fallback. |
| RevenueCat | United States (Amazon Web Services, Snowflake) | Standard Contractual Clauses in RevenueCat's data processing agreement. |
| Supabase | Data stored in Frankfurt (EU); support staff in Singapore, the United States and elsewhere may access it only when needed for support or security | Standard Contractual Clauses with extra safeguards (encryption, access controls, audit logs). |
| Sentry | Crash and bug reports stored in Frankfurt (EU); some account-level settings in the United States | Functional Software, Inc. is certified under the EU-U.S. Data Privacy Framework; Standard Contractual Clauses as a fallback. |
| Resend | United States | Resend (Plus Five Five, Inc.) is certified under the EU-U.S. Data Privacy Framework, and its data processing agreement also includes Standard Contractual Clauses. |
| GameAnalytics | Denmark (EU) company; data stored at Amazon Web Services in the United States | Standard Contractual Clauses in GameAnalytics' data processing agreement and with its own providers. |
| Apple | United States | Apple, as an independent controller, uses Standard Contractual Clauses. |
You can ask us for a copy of these safeguards at [email protected].
Your choices
- Gameplay statistics (GameAnalytics): when you first start the game, right after your birth year, we ask whether you want to share gameplay statistics with GameAnalytics. Nothing is sent to GameAnalytics unless you tap Allow, and No thanks changes nothing else in the game. You can change your answer at any time in the game's Settings under Share gameplay statistics: turning it off stops sending at once and deletes the statistics still waiting on your device. Players under 16 are never asked and never send gameplay statistics.
- Ad consent (EEA, UK, Switzerland): on first launch you are asked whether ads may be personalised. You can change this at any time in the game's Settings under Privacy choices.
- Tracking (iOS): the game only uses your advertising identifier if you allow it. You can change this in iOS Settings > Privacy & Security > Tracking.
- Advertising ID (Android): you can reset or delete it in Android Settings > Google > Ads.
- Notifications: in the game's Settings under Notifications, or in your phone's settings (see Notifications).
- Your player name: you can play without one.
- Remove Ads: the Remove Ads purchase turns off ads that interrupt play.
- Your account: you can delete it at any time (how).
Why we may use your data (legal bases under the GDPR)
| What | Legal basis |
|---|---|
| Your account, saved game, friends, leaderboard, Play in 2 rooms, tandem events, invites and invite rewards, account emails (Resend), delivering and restoring purchases | Performing our agreement with you: the game and the features you choose to use (Art. 6(1)(b) GDPR). |
| Personalised ads and the advertising identifier | Your consent (Art. 6(1)(a)), given in Google's consent form and in the iOS tracking prompt, which you can withdraw in Privacy choices or the phone's settings. |
| Gameplay statistics (GameAnalytics) | Your consent (Art. 6(1)(a)), which you can withdraw at any time in the game's Settings without affecting what was sent before. Never under 16. |
| Notifications | Your consent (Art. 6(1)(a)), given per group and withdrawn in the game's or the phone's settings. |
| The launch waitlist on our website | Your consent (Art. 6(1)(a)), given with the tick box on the form, which you can withdraw at any time by email. |
| Signing in with LuviDuo and showing your couple's Luvi | Your consent (Art. 6(1)(a)), given in LuviDuo, which you withdraw by disconnecting. |
| Non-personalised ads, crash and bug reports (Sentry), event summaries and ratings, invite statistics, offers chosen on your phone, request counters and fraud prevention | Our legitimate interest in running, securing, funding and improving a free game (Art. 6(1)(f)). You can object at any time (see Your rights). |
| Keeping purchase records after an account is deleted | Our legal obligations for accounting and tax (Art. 6(1)(c)) and our legitimate interest in handling refunds and disputes (Art. 6(1)(f)). |
| Your birth year and the age rules | Our legal obligation to protect younger players (Art. 6(1)(c) and Art. 8 GDPR). |
Storing and reading data on your phone that is not strictly needed for the game you asked for (the advertising identifier, gameplay statistics) happens only with your consent, as Romanian Law 506/2004 requires.
How long we keep data
| Data | Kept for |
|---|---|
| Guest progress, birth year, consent choices and the random player ID on your phone | Until you delete the game |
| Your account, player name, birth year and saved game | Until you delete your account |
| Friend code and friendships | Until you remove the friend or delete your account; a declined request 30 days |
| Wrong friend code counts | 1 day |
| Play in 2 rooms | Up to 12 hours after the last join, then deleted the next day; moves and presence are not stored |
| Tandem pedals and requests for help | 60 days |
| Tandem teams | Until one of the two deletes the account |
| Invites, invite rewards and the invite device hash | Until you delete your account |
| Invite statistics | 120 days (without your account ID after you delete the account) |
| Event summaries and ratings (random player ID) | 90 days after the edition's last summary, also after you delete your account |
| Purchase records on our server | As long as accounting and tax law requires (in Romania up to 10 years); after you delete your account, without your account ID |
| Your customer record at RevenueCat | Until you ask us to delete it, or under RevenueCat's own policy |
| Purchase records at Apple and Google | Under their own policies |
| Notification device rows | Until you sign out, turn notifications off or delete your account, and at most 180 days after the game was last opened on that device |
| Record of notifications sent | 400 days |
| LuviDuo link and your couple's Luvi | Until you disconnect, your couple ends, your LuviDuo account is deleted or you delete your Duo Sort account; records of the updates LuviDuo sent us 7 days |
| Launch waitlist (email, phone, language) | Until the launch email has gone out, then deleted; earlier if you ask |
| Request counters (account or IP hash) | 1 day |
| Crash and bug reports (Sentry) | Up to 90 days |
| Gameplay statistics (GameAnalytics) | Up to 2 years |
| Emails you send to support | As long as needed to help you, and at most 2 years after the conversation ends |
Providers keep their own data under their own policies: Google, Apple, Supabase, RevenueCat, GameAnalytics, Sentry, Resend.
Children
The game is not directed at children under 13 and we don't knowingly collect their personal data. Players under 13 (or whose age is not known) can't create an account, have a player name, send invites or buy anything, and get ads meant for children. Players under 16 get no personalised ads and never send gameplay statistics. If you believe a child has given us personal data, contact us and we will delete it.
Your rights
Under the GDPR you have the right to:
- access the personal data we have about you and get a copy;
- correct data that is wrong;
- delete your data (you can delete your account yourself, see Delete your account);
- restrict how we use your data, for example while we check a complaint;
- data portability: receive the data you gave us, and your saved game, in a common machine-readable format (JSON), or have us send it to someone else where that is possible;
- object to uses based on our legitimate interest, at any time;
- withdraw your consent at any time, as described in Your choices, without affecting what happened before;
- complain to a data protection authority, in the country where you live or work or in Romania: the Autoritatea Națională de Supraveghere a Prelucrării Datelor cu Caracter Personal (ANSPDCP), B-dul G-ral. Gheorghe Magheru 28-30, Sector 1, 010336 București, Romania, [email protected].
To use these rights, email [email protected], if possible from your account's email address. For data linked only to your random player ID (crash reports, gameplay statistics, event summaries), tell us so and we will help you find it. We answer within one month and may ask you to confirm it is really you. It is free.
We don't make decisions about you that are based only on automated processing and have legal or similarly important effects.
Changes
If this policy changes, we'll update the date above and, for important changes, tell you in the game.