Privacy Policy
Draft prepared for review. This is not legal advice — have a qualified lawyer check it before you publish it.
- Game: Callbreak (trick-taking card game, spades always trump)
- Published by: SANAVE GAMES, a brand of Sanave Tech, Nepal
- Contact: contact@sanavetech.com
- Draft date: 30 August 2026
This policy describes exactly what the Callbreak app sends to our server, why, how long we keep it, and how you can have all of it erased. Everything below was written from the app's own source code.
The short version
- You can play the whole single-player game without an account. There is no sign-up wall.
- We do not sell your data, and nothing we collect about you — everything
listed under "What we collect" below — is handed to advertisers, analytics companies, or data brokers.
- There is no analytics SDK and no tracking SDK in the app. Google's
advertising SDK is in it, and it starts up with the game, so Google is contacted at launch even in a session where you tap nothing — see Advertising. The only advertising this app will ever show is a rewarded video you choose to watch, and none is being shown yet.
- Everything we collect goes to one server we run ourselves, and one database file on it.
- The DELETE MY ACCOUNT button in the app really deletes it — it is not a request form.
Who is responsible
Sanave Tech, Nepal, trading as SANAVE GAMES, is the controller of this data. Write to contact@sanavetech.com about anything in this policy.
What we collect, and why
1. An install identifier
When you first open the game, the app generates a random 24-character string on your device (letters and digits, from a secure random source) and stores it locally. We call it your install id.
It is not derived from your phone, your hardware, your advertising id or any account. It identifies this installation of this game and nothing else. If you delete your account, or uninstall and reinstall, a new one is generated and the old one is not recoverable.
We need it so that your games, your coins and your invite code all belong to the same player instead of being anonymous noise.
A short, human-readable invite code is derived from the install id so a friend can type it in. It carries no other information.
When you play online, your install id is also sent to our game server over the game connection itself, together with your display name and app build. That is what binds you to your seat, so a dropped connection can be resumed instead of costing you the game.
If you sign in, we also create an account id: a random 32-character identifier generated on our server. It is not derived from your install id, your device, your name or your email address, and it is what links your installs of our games to one another. If you never sign in, no account id exists for you.
2. Your display name
The name you see on the table. On first launch the app makes one up for you (USER-1234); you can change it at any time. It is limited to 9 characters. It is stored on our server, and — when you play online — it is shown to the other players at your table.
3. Your device platform and app build
Which platform you are on (such as ios, android, macos or web — a desktop test build reports its own operating system name) and which build of the game you are running (a short text label such as 0.1.0). This is how we know whether a bug you hit has already been fixed in a newer build.
4. Game outcomes
When a match finishes, the app sends: a one-time match id, your install id, the time it ended, whether it was an online match, whether you won, your final score in tenths of a point (which can be negative — a night of broken calls really does end below zero), how many calls you made, how many you broke, and how many tricks you took. It also sends a note that a match was started, so we can tell how often matches are abandoned.
We do not send the cards. Nothing about your hand, the deal, the trump suit or any other player's cards ever leaves your device as a stored record.
5. Wallet movements (virtual coins and diamonds)
Every time your coin or diamond balance changes, we record your install id, the time, the reason (for example "Won a game", "Daily gift", "Hosted a table", "Changed cards", "Card history"), how much moved, your resulting balances, and — if you are signed in — your account id and which of our games the movement happened in. This is how we keep the in-game economy balanced and how we can answer "where did my diamonds go?" if you ask.
Your coins and diamonds are held separately for each of our games and never move between them: coins you have in Callbreak are Callbreak coins, and there is no way for them to become coins in another of our games.
Diamonds are spent in four places, and each is recorded the same way as any other movement: at the table, changing your cards before anyone has called and opening the round's completed tricks; away from it, opening a private online table and joining someone else's by code. The shop's diamonds-for-coins trade moves them inside your own wallet and is recorded too.
Coins and diamonds are virtual items with no cash value. See the Terms of Service.
6. Session lengths
When you leave the game, the app sends a session id, your install id, when the session started, how many seconds it lasted, how many games you played in it, your platform, your app build, and three frame-health numbers the app measures on itself — how many frames stuttered, and the worst frame time on each of the two rendering threads. Those three describe how smoothly the game drew, not you; our server has no column for them and drops them on arrival. Sessions shorter than three seconds are not sent at all — those are app-switches, not visits.
7. Crash reports
If the app hits an unhandled error, it sends your install id, the error type, the error message (truncated to 500 characters), the stack trace (truncated to 4,000 characters), which screen you were on, your platform, your app build, and your operating system name and version (for example ios 18.5). This is our entire crash reporting system — there is no third-party crash service.
A stack trace is generated by our code, not by you. We do not intentionally collect anything you typed. Please do not put personal information into the game in the first place.
8. Problem reports you send us
If you use "Report a Problem", we receive the message you typed, plus your install id, platform, app build and device description. Whatever you write in that box is up to you.
9. Invites
If you redeem a friend's invite code, we record that your install id was invited by theirs, once, so the reward is paid once and only once.
10. If — and only if — you sign in with Google or Apple
Signing in is optional. The game is fully playable without it. If you do sign in, we additionally store:
- which provider you used (
googleorapple), - the stable user id that provider gives us,
- the email address the provider gives us.
The provider also hands the app a name. We do not store that name as a separate field: unless you have already renamed yourself, the app takes the first name from it, trims it to the 9-character limit, and uses it as the display name described in section 2 — which is the name our server holds. Nothing else the provider returns is sent to us.
Apple's "Hide My Email" is fully supported — if you choose it, the relay address is all we ever see. Apple only gives us your name and email on the very first sign-in; we keep that copy.
We never see and never receive your Google or Apple password. Sign-in is handled by Google's and Apple's own SDKs on your device.
Google may also give us an avatar URL; the app keeps it on your device to show your picture and does not send it to our server.
Sign-in exists for one reason: so that the same person is one player across their devices.
We also store, once you have signed in:
- a sign-in token we issue to your device, valid for 30 days. We store only a one-way hash of it, never the token itself, so a copy of our database cannot be used to sign in as you. Signing out or deleting your account destroys it immediately.
- a record of each of our games you have installed, and which account each installation belongs to.
We match you to your account only on the stable user id your provider gives us — never on your email address. This is deliberate: Apple's private relay addresses and Google's address aliases mean two different people can present what looks like the same email, and one person can present several. Your email is stored so we can answer you if you write to us, and is used for nothing else.
11. Technical logs
Our web server keeps ordinary access logs, which include the IP address the request came from, the time, and which endpoint was called. These are used to keep the server running and to block abuse. They roll over automatically and only the five most recent 10 MB log files are kept. Our game server also writes a line to its own system log when a player joins a table, containing the display name and install id.
What we never collect
- Your precise location. (Google can infer a rough area from your IP address whenever its ad SDK talks to it — see Advertising.)
- Your contacts or address book.
- Your photos, camera or microphone.
- Your advertising identifier, by us. We never receive it, store it, or connect it to your account, your install id, or anything else in this policy. Google's ad SDK is a separate matter: it ships inside the app and can read the identifier on Android — see Advertising.
- The contents of your cards or your play, beyond the outcome numbers listed above.
- Any payment card details. The app currently has no purchases at all (see below).
- Any password.
Advertising
Status: the Google Mobile Ads SDK is present in this build, and no ad has been served yet. Ads stay switched off until we turn them on for a release; when we do, the only thing that appears is the rewarded video described below, and it is still something you choose to watch. This paragraph changes when that happens, and it is the first thing to check if you want to know what a given version actually does.
Callbreak shows rewarded ads, and only rewarded ads. A rewarded ad is one you choose to watch — you tap a button offering diamonds, a video plays, and you get them. Nothing plays on its own. There are no banners, no ads between hands, and no full-screen ad you did not ask for.
The ads are served by Google AdMob. When you watch one, Google receives the information it needs to select and measure that ad. That can include your device's advertising identifier (GAID on Android; on iOS the IDFA is not available to it at all in this build — see the next paragraph but one), your device model and operating system, your coarse location as inferred from your IP address, and how you interacted with the ad. We never see who you are in that exchange — AdMob reports to us in aggregate, and we do not receive, store or join your advertising identifier to your account, your install id or anything else in this policy.
Google's own privacy policy governs what they do with it: <https://policies.google.com/privacy>. Google's list of advertising partners is at <https://business.safety.google/adspartners/>.
On iOS, this build does not ask to track you, and does not track you. It ships with no App Tracking Transparency prompt and without the usage-description key that would let one appear, so your advertising identifier is not available to anybody and any ad served on iOS is non-personalised. If we ever want personalised ads there, that prompt has to be added first and you will be asked — and saying no would still leave the ads working, still non-personalised, with the same reward.
There is still no analytics SDK. Everything in "What we collect" above goes to our own server and nowhere else, and AdMob receives none of it. AdMob is the only third party that receives anything — but be precise about when. Google's ad and consent SDKs start up with the game, so Google is contacted at launch even in a session where you never tap anything, and what that start-up carries is your device and this app. The advertising identifier and ad-interaction data described above follow from an ad you choose to watch.
Purchases
At the time of this draft no real-money purchase is possible in the app. The shop screen lists packs with prices, but tapping a card-paid pack only tells you that payments are not open yet — nothing is charged, and no card details are requested, seen or received by us. The store's own billing plugin is in this build, and the app subscribes to the store's transaction stream when it starts so that a purchase finished while the app was shut could never be lost; with no product to sell, that stream has nothing to deliver. The only trade that works today is diamonds for coins, which moves virtual items inside your own wallet.
We have therefore never collected any purchase or payment data. Our database has an empty table waiting for the day it exists. This policy will be updated, and the store data declarations re-submitted, before any real-money purchase is possible in the app.
When purchases do open, they will require you to be signed in, so that what you buy belongs to an account rather than to one phone that can be lost. Anything bought in a game will be spendable only in that game.
Where the data lives
On one server we rent and administer ourselves: a DigitalOcean droplet located in Bangalore, India, serving callbreak.play.sanavetech.com. All traffic between the app and the server is encrypted with TLS (HTTPS/WSS) using a Let's Encrypt certificate.
The data is stored in a single SQLite database file on that machine, in a directory readable only by the server's own system user. Administrative access to the machine is by SSH key only. The internal dashboard that displays this data is protected by a secret token that is generated on the server, never stored in our source code, and returns "401 Unauthorized" without it.
If you are in a country whose law restricts transfers abroad, please be aware that using the game means your data is stored in India.
How long we keep it
- Your account row and everything linked to it: until you delete it. We do not currently expire inactive accounts; if we start to, we will say so here.
- Nightly backups of the database, held on the same server: 14 days, then automatically deleted. This means data you delete can still exist in a backup copy for up to 14 days before it ages out. We do not restore backups to reinstate deleted accounts.
- Web server access logs: the five most recent log files, each up to 10 MB — in practice a rolling window, not an archive.
How to delete everything
Open the game, go to Profile → Account → DELETE MY ACCOUNT, and confirm with DELETE FOREVER. You do not have to be signed in for it: the button is there for a guest too, and a guest has server-side records — games, sessions, daily activity, crash reports — that it erases.
This is a real deletion, not a request:
- The app first asks our server to erase you. If the server cannot be reached, nothing is destroyed and the app tells you to try again — you never end up half-deleted.
- On the server we delete your account record, the record of which Google or Apple account it is linked to, your sign-in tokens, the record of each of our games you have installed, your coin and diamond balances and their full history in every one of our games — not only the one you pressed the button in, your user record, your games, your daily activity, your wallet movements, your crash reports, your sessions, your problem reports, and the invite records naming you.
- The app then wipes your local data — your name, your install id, your stats, your wallet and its history — and signs you out of Google or Apple.
- A brand-new anonymous identity is created so the game still works. You are a new player with no link to the old one.
The only exceptions are the 14-day backup window described above, and the access logs, which age out on their own.
(If the game ever sells anything, a completed transaction is a financial record we may have to keep for tax and accounting. In that case the record of the transaction survives deletion, but your player id is removed from it so it no longer points at you. Today there are no purchases at all, so there is nothing to keep.)
You can also email contact@sanavetech.com from the address you signed in with, and we will do it for you.
Your rights
Depending on where you live, you may have the right to ask what we hold about you, to have it corrected, to have it deleted, to object to how we use it, or to receive a copy. Email contact@sanavetech.com and we will answer. For deletion, the in-app button is faster than we are.
We ask for the install id or the signed-in email so we can find the right records — we have no other way to identify you, and we will not ask you for identity documents.
Children
This game is not directed at children. We do not knowingly collect personal information from children under 13 (or under the higher age of consent where you live — for example 16 in parts of the EU). We ask that children under 13 do not play or sign in.
If you are a parent or guardian and believe your child has created data with us, email contact@sanavetech.com and we will delete it. You do not need to prove anything beyond enough detail for us to find the account.
Callbreak is a trick-taking card game played for virtual coins. It contains no real-money gambling and no way to win or withdraw money, but the card-play theme is why we do not target it at young children.
Security
TLS everywhere in transit. The database file is restricted to the server's own system user. The admin dashboard requires a secret token compared in constant time, and it is not linked from anywhere. Request bodies larger than 16 KB are rejected before they are parsed. We are a small team and cannot promise perfect security, but we do not collect anything we do not need, which is the best protection there is.
Changes
If we change what we collect, we will update this page and change the draft date at the top. Material changes will be announced in the app.
Contact
contact@sanavetech.com — SANAVE GAMES / Sanave Tech, Nepal.