๐Ÿ”’ Privacy Policy

Sudoku Battle - TheCatsizerLab

๐Ÿ“‹1. Introduction

Sudoku Battle ("the Application") is developed by TheCatsizerLab and available on Google Play Store. We respect your privacy and are committed to processing your personal data transparently and securely in accordance with GDPR and applicable data protection laws worldwide.

This privacy policy explains how we collect, use, share, and protect your personal data when you use our Application.

โ„น๏ธ Important Update (July 11, 2026): As of this version, on first launch the Application asks you to explicitly choose how you want to identify yourself: sign in with a Google Account (via native Google Sign-In) or continue as a guest with a randomly generated identifier. See Section 1.1 below for details, and Section 3.1 for what previously applied under the earlier device-based-only system.

1.1 Historical Note โ€” Identification System Evolution

Prior to July 2, 2026, the Application relied solely on a device-based identifier (derived from your device's Android ID) for all players, alongside an earlier, now-discontinued, optional integration with Google Play Games Services (GPGS). The GPGS SDK was fully removed from the Application on July 2, 2026, and no data is sent to or received from Google Play Games Services.

As of July 11, 2026, the Application introduced a new identification choice screen shown once, on first launch (or until a choice is made). Players can choose to:

Players who already had an account before this update (whether from the device-based system or the discontinued GPGS integration) are automatically and transparently migrated to their existing identifier if they choose "Continue as a guest," preserving their existing server-side statistics (scores, progression, achievements) without any action required on their part. This choice screen is shown only once; it does not reappear once a choice has been made.

Any section of this policy that previously described GPGS-specific data collection (Player ID, display name, profile picture, cloud saves, GPGS leaderboards, GPGS achievements) no longer applies. Where relevant, we have retained a short historical note rather than removing all references, for transparency about what was previously collected.

๐Ÿ‘ค2. Data Controller

TheCatsizerLab

๐Ÿ“ Zigliara, South Corsica, France

๐Ÿ“ง Email: contact.thecatsizerlab@gmail.com

For any data-related inquiries, please contact us at the address above.

2.2 App Package Information

๐Ÿ“Š3. Data We Collect

3.1 Data Collected Directly from You

๐Ÿ”€Identification Choice (First Launch)

On first launch of the Application (or until you make a choice), you are presented with a screen asking you to choose between two identification methods. This choice is required to continue using the Application, but the specific method you pick is entirely your decision.

Option What Happens Data Involved
Sign in with Google Native Google Sign-In flow opens; your Google identity is verified with Google, then confirmed server-side Google account email address, Google account identifier (see "Google Sign-In" below)
Continue as guest A random identifier is generated on your device (or your existing identifier is reused if you already played before) Randomly generated identifier only โ€” no personal data, no device hardware data

Legal Basis: Consent (Article 6.1.a) for the choice itself, Contract (Article 6.1.b) for the resulting identification | Purpose: Enable account identification, progression saving, leaderboards, and multiplayer features

Frequency: This screen is shown once. Once a choice is made, it is remembered locally and the screen does not reappear, regardless of which option was chosen.

๐Ÿ”‘Google Sign-In

If you choose to sign in with Google, the Application uses the official google_sign_in Flutter package to authenticate you through your device's Google account.

Legal Basis: Consent (Article 6.1.a) + Service contract (Article 6.1.b) | Purpose: Secure, persistent account identification across devices and reinstalls

Storage: Verified account identifier and associated game data stored on our own servers (Fly.io / Neon PostgreSQL); the Google ID token itself is not stored after verification

โ„น๏ธ Distinct from Google Play Games Services: This Google Sign-In feature is a separate, standalone integration from the previously removed Google Play Games Services (GPGS) SDK described in Section 1.1. It does not use GPGS, and no data flows to or from GPGS.

๐Ÿ†”Guest Identifier (Randomly Generated)

Legal Basis: Service contract (Article 6.1.b) | Purpose: Enable core game features for players who do not wish to sign in with Google

Storage: Device local storage (SharedPreferences) + server-side (Fly.io / Neon PostgreSQL)

Retention: As long as needed to provide the service and maintain integrity of features, subject to security and legal requirements

โš ๏ธ Guest Identifier Notice: Since this identifier is stored only on your device and is not tied to your personal identity or any account, uninstalling the Application or clearing its data will make it unrecoverable โ€” a new identifier will be generated on next launch, and previous progress cannot be restored unless you had linked a Google account beforehand. You can link a Google account at any time from your profile to secure your progress against this.

As part of migrating existing players to this system, a device identifier previously derived from your Android device (used prior to July 11, 2026, see "Legacy Device Identifier" below) may still be read once, locally, purely to detect and preserve an existing account during migration. It is not used to create new identifiers going forward.

๐Ÿ“ฑLegacy Device Identifier (Migration Only)

โ„น๏ธ Applies only to accounts created before July 11, 2026. Earlier versions of the Application generated a device identifier by hashing your Android ID (SHA-256, never sent or stored in raw form). This mechanism is no longer used to create identifiers for new players. It is retained solely so that players with a pre-existing account can be recognized and their progress preserved when they choose "Continue as a guest" on the identification choice screen described above.

Legal Basis: Service contract (Article 6.1.b) โ€” necessary to preserve existing players' progress during the migration | Purpose: Prevent data loss for existing players

๐ŸŽฎPlayer Identification โ€” General

Legal Basis: Service contract | Purpose: Authentication, server-side sync, leaderboards, achievements

๐ŸŽฏGame Data

Legal Basis: Service contract | Purpose: Save progression, populate leaderboards, improve gameplay

๐Ÿ‘ฅMultiplayer Data

Legal Basis: Service contract | Purpose: Real-time multiplayer sync, leaderboards, game balancing

๐Ÿ’พMatch Details Backup (Local)

Purpose: Display recent match history offline

Retention: Until manual app data clear

Storage: SharedPreferences (JSON format)

โฑ๏ธDeferred Game Results (Backup System)

Purpose: Prevent lost match results due to disconnects during game_over event

Storage:

Dual-Flag Delivery System:

  1. When a player is offline at match end, result is stored with their delivery flag = FALSE
  2. When player reconnects and retrieves result via GET /api/game_over/check/{playerId}, their flag becomes TRUE
  3. Row is ONLY deleted when BOTH winner_delivered AND loser_delivered are TRUE
  4. This ensures both players receive their match result exactly once

API Endpoints:

Retention:

Privacy:

Security:

โš™๏ธPreference Data

Storage: Device local storage (SharedPreferences)

Legal Basis: Service contract | Purpose: Personalize user experience

๐Ÿ”ŠAudio Preferences

Storage: Device local storage (SharedPreferences)

Legal Basis: Service contract

Purpose: Remember your audio settings across sessions

โ˜๏ธCloud Game Save (Historical โ€” GPGS, discontinued)

โ„น๏ธ No longer applicable. Prior to July 2, 2026, the Application offered cloud save synchronization via Google Play Games Saved Games for signed-in players. This feature relied on the GPGS SDK, which has been removed. Game state (grid, progression, hints, score) is now preserved through our own servers as described in "Player Profile Statistics" and "Game Data" above, tied to your player identifier (Google Sign-In or guest identifier).

๐Ÿ…Achievement Progress Tracking (Local)

Storage: Device local storage (SharedPreferences)

Legal Basis: Service contract

Purpose: Track achievement unlock progress

Sync: Synced with our own servers when achievements are unlocked

Retention: As long as app is installed

๐Ÿ“ŠPlayer Profile Statistics

Legal Basis: Service contract

Purpose: Display player performance statistics

Visibility: Private (only visible to you)

Retention: As long as needed to provide the service and maintain integrity of features, subject to security and legal requirements.

๐Ÿ’พProfile Statistics Storage (PostgreSQL)

Storage Structure:

Calculation:

API Endpoints:

Storage Location: PostgreSQL (Neon) - encrypted at rest (AES-256)

Retention: As long as needed to provide the service and maintain integrity of features, subject to security and legal requirements.

Privacy: Statistics are private and only visible to the account owner

๐Ÿ“ŠProfile Statistics Cache (In-Memory)

Purpose: Reduce API calls, improve performance

Storage: Volatile memory (lost on app close)

Retention: Session only (cleared when app is closed)

3.2 Data Collected Automatically

๐Ÿ–ฅ๏ธTechnical Data

Legal Basis: Legitimate interest (technical maintenance, security, analytics) | Purpose: Performance optimization, fraud prevention, debugging

๐Ÿ“ฑConnection Data

Legal Basis: Legitimate interest (service improvement and performance monitoring) | Purpose: Service improvement, usage analysis, performance monitoring

โš ๏ธCrash and Error Data (Firebase Crashlytics)

Automatic Collection: Firebase Crashlytics automatically captures and sends crash reports when the app crashes.

Data NOT collected by Crashlytics:

Storage & Retention:

Legal Basis: Legitimate interest (GDPR Article 6.1.f - technical maintenance, security, app stability)

Purpose: Detect and fix crashes, improve app stability, prevent future errors

๐Ÿ”’ Privacy Protection: Crash reports are intended to contain technical diagnostics (such as stack traces and device/app state). We do not intentionally send direct identifiers like your player ID within Crashlytics.

User Controls:

  • In-app controls: The Application does not provide an in-app switch to disable essential diagnostics or basic usage measurement.
  • Google/Android controls: Some advertising-related controls (such as ad personalization preferences and Advertising ID controls) may be available through your Google account and Android settings.
  • Stop collection: Uninstalling the Application stops data collection from the app.

๐Ÿ”Android Permissions

The Application requests the following Android permissions:

Permission Purpose Required
INTERNET Connect to leaderboard servers, daily challenges, multiplayer โœ… Yes
ACCESS_NETWORK_STATE Check network availability before server requests โœ… Yes
VIBRATE Haptic feedback on correct/incorrect moves (can be disabled in Settings) โœ… Yes (declared in manifest)
BILLING In-App Purchases (Google Play Billing) โœ… Yes

Note: All permissions are requested at runtime and can be revoked in Android Settings > Apps > Sudoku Battle > Permissions.

3.3 Payment Data

๐Ÿ’ณIn-App Purchase Transactions

Legal Basis: Service contract | Purpose: Purchase management, product attribution, fraud prevention

โœ… Important: Your payment information is never shared with Catsizer Lab. All payments are processed securely through Google Play Billing, which complies with PCI DSS standards. Purchase tokens are sent to our server exclusively for validation purposes.

๐Ÿ”„Purchase Restoration

Purpose: Ensure purchases are not lost on device change/reinstall

Security: Dual validation (Google Play + server-side)

3.4 Third-Party Data

๐Ÿ“ขGoogle AdMob (Advertising)

Advertisements displayed in the Application are managed by Google through AdMob.

Data collected by Google:

Regional Notice: In certain regions (such as the EEA, UK, and Switzerland), Google may require a consent message for personalized ads. When required, consent is handled according to Google's requirements and supported consent solutions.

Legal Basis: Consent (compliant with Google policy) | Purpose: Personalized ad delivery, app monetization

Manage Ad Preferences: Go to Settings > Google > Manage your Google Account > Data & Privacy > Ad Settings

๐Ÿ”ฅFirebase Services (Google)

Firebase Analytics

Provider: Google LLC

Privacy Policy: firebase.google.com/support/privacy

Firebase Crashlytics

Provider: Google LLC

Privacy Policy: firebase.google.com/support/privacy/crashlytics

Legal Basis: Legitimate interest (GDPR Article 6.1.f)

Retention: Retention periods are controlled by Google's Firebase policies and configuration. We do not implement custom deletion routines for Firebase Analytics or Crashlytics data.

โšกPower-Up Cooldown & Energy Management

Cooldown System:

Energy Deduction:

Refund Scenarios (Energy returned to player):

Power-Up Targeting:

Storage: RAM only (session-based, not persistent)

Purpose: Prevent power-up spam, ensure fair energy consumption, maintain game balance

Retention: Until match ends or player disconnects (volatile memory)

๐ŸŽฌRewarded Video Ads

Legal Basis: Consent (Google ToS)

Purpose: Provide optional rewards in exchange for ad views

Provider: Google AdMob

Control: You can refuse to watch ads (feature unavailable without viewing)

โฑ๏ธRewarded Ad Cooldown

Purpose: Prevent ad spam exploitation

Control: Premium subscription removes ads entirely

โฑ๏ธInterstitial Ad Frequency Control

Storage: Device local storage (SharedPreferences)

Purpose: Limit ad annoyance, respect user experience

Control: Premium subscription removes all interstitial ads

โœ… User-Friendly: Ads are limited to once every 3 minutes AND after 3 completed games to avoid disrupting gameplay.

๐Ÿ†Leaderboards & Achievements (formerly Google Play Games Services)

โ„น๏ธ Historical note: Prior to July 2, 2026, public leaderboards, achievement badges, and public profile information were managed through Google Play Games Services. GPGS is no longer integrated. Leaderboards and achievements are now managed entirely through our own servers (Fly.io / Neon PostgreSQL), tied to your player identifier (Google Sign-In or guest identifier, see Section 1.1).

Legal Basis: Service contract | Purpose: Leaderboards, social features

๐Ÿ“ŠPrivate Statistics Leaderboards (Historical โ€” GPGS, discontinued)

โ„น๏ธ No longer applicable. Prior to July 2, 2026, the Application additionally maintained private leaderboards via Google Play Games Services for internal tracking of total playtime, games played, and total wins. These leaderboards were already disabled in the Google Play Console for internal use only, and the underlying GPGS integration has since been removed entirely along with the SDK. The associated Google Play leaderboard IDs (previously referenced here) are no longer in use.

3.5 Daily Challenge Data

๐Ÿ“…Daily Puzzle Progress

Legal Basis: Service contract | Purpose: Daily challenge leaderboards, player engagement tracking

Storage: PostgreSQL database (Neon) via Fly.io servers (USA)

Retention: Indefinite (for leaderboard integrity and historical rankings)

๐Ÿ†Daily Leaderboards

Visibility: All daily challenge scores are publicly visible in leaderboards

๐Ÿ“ข Public Data Notice: When you complete a Daily Challenge, your player name, score, and completion time will be publicly visible in the global leaderboard. This data is shared with all users of the application.

๐Ÿ”’Duplicate Submission Prevention

Server-Side Validation:

Client-Side Check:

Purpose: Ensure fair leaderboards, prevent score manipulation, maintain competitive integrity

Legal Basis: Legitimate interest (fraud prevention - GDPR Article 6.1.f)

๐Ÿ“ŠAnti-Cheat Validation

3.6 Friends System Data

๐Ÿ‘ฅFriend Connections

Legal Basis: Consent + Service contract | Purpose: Social features, friend-to-friend matching

๐Ÿ”Friend Code Generation

Your friend code is generated using a deterministic, non-reversible hash algorithm based on your player identifier. This means:

โšกFriend Invitations

Retention: 60 seconds (auto-expire if not responded), then permanently deleted

Storage: PostgreSQL database (Neon) via Fly.io servers (USA)

โœ… Privacy by Design: Friend invitations automatically expire after 60 seconds and are permanently deleted from our servers. Only accepted friendships are retained.
โš ๏ธ Important: Friend codes and friendships are tied to your player identifier (Google Sign-In account or guest identifier). Uninstalling the Application and clearing app data will disconnect you from your existing friendships unless your account is secured via Google Sign-In, as described in Section 7.3.

3.7 Challenge System Data

โš”๏ธPlayer-to-Player Challenges

Legal Basis: Service contract | Purpose: Facilitate direct player-to-player matches

Retention: 60 seconds maximum (auto-expire), then permanently deleted

Storage: Temporary in-memory storage (server RAM), no persistent database storage

โฐ Auto-Cleanup: All challenge data is automatically deleted after 60 seconds, whether accepted, declined, or ignored. No long-term storage is performed.

3.8 Authentication Tokens

๐Ÿ”‘JWT Authentication

Legal Basis: Service contract + Security (legitimate interest)

Purpose: Secure API authentication for leaderboards, daily challenges, friends system

Expiration: 30 days (automatic renewal on reconnection)

Storage Location: Device local storage (encrypted) + server-side validation

Security: Tokens are signed using industry-standard HS256 algorithm with a 32+ character secret key

๐Ÿ”’ Token Security: JWT tokens are encrypted and cannot be reverse-engineered to extract your Player ID or personal information. They automatically expire after 30 days for security.

3.9 Real-Time Multiplayer Data (WebSocket/Socket.IO)

๐ŸŒWebSocket Connection

During multiplayer matches, your device establishes a real-time WebSocket connection to our game server.

Data Type Details Retention
IP Address Used for WebSocket routing and connection management Session only
Socket ID Temporary unique identifier for your WebSocket connection Until disconnect
Room ID Temporary match identifier (shared with opponent) Until match ends
Game Moves Row, column, value placed in real-time Match duration
Player Stats Progress, combo, errors, energy (synced live) Match duration
Heartbeat Signals Connection alive pings (throttled to max 1 per 3 seconds) Not stored
Power-Up Events Type, duration, target player Match duration
Match Start Timestamp Unix timestamp (ms) when room was created (startTime) Session only
Server Timestamp Current server time (ms) for client synchronization (serverTime) Not stored
Time Consumed (Time Attack) Elapsed time in seconds (calculated from personalEndTime - currentTime) Session only

Timestamp Synchronization:

Time Attack - Time Consumed:

Server: sudokupuzzle-server.fly.dev (Fly.io infrastructure, USA)

Transport Security: WebSocket Secure (WSS) over TLS 1.3

Legal Basis: Service contract (multiplayer functionality)

Purpose: Enable real-time 1v1 synchronization

โšก Session-Based: All WebSocket data is deleted immediately when the match ends or a player disconnects. No persistent storage is performed.
๐Ÿ”’ Privacy: Your IP address is only used for connection routing and is never stored or shared with other players. Only your display name is visible to opponents.

๐Ÿ”„Reconnection Dialog

When you reconnect after temporary disconnect (within 60 seconds), server sends:

Score Recalculation on Reconnection:

Data Source: All data retrieved from server RAM (rooms object), no database queries

Retention: Sent once on reconnection, not stored client-side beyond session

3.10 Backend Server Infrastructure

๐Ÿ†Leaderboard Backend Server

๐Ÿ’พPostgreSQL Database (Neon)

๐ŸŽฏ4. How We Use Your Data

4.1 Primary Purposes

Purpose Data Used Legal Basis
Provide game service Game data, player profile Contract
Server-side synchronization Progression data Contract
Leaderboards & Achievements Scores, name, stats Contract
Performance optimization Technical data, crash logs Legitimate Interest
Security & fraud prevention IP, device ID, transactions Legitimate Interest
Personalized ads Advertising ID, interests Consent (Google)
Technical maintenance All relevant logs Legitimate Interest
Legal compliance Relevant data Legal Obligation

๐Ÿ”„Data Merge Strategy (Historical โ€” GPGS cloud sync, discontinued)

โ„น๏ธ No longer applicable. Prior to July 2, 2026, when syncing data between a device and Google Play Games cloud saves, we used a MAX merge strategy (highest value kept for win counters and playtime, most recent timestamp for settings) to prevent data loss on reinstall or device change. Since GPGS cloud sync has been removed, progression is now stored solely on our own servers under your player identifier; no client/cloud merge is performed. When an existing guest account is later linked to a Google Sign-In account, existing progress is merged (added) rather than overwritten โ€” see Section 7.3.

4.2 Data Sharing

Your data is NEVER sold to third parties.

Third Party Data Shared Reason Data Processing Agreement
Google Sign-In Email address, Google account identifier (ID token, verified server-side) Account authentication (optional, user choice) โœ… Yes (Google ToS)
Google AdMob Advertising ID Ad personalization โœ… Yes (Google ToS)
Game Server (Fly.io) Multiplayer stats Real-time sync โœ… Yes (encrypted)
Google Play Billing Transaction data Payment processing โœ… Yes (PCI DSS)
PostgreSQL (Neon) Scores, daily data, friends, challenges Persistent database storage โœ… Yes (encrypted at rest)
JWT Tokens (Local) Authentication tokens (Player ID + Name) API authentication โœ… Yes (30-day expiry, HS256 signed)
Legal Authorities Relevant data Legal obligation upon request N/A
โ„น๏ธ Historical note: Prior to July 2, 2026, this table also listed Google Play Games Services (Player ID, name, scores shared for authentication and leaderboards). This row has been removed as GPGS is no longer integrated and no data is shared with it. The "Google Sign-In" row above refers to a separate, unrelated native sign-in feature introduced July 11, 2026.

โณ5. Data Retention

We retain data only for as long as necessary to provide the Application, maintain competitive integrity (such as leaderboards), prevent abuse, and comply with legal obligations.

5.1 Local Device Data

Some preferences and gameplay-related data may be stored locally on your device (e.g., settings, cached data, recent matches). This data remains on your device until you clear the app data or uninstall the Application.

5.2 Server Data (Game Features)

Where server-side features are provided (such as multiplayer, friends, and leaderboards), related records may be retained as long as needed for the operation and integrity of these features and for security/fraud prevention.

5.3 Third-Party Services (Google)

Some data is processed by third-party services such as Google Sign-In, Google AdMob and Firebase (Analytics/Crash reporting). Retention for those services is governed by their policies and configuration. We do not implement custom deletion routines for data stored and retained by these third-party services.

5.4 Legal and Accounting

Where required by law (for example, for accounting, taxation, or fraud prevention), certain transaction-related records may be retained for the legally required period.

๐Ÿ”6. Data Security

6.1 Technical Measures

๐Ÿ”„WebSocket Connection Retry Logic

Purpose: Handle temporary network interruptions, prevent match loss due to brief disconnects

๐Ÿ›ก๏ธRate Limiting

Protection Levels:

Data Collected for Rate Limiting:

Implementation:

Retention: 60 seconds (rolling window), then automatically cleared

Purpose: Prevent API abuse, DDoS attacks, score manipulation via spam

Legal Basis: Legitimate interest (security - GDPR Article 6.1.f)

๐ŸšจAnti-Cheat - Suspicious Score Flagging

Detection Criteria:

Flagging Process:

Storage & Retention:

Your Rights:

Purpose: Detect and prevent score manipulation, maintain leaderboard integrity, protect fair play

Legal Basis: Legitimate interest (fraud prevention - GDPR Article 6.1.f)

โš ๏ธ Fair Play Policy: Repeatedly flagged scores may result in account review. Proven cheating may lead to leaderboard removal or account suspension.

6.2 Organizational Measures

โš ๏ธ Disclaimer: While we implement industry-standard security measures, no system is 100% secure. You acknowledge that Internet data transfer carries inherent risks.

โœ‹7. Your Privacy Rights

7.1 Right of Access (GDPR Article 15)

You can request access to your personal data.

How to Request:

Data Accessible Directly:

7.2 Right of Correction (GDPR Article 16)

You can correct inaccurate data about yourself.

7.3 Right to Erasure (GDPR Article 17)

You can request deletion of your personal data. However, certain data must be retained for the app to function properly.

๐Ÿ—‘๏ธWhat Can Be Deleted

Data Type Deletion Method Effect
Local Device Data Uninstall app or Clear Data in Android Settings All local progress deleted; if you were a guest (not signed in with Google), a new identifier will be generated on next launch and previous progress cannot be recovered
Specific Friendships Settings > Friends > Remove Friend Individual friend removed from your list
JWT Tokens Automatic after 30 days OR manual logout Re-authentication required
Temporary Game Backups Automatic after 1 hour No manual action needed
โœ… Tip: If you signed in with Google, your progress is tied to your Google account and will not be lost on reinstall โ€” simply sign in again with the same Google account. Guest players who want this protection can switch to Google Sign-In at any time from their profile.

๐Ÿ”’What CANNOT Be Deleted (Service Integrity)

The following data is essential for the app to function and cannot be deleted while you maintain an active account:

Data Type Reason for Retention Legal Basis (GDPR)
Leaderboard Scores Required for competitive ranking integrity. Deleting scores would artificially boost other players' ranks. Article 17.3.b (Public Interest) + Article 6.1.b (Contract)
Player Profile Statistics
(games played, win rate, etc.)
Core functionality of your account. Without stats, profile features are non-functional. Article 6.1.b (Contract - necessary for service provision)
Friend Connections Social feature foundation. Your friends list is part of your account data. Article 6.1.b (Contract) + Article 6.1.a (Consent - given when adding friends)
Friend Code Unique identifier for friend system. Required for other players to find you. Article 6.1.b (Contract)
Daily Challenge History Historical leaderboard integrity. Past rankings cannot be retroactively altered. Article 17.3.b (Public Interest)
Match History Used for matchmaking balancing and anti-cheat systems. Article 6.1.f (Legitimate Interest - fraud prevention)
Premium Purchases Legal requirement for tax records and fraud prevention. Article 17.3.b (Legal Obligation - 7 years retention, France/EU law)
Player Identifier
(Google Sign-In account identifier or guest identifier)
Used as your player identifier for all game features. Required for leaderboard integrity and game feature continuity. Article 6.1.b (Contract) + Article 6.1.f (Legitimate Interest)
โš ๏ธ Important Understanding: Sudoku Battle is a competitive multiplayer game with persistent rankings. The "Right to Erasure" under GDPR has exceptions when:
  • Data is necessary for contract performance (Article 6.1.b) โœ…
  • Data serves a public interest (leaderboard integrity - Article 17.3.b) โœ…
  • Data is required by law (tax records - Article 17.3.b) โœ…

Note: For our own server-side records, we can delete or anonymize where feasible, subject to integrity and legal obligations.

๐Ÿ”„How to Completely Remove Your Data

If you want to completely erase your presence from the app, you must:

  1. Uninstall Sudoku Battle
    • Long-press app icon > Uninstall
    • Effect: All local device data deleted immediately
  2. Request Server Data Cleanup (Optional)
    • Email contact.thecatsizerlab@gmail.com
    • Provide your player identifier, linked Google account email, or display name if known
    • We will delete: Orphaned server records (scores, friendships, etc.) within 90 days
    • We will retain: Purchase records (7 years - legal requirement)
๐Ÿ“ง Manual Deletion Request: To expedite server cleanup, email us with:
  • Your player identifier (if known)
  • Your former display name

Processing time: 30 days maximum

โš–๏ธGDPR Compliance Justification

We comply with GDPR while maintaining service integrity through these legal bases:

โœ… Practical Options:

You can stop app data collection by uninstalling the Application. You may also request deletion or anonymization of our server-side records where feasible, subject to leaderboard integrity and legal obligations. Data handled by Google services (Google Sign-In / Firebase / AdMob) is managed under Google's controls.

7.3.1 Partial Data Deletion

You can request deletion of specific types of data without deleting everything:

Data Type How to Delete Impact
Leaderboard Scores Email request with Player ID Your scores removed from public leaderboards
Friends List Settings > Friends > Remove individual friends Removes specific friendships only
Daily Challenge History Email request with Player ID Your daily challenge scores removed from rankings
Match History Email request with Player ID Past game records deleted from our database
Local Device Data App Settings > Storage > Clear Data All local progress and settings deleted
Purchase History Cannot be deleted Legal requirement (7 years retention)

To request partial deletion: Email contact.thecatsizerlab@gmail.com with your Player ID and specify exactly which data you want deleted.

7.4 Right to Data Portability (GDPR Article 20)

You can request your data in a structured, portable format.

How: Email a request to contact.thecatsizerlab@gmail.com with proof of identity

7.5 Right to Object (GDPR Article 21)

7.6 Right to Restrict Processing (GDPR Article 18)

You can request to restrict certain processing of your personal data in specific situations defined by applicable law. To make a request, contact us by email.

โš–๏ธ8. Legal Compliance

8.1 GDPR (European Union)

Sudoku Battle complies with the General Data Protection Regulation (GDPR):

8.2 CCPA (California, USA)

For California residents, you have additional rights:

CCPA Request Process: Send verified request to contact.thecatsizerlab@gmail.com with:

Response Time: 45 days

8.3 France - Loi Informatique et Libertรฉs

Sudoku Battle complies with French Law nยฐ78-17 of January 6, 1978:

8.4 Other Jurisdictions

๐ŸŽฏ9. Consent & Controls

9.1 Essential Services

Sudoku Battle relies on certain services that are necessary to operate, maintain, and improve the Application. For this reason, we do not provide in-app switches to disable essential diagnostics and basic usage measurement.

Legal Basis: Legitimate Interest (GDPR Article 6.1.f) and/or Contract Necessity (GDPR Article 6.1.b), depending on the context and the data involved.

9.2 Identification Choice Control

Unlike the essential services above, your identification method (Google Sign-In vs. guest) is a genuine choice you make on first launch, and you retain control over it afterward:

9.3 Advertising Controls (Google)

The Application displays ads using Google AdMob. Ad delivery and personalization preferences are primarily managed by Google through your device and Google account settings.

Note: The availability of certain ad controls depends on your region, device, and Google settings.

9.4 How to Stop Data Collection

You can stop all data collection from the Application by uninstalling it. You can also clear local data via Android Settings (this removes locally stored preferences and progress saved on the device).

๐Ÿช10. Cookies & Tracking Technologies

10.1 Local Storage

The app uses SharedPreferences (Android local storage) to store:

Technically these are not "cookies" but persistent local files.

10.2 Firebase Analytics & Crashlytics

๐Ÿ“ŠFirebase Analytics

Google Firebase Analytics collects usage data automatically:

Storage & Retention: Analytics data is processed and retained under Google's Firebase Analytics policies and configuration. Retention settings may vary and are managed by Google.

Legal Basis: Legitimate interest (GDPR Article 6.1.f - analytics for service improvement)

โš ๏ธFirebase Crashlytics

Automatic crash reporting system (see Section 3.2 for full details):

Storage & Retention: Crash reports are processed and retained under Google's Firebase Crashlytics policies and configuration. Retention settings may vary and are managed by Google.

Legal Basis: Legitimate interest (technical maintenance)

๐Ÿ”’ Privacy: These services are provided by Google and operate under Google's policies. We do not intentionally include your player ID in Analytics/Crash reports. Google may process device/app identifiers needed to provide these services.

User Controls:

10.3 Google Advertising ID

Google assigns you a unique advertising ID for:

Manage: Settings > Google > Manage Account > Privacy > Ad Settings

Reset: Settings > Google > Privacy > Reset Advertising ID

10.4 Tracking Links (UTM)

Promotional links may include UTM parameters to measure campaign effectiveness.

๐Ÿ‘ถ11. Children's Privacy (COPPA & GDPR)

11.1 Age Requirements

11.2 Minors' Data Protection

If you are under the age of digital consent in your jurisdiction:

11.3 Parental Controls

Parents/guardians can:

  1. Restrict IAP: Google Play > Parental Controls > Require Authentication
  2. Limit Ads: Disable personalized advertising
  3. View History: Google Play Family Library
  4. Delete Account: Request via email with proof

11.4 Report Inappropriate Content

If you find content unsuitable for children: contact.thecatsizerlab@gmail.com with screenshot

๐ŸŒ12. International Data Transfers

12.1 Server Locations

12.2 Legal Safeguards

For transfers outside EU to USA, we rely on:

12.3 Your Control

You can request:

๐Ÿ“13. Policy Changes

13.1 Right to Modify

We may update this policy for:

13.2 Notification

13.3 Version History

Version Date Changes
1.0 December 19, 2025 Initial publication
1.1 December 20, 2025 Added: Daily Challenge system, Friends system, Challenge system, JWT tokens, PostgreSQL database, Purchase validation details
1.2 December 27, 2025 Added: Socket.IO real-time data, backend infrastructure details, rewarded/interstitial ad timing, audio preferences, achievement tracking, cloud sync conflict resolution, retry logic, private leaderboards, friend code validation, purchase restoration process
1.3 January 10, 2026 Clarified: Local storage (SharedPreferences), encryption wording, and data processing descriptions for consistency
1.4 June 3, 2026 Added: Hybrid authentication system โ€” device identifier support for guest users (non-GPGS), JWT token updated to reflect GPGS Player ID or Device ID
1.5 July 2, 2026 Removed: Google Play Games Services (GPGS) integration entirely โ€” the SDK is no longer bundled with the Application. Player identification, progression, leaderboards, and achievements now rely solely on the device-based identifier and our own servers. Existing GPGS players were transparently migrated. Historical notes added throughout Sections 1, 3, 4, and 7 to reflect this change while preserving transparency about prior data practices.
1.6 July 11, 2026 Added: New first-launch identification choice screen offering native Google Sign-In (separate from the previously removed GPGS) or a randomly generated guest identifier. Clarified that the guest identifier is no longer derived from the device's Android ID for new players (previous device-hash method retained only for migrating pre-existing accounts). Updated Sections 1.1, 3.1, 4.2, 5.3, 6.1, 7.3, and 9.2 accordingly.

๐Ÿ“ž14. Contact & Complaints

14.1 Questions or Issues

Email: contact.thecatsizerlab@gmail.com

Response Time: 7 business days

Required Information:

  • Subject (data access, concern, rights exercise)
  • Detailed description
  • Supporting documents if applicable

14.2 File a Complaint with Authorities

If you believe we violate your rights, you can lodge complaints with:

14.3 Complaint Procedure

Before escalating to authorities:

  1. Contact us directly (see 14.1)
  2. Allow 30 days for resolution
  3. Provide evidence of resolution attempts

โ„น๏ธ15. Additional Information

15.1 Sensitive Data

We NEVER collect:

15.2 Profiling & Automated Decisions

15.3 External Links

This policy does NOT cover:

Please review their privacy policies separately.

โšก16. Final Provisions

16.1 Complete Agreement

This policy is the complete agreement between you and TheCatsizerLab regarding personal data processing. It supersedes all previous versions.

16.2 Severability

If any provision is invalid, remaining clauses remain enforceable.

16.3 No Waiver

Non-exercise of a right does not constitute waiver of that right.

16.4 Governing Law

16.5 Prescription Period

GDPR rights must be exercised within 3 years of becoming aware of the violation.

๐Ÿ“š17. Glossary

GDPR
General Data Protection Regulation (European Union data protection law)
CCPA
California Consumer Privacy Act (US state law)
COPPA
Children's Online Privacy Protection Act (US federal law)
DPO
Data Protection Officer
SCC
Standard Contractual Clauses (for international data transfers)
IAP
In-App Purchase
GPGS
Google Play Games Services โ€” a Google authentication and social gaming SDK formerly integrated in the Application. No longer in use as of July 2, 2026 (see Section 1.1).
Google Sign-In
A standalone, native Google authentication feature (via the google_sign_in package) introduced July 11, 2026, allowing players to identify themselves with their Google account email and account identifier. Distinct from, and unrelated to, the previously removed Google Play Games Services (GPGS).
Guest Identifier
A randomly generated identifier (not derived from device hardware) assigned to players who choose not to sign in with Google, introduced July 11, 2026.
SharedPreferences
Android local key-value storage system for app preferences
Fly.io
Backend hosting platform with global CDN
Socket.IO
Real-time WebSocket library for multiplayer synchronization
JWT
JSON Web Token - Secure authentication token format
PostgreSQL (Neon)
Serverless PostgreSQL database provider
Consent
Explicit user agreement to data processing

โค๏ธThank You

Thank you for taking the time to read our privacy policy. Your trust is important to us.

โœ… PRIVACY POLICY COMPLETE

This document contains the complete Privacy Policy for Sudoku Battle by TheCatsizerLab.

Total Sections: 17 complete sections covering all data collection, processing, security, and user rights.

Last Updated: July 11, 2026 (Version 1.6)