EZQPool

Draft: this text is under review and may change before the app launches.

Privacy policy (draft)

Last updated: DECISION: effective date and version, set when the owner publishes it.

1. Who we are

DECISION: legal name and address of the controller (the owner as an individual or a company) ("we", "us") publishes the EZQPool mobile app (DECISION: final store name, DL-80; internally "RailAim") for iOS and Android. This policy explains what the app does with your data. Contact for every privacy question and request: [email protected] (DECISION: the real domain, DL-31).

The app is a training tool for pool players: you photograph a table, and it shows an aim line and a chalk spot. You do not give us your name, e-mail address or phone number, and the app works without an account. An optional sign-in with Apple or Google, only so that invite rewards follow you to a new phone, is described in Section 3A.

2. The short version

3. What we collect, why, and for how long

DataWhenWhyKept
Camera image and photos you take or pickAlways, only on your phoneTo find the table and balls and compute the aim lineOn your phone only (the app does not upload it unless you contribute it, Section 3 below)
Contributed sessions: the photo (original JPEG, GPS location removed; the camera's focal length, lens and orientation stay) and a file with what the app found (table corners, balls, the shot shown, what you corrected, how long it took) plus the app version, device model, OS version and languageOnly after you tapped "Share photos"; uploaded over Wi-FiTo improve the ball and table detection (training and testing our models)At most 2 years, then deleted automatically; earlier on request (Section 7)
Install ID: a random number the app makes on the first uploadOnly if you contribute or send a problem reportTo check that an upload comes from the app, to limit abuse, and to find and delete your sessions on request. It is not linked to your name, e-mail or any accountWhile your contributed sessions or reports exist; the server keeps only a one-way hash of it
Problem reports you choose to send: a file with the photo (GPS location removed; left out when the photo is already in a contributed session), screenshots of the screen (they may show people), what the app found (the same scene file), the app's last log lines, device model, OS, language, screen size and app version, the category and note you wrote, and the install ID's tokenOnly when you tap "Report a problem" and then Send; uploaded over any network. If the upload is not available, you can share the file yourself instead (then it goes where you send it, with the photo as taken)To find and fix the problem you reported (not used to train models)90 days after we receive it; deleted earlier by "Delete my photos" or on request
Crash reports (Firebase Crashlytics): the crash's technical details (stack trace, app version, device model, OS version, free memory and storage state) and a random Firebase installation IDAlways onTo find and fix crashesPer Google's Crashlytics settings (about 90 days)
Usage analytics (Firebase Analytics): events such as app opened, photo taken or picked (camera or gallery), photo cancelled, table and balls found or the photo needs retaking (with the reason and how long it took), result shown (shot type and time), another pocket chosen, new photo, report opened or sent (screen and category), paywall shown; plus Firebase's automatic events (first open, session start, screen view) and the same device and app details as above. Never a photo, never your location, never anything you typed, no advertising IDOnly if you agree: a separate switch on the first-launch screen (off by default) and in Settings; turning it off stops it at onceTo see which features are used and where the app failsDECISION: Analytics retention; proposed 14 months, the console setting in analytics.md (Google's default is 2 months)
Purchase information (only if premium is on sale at launch): the store's purchase receipt or token and your install ID. The App Store and Google Play process the payment; we never receive your card or payment detailsWhen you buy or restore premiumTo unlock premium and prevent fraudWhile premium is active, then DECISION: how long (tax and dispute rules)
Daily photo countOn your phoneTo apply the free daily limitOn your phone only
IP addressWhen the app contacts our server (registering an install ID, uploading, asking for a deletion)To limit abuse (rate limits)Not stored with your sessions; short-lived counters only

What we do not collect: your name, e-mail, phone number, contacts, location, advertising ID, or anything from other apps. The camera is used only while the app is open and only to show the preview and take your photo.

Photos may show people standing near the table. If you contribute photos, please do not include people who have not agreed, and do not photograph anything private. We do not try to identify anyone, and we use contributed photos only to improve the app's table and ball detection (not for advertising, not to identify people).

3A. Invite a friend (referral programme)

The app can give you a personal invite code. When a friend enters it and then really uses the app, you both get free premium days (the rules, such as the number of days and the limits, are in the EULA, Section 7A). The programme is optional: nothing here is collected about you unless you open the invite screen, share a code or enter one.

