Plain-language policy
Privacy
Last updated: 25 August 2026
TsundereSQL runs in your browser or downloaded app. Your gameplay save stays on your device. The standard release has two game-data network features: an anonymous progress ping that is on by default, with one off switch in Settings, and optional AI tutor or judgment-grading requests that run only when you use those features. An optional self-hosted companion and the public website are described separately below.
What stays on your device
The game stores progress, XP, streaks, relationship state, unlocked art, settings, and your saved game in local storage on your device. SQL executes locally in DuckDB running as WebAssembly. Your query is not sent elsewhere for execution. If you choose to use the AI tutor, the current query is included in that request as described below. Clearing the game's local data deletes the save. We cannot back it up or recover it.
AI tutor and judgment grading
These features call our tutor proxy only when you use them. A tutor request contains:
- fixed safety instructions and the selected instructor's persona,
- the current problem title, prompt, and table and column schemas,
- your current SQL and a summary of the last grader result or error, and
- the messages in that tutor conversation.
A judgment-grading request instead contains fixed grader instructions, the scenario, its authored grading rubric, and the free-text answer you submit. Neither request reads your name, email, full save, or data from other sites.
Our proxy forwards these requests to OpenRouter and a language-model provider to generate the response. Before forwarding, it replaces common API-key patterns, email addresses, and checksum-valid payment-card numbers with redaction labels, and asks OpenRouter to route only to providers it identifies as not collecting request data. This is a safety net, not a guarantee that every kind of personal information can be detected, so do not type personal or confidential information into either feature. Generated links are not made clickable, and responses containing write, administrative, file, network, or extension SQL are replaced before display. Read the OpenRouter privacy policy. The proxy uses your IP address for short-lived rate limiting; it does not attach a game account or save identifier to the request.
Anonymous progress stats (on by default, one switch to stop them)
Settings has one switch, Share anonymous progress stats, that is on by default. It exists to answer one question: where do players stop learning SQL. While it is on, the game sends a small ping at these moments, and nowhere else:
- you open a curriculum module for the first time on that device, using only the fixed module name;
- you finish a module, using the number of modules finished;
- you pass a solve-count milestone (1, 5, 15, 35, 60, 93, 150, 200, 224 solves), once each;
- you reach a third unsuccessful graded submit on an exercise, using only the fixed exercise name once;
- you start a character route or reach an ending;
- you finish the placement exam, using the module it placed you out of or none; and
- the game starts once per session, using a same-day, next-day, 2-7 day, 8-30 day, or over-30-day return bucket computed on your device.
- the game starts once per session with one coarse surface label: itch, direct web, Windows desktop, macOS desktop, other desktop, or development. The URL, referrer, browser, OS version, and user-agent string are not sent.
- if you click a visible companion-product vote link, the fixed choice you press (calendar or fan pack). The public website records it once per browser; the local one-vote guard is not sent to the server.
Each analytics ping has exactly two fields: the event name from the list above, and its number or name. That is the entire message. There is no identifier of any kind in it: no account, no install ID, no device ID, no session ID, no cookie, and no random number standing in for one. It contains no SQL, answer, email, name, or save data.
Your browser remembers locally which milestones it has already reported. The server keeps daily aggregate counters, not per-player rows. The analytics application writes no IP address, user agent, or timestamp finer than the date. Daily totals are kept for about thirteen months and then deleted automatically.
You can turn the switch off in Settings at any time. Turning it off also deletes the local record of reported milestones. The game explains the counting once after the placement exam or first finished module and offers a one-click off button. A previous decision to keep it off remains off.
Website, update list, and support contact
The public website does not currently require an account. If an email update-list form is offered and you submit it, the site stores your lowercased email address, signup timestamp, and browser user-agent string in Cloudflare's storage so we can deduplicate signups and send product updates. If you email support, your address and message are handled by the relevant mail providers and kept as needed to answer you. You can ask us to remove a waitlist entry or support correspondence at hello@tsunderesql.com.
What we do not do
- No TsundereSQL gameplay account is required.
- No ad trackers, third-party analytics SDK, or advertising cookies are added by the game.
- No analytics profiles are built because the progress pings have no identifier.
- We do not sell personal data. AI request content is shared only to provide the feature described above.
Optional companion bot
The code includes an optional self-hosted Telegram companion. Standard builds do not set its service address. If you configure and run it yourself, the game can send progress summaries, relationship and streak state, solve events, and newly unlocked character-message content to your service so it can deliver Telegram messages. Without that configuration, those companion requests are not sent.
Children
After the first-run adult confirmation, romance and suggestive content are on by default and can be switched off at any time in Settings. Suggestive content is intended for adults: the game asks you to confirm on a content screen before anything is shown, and declining turns it off. The SQL course itself contains no such content.
Contact
Privacy questions or removal requests: hello@tsunderesql.com.