DataWhyKept
Install ID (a random number) and your invite codeTo know who invited whomWhile the install is in use; deleted 2 years after the last request, or on request
Account ID: a one-way hash of your Apple or Google sign-in identifier, only if you choose to sign in (no name, no e-mail is stored)So your days and code follow you to a new phoneUntil you delete the account in the app, or 2 years after the last request
The link between the inviter and the friend (two random IDs), the reward days granted and the reason for any limit appliedTo grant the reward once, apply the limits and prevent abuse2 years after the referral closes (it closes when the friend activates, the 14-day window ends, or it is revoked)
Refused attempts (for example a code that does not exist or a phone that already used one)To spot abuse90 days
Device check: on Android, a one-way hash of a device key (a keyed hash of the Android ID), after Google Play Integrity's verdict has been checked (the verdict itself is used when the code is entered and is not kept); on iOS, Apple DeviceCheck's two per-device bits, which are held by Apple and contain no identifierTo make sure one phone redeems only one code, and to stop reinstall loops. Done only when a code is entered, not at every launchThe hash, like the link: 2 years after the referral closes. Apple's and Google's bits are kept by them
Day stamps of your use (which days the friend had a result, with the server's receipt times and a count)To decide whether the friend really used the app (activation)Deleted when the referral closes
IP addressRate limitsHeld only inside short-lived rate-limit counters, not linked to the ledger; deleted after about 24 hours

4. Who we share data with

We use a small number of service providers who process data for us, under their terms:

ProviderWhat forData
Cloudflare (R2 storage and Workers; servers worldwide, bucket in Asia-Pacific)Receives contributed sessions, problem reports and deletion requests; checks purchasesContributed sessions, problem reports, install ID hash, IP address (momentarily), purchase receipts, the invite ledger (Section 3A)
Google (Firebase Crashlytics and Analytics)Crash reports; usage analytics if you agreeAs in Section 3
Apple App Store / Google PlayDownload, updates and payments; the device checks for invite codes (Apple DeviceCheck, Google Play Integrity and Install Referrer)They handle your purchase under their own policies; for the device checks they receive the request from your phone and keep the bits described in Section 3A

We do not sell your personal data and do not share it for advertising (including "sale" and "sharing" as defined in the California CCPA/CPRA). We may disclose data if the law requires it, or to protect our rights, and in a sale or transfer of the app's business (the buyer must respect this policy).

5. Where data goes (international transfers)

Cloudflare and Google run servers in many countries, so your data may be processed outside the country where you live, including the United States and Singapore. Where the law requires it, we rely on standard contractual clauses or an equivalent safeguard. DECISION: confirm the providers' data-processing terms are accepted in each account.

The fraud checks of the invite programme (device check, limits) rest on legitimate interests. Where a law such as Vietnam's Personal Data Protection Law asks for consent per purpose, the invite notice names this purpose separately from photo contribution and analytics.

7. Your choices and rights

8. Retention in one place

DataKept
Contributed sessionsat most 2 years; deleted on request
Problem reports we received90 days (earlier on deletion)
Invite ledger (IDs, link, grants, device-key hash)2 years after the referral closes; deleted on request
Refused invite attempts90 days
Day stamps of the friend's usedeleted when the referral closes
Crash reportsabout 90 days (Firebase)
AnalyticsDECISION (Section 3); proposed 14 months
Your phone's datauntil you delete the app or clear its data

9. Security

Uploads use encrypted connections (HTTPS) to short-lived, single-purpose links; we keep data in access-controlled cloud storage; the install ID is stored hashed; there are no passwords to steal (the optional sign-in uses Apple or Google, and we keep only a one-way hash of its identifier). No system is perfectly secure, and we will tell users and authorities about a breach as the law requires.

10. Children

The app is not directed to children. DECISION: minimum age (13 is the usual worldwide minimum; some countries require parental consent below 16; it must match the store age rating and the EULA, Section 16). If you believe a child under that age contributed data, write to us and we will delete it.

11. Changes

When we change this policy in a meaningful way we will update the date above and, for changes to what we collect or why, ask again for your consent in the app. DECISION: how else to notify (in-app message, store listing).

12. Contact

[email protected] (DECISION: the real domain). Postal address: DECISION: whether to publish one. EU/UK representative or data protection officer: DECISION: needed only if the legal advice says so.

---

Beta waitlist (this website)

Notice version waitlist-v2.

Back to EZQPool