What the paper knows about you
Privacy notice — last updated 24 October 2026
The Ritz Affair is a browser game for learning SQL. It has no accounts. The whole game, database included, runs in your browser. The page shows advertising from Google AdSense in one box under the schema beside the game, never inside a chapter, and in the same box under the schema of the handbook's exercises page. In the European Economic Area, the United Kingdom and Switzerland, Google's consent message asks on your first visit whether Google and its partners may use cookies and your data for advertising and for usage statistics, once Google has made it active for this site; until then, and whenever it cannot load, the game asks its own question about usage statistics. Elsewhere both are on by default and you can opt out (below). The game itself sets no cookies.
Investigate (learning mode)
Your progress, notes, queries, badges and day/night choice are saved in your browser's local storage
(ritz.learn, ritz.compete, ritz.theme) so you can pick up where you
left off; the handbook, the Clerk's Desk and the leaderboard read and write the same day/night choice
(ritz.theme). Only you can see them; clearing this site's data in your browser erases them. None of it is sent
anywhere.
The handbook's exercises page works the same way: your queries run in your browser, and the list of
questions you have solved and its own query history are kept in its local storage (ritz.exercises,
ritz.exercises.history, separate from the game's), never sent. It carries the same advertising
box as the game (see Advertising). Every handbook page asks the game's question about usage statistics and
loads them under the same rules (see Usage statistics). One answer, kept in ritz.consent, covers
the game and the handbook.
Your consent
The page tells Google's tags a default for each purpose (Google Consent Mode: ad storage, ad user data, ad personalisation and analytics storage), and Google applies the one that fits your country:
- In the European Economic Area, the United Kingdom and Switzerland, every purpose starts as denied. On your first visit a message from Google (Google's certified consent management platform, served by the AdSense script) asks for your consent to advertising and usage statistics, with buttons to accept or refuse and a way to manage each purpose. Google keeps your choice in its own cookies on this site. Until you choose, and whenever you refuse, every purpose stays denied.
- Everywhere else, no message from Google is shown and every purpose starts as granted: usage statistics are counted and the ads may be personalised, until you opt out.
Google shows its message only once it has made it active for this site, and the AdSense script may be
blocked. So the page waits up to 3 seconds after that script loads (not at all if it fails). If Google's
message is not active by then, a short question from the game itself, at the bottom of the page, asks
every visitor who has not yet answered it whether to allow anonymous usage statistics (Yes or No). Your
answer is kept in your browser's local storage (ritz.consent). It covers statistics only:
in Europe the advertising purposes then stay denied. If Google's message appears later, it replaces the
game's question and decides from then on; the two are never shown together.
From a browser set to a European time zone (the page cannot see your country, so the time zone stands in for it), nothing is sent to Google Analytics before a Yes, in Google's message or in the game's question: its script is not even loaded.
You can change your mind at any time: the Privacy and cookie settings link at the bottom of
the game's front page (Statistics at the bottom of the handbook's pages) reopens Google's message where it applies, or the game's question while that one
asks. If you withdraw consent to statistics, the page stops sending them and deletes the
_ga cookies. Outside Europe, opt out of
personalised ads in Google's Ads Settings (more below),
and of statistics with Google's
Google Analytics opt-out add-on or your browser's
tracking protection.
Usage statistics
The game and the handbook load Google Analytics 4 at once outside Europe's time zones. In a European time zone it is loaded only after your Yes (above), so until then nothing at all reaches Google Analytics. If your time zone is outside Europe but Google places you in Europe, the analytics default there is denied: until you consent it sets no cookie and sends only cookieless signals (the page viewed and the game events below, with no identifier tying them to you), which Google uses to estimate overall numbers. With statistics on (your Yes in Europe, the default elsewhere):
- It sets the first-party cookies
_gaand_ga_<id>, which Google keeps for up to 13 months by default. The collected data itself is kept for 14 months, then deleted. - Google receives page views: the page address and referrer, and your browser, device model and approximate location (country, region, city) as Google Analytics works them out from the connection. Google Analytics 4 does not log or store IP addresses.
- And these game events, with only these fields:
chapter_open: chapter number, mode (learn or compete);chapter_solve: chapter number, mode, seconds taken, number of queries, number of wrong answers, and how you reached the answer as a fixed category:same_result(one of your queries in that chapter returned it in a single row),found(one showed it among other rows) orunseen(none of them showed it). Your queries and the answer are never sent;chapter_queries: chapter number, mode, and a count (1, 5 or 20), sent once when you reach that many queries in a chapter you have not solved yet. The queries themselves are never sent;game_finish: part, mode;badge: badge name;chapter_leave: chapter number, mode, seconds since the chapter opened and number of queries, sent once when you hide or close the page before solving it;query_fail: chapter number, mode, whether the query failed or was refused, the name of the rule it broke (such asgroup-by) and the kind of error (such assyntaxorno_table, a fixed category, never the query or a name you typed), for the first three failed queries of a chapter;answer_wrong: chapter number, mode, and 1 or 3, sent on your first and third wrong answer in a chapter. The answer itself is never sent;hint_open: chapter number, mode, sent the first time you open a chapter's Hint;landing_begin: mode, when you press Investigate or Join on the front page;feature_use: the name of a feature you used and the chapter number (and the part, for a film), once per visit: enlarging the schema, opening the suspects, reusing a query from History, following a refusal's Grammar link, playing or finishing a film, opening the front page's About, switching day and night, finishing or skipping the clerk's first morning (the practice page before chapter I), finishing or skipping chapter I's short tour, clicking the house advertisement for the handbook or the front page's warm-up link, reopening a solved chapter from the case board, sending a message with the Feedback form, and pressing a share button at the end of the game (with which one: X, LinkedIn, Copy link or your device's Share).
- And these handbook events, with only these fields:
exercise_run: the exercise's name, its level, and whether the run worked, failed or was refused, for the first run of each exercise in a visit;exercise_solve: the exercise's name, its level and how many times you ran a query on it in this visit;exercise_level: the level whose button you pressed;query_fail: the exercise's name, whether the query failed or was refused, the rule's name and the kind of error (a fixed category, as above), for the first three failed queries of an exercise in a visit;feature_use: the name of a feature you used, once per visit: enlarging the schema, reusing a query from History, following a Grammar link, opening How to use this page or a solution, following a Try it link (with the exercise's name), switching day and night, finishing or skipping the exercises page's short tour, clicking the handbook's own advertisement, sending a message with the Feedback form.
The share buttons at the end of the game open X or LinkedIn in a new tab with the share text, and nothing is sent to them until you press one. Copy link only puts the address on your clipboard.
Never sent to Google: your team name or pseudo, your answers, your SQL queries, your notes, anything you type. The Feedback form below is the one thing you type that leaves the page, and only to the course owner.
Why: to improve the course. The figures show which chapters students drop out of and how long each takes, and they tune the difficulty and the ranks. Google signals and ad personalisation are off, and the data is not used for advertising. Google processes it on the course owner's behalf, and may do so in the United States under the EU-US Data Privacy Framework.
Advertising
The page loads Google AdSense, which shows ads in one box beside the game, under the schema, never inside a chapter, and in the same box under the schema of the handbook's exercises page; when no ad is served (none available, or the ad is blocked), the box shows the site's own advertisement for its handbook instead, an image loaded from this site. You can fold the box away until the next visit (nothing is stored). The AdSense script loads on every visit, because it also carries Google's consent message; what it may do depends on your choice:
- If you consent, or by default outside the European Economic Area, the United Kingdom and Switzerland, Google and its partners may set and read advertising cookies and use data about your visits to this site and other sites to show personalised ads, and measure them.
- If you refuse in Google's message, or opt out in Ads Settings, or in Europe while the game's own question stands in for Google's message, you see non-personalised ads, chosen from the page's content and your approximate location rather than your browsing; Google may still use cookies or similar identifiers for frequency capping, aggregated reporting and fighting fraud and abuse, as its policies allow, or show no ad at all.
- Third-party vendors, including Google, use cookies to serve ads based on your prior visits to this site or to other sites.
- Google's use of advertising cookies enables it and its partners to serve ads to you based on your visits to this site and/or other sites on the Internet.
- You may opt out of personalised advertising in Google's Ads Settings, or opt out of other vendors' use of cookies for personalised advertising at www.aboutads.info.
To withdraw or change your advertising consent in Europe, use the Privacy and cookie settings link at the bottom of the game's front page, which reopens Google's message; in US states with their own privacy laws (California and others), Google shows a Do Not Sell or Share My Personal Information link on the page; elsewhere, use Google's Ads Settings or aboutads.info above. How Google uses data from sites that use its services: policies.google.com/technologies/partner-sites.
Compete
When your teacher gives you a season link, the page asks the class leaderboard for that season's name and state, and asks again every 5 seconds while you wait for the teacher to open the session. When you press Join, it sends your pseudo, the season's identifier and your browser's clock reading. After each chapter and at the finish it sends:
- your pseudo and the season's identifier,
- the chapter you solved,
- how many queries you ran and wrong answers you gave,
- your browser's clock reading and the time since the session opened by that clock.
Your answers are checked in your browser and never sent. The leaderboard adds the time it received each message and gives your browser a code tied to your pseudo, so that nobody else can post under it afterwards. It never receives your queries or your notes. It is a Google Sheet belonging to the course teacher, reached through Google Apps Script, so Google processes it under its own terms. Anyone holding a season or leaderboard link can read the pseudos, chapters and times of that season; the other seasons are readable only by the teacher. The rows stay until the teacher deletes them (deleting a season erases all its rows). This is separate from usage statistics and does not depend on your answer to the consent message.
Choose a pseudo that is not your full name. A first name or a nom de guerre is enough.
Feedback
The Feedback button at the top of every page opens a small form. Nothing is sent until you press Send. Then the page sends your message, the email address if you gave one, and the address of the page you were on (its path, such as /learn/like.html, nothing after it). With them go a few facts that help fix a problem: the kind of device, its system and browser with their versions, whether it has a touch screen, the screen and window sizes, the browser's language, time zone and local time, day or night edition, and in the game the chapter, the mode and the part you are on (never your team name, answers or queries). They go to a Google Apps Script that adds one row to the course owner's Google Sheet, with the time it arrived, and emails the same message to the owner's inbox. Only the owner reads it. The email is there so the owner can answer you, and it receives one short automatic note from contact@alephb.uk saying your message arrived; leave it empty if you do not want an answer. Please do not put other personal details in the message. To have a message deleted, write to the address below.
What the page loads from elsewhere
- The site is hosted on GitHub Pages, which, like any web host, may log your IP address.
- Fonts come from Google Fonts, and the SQL engine (sql.js, for the game and the handbook's exercises page) from cdnjs; both see your IP address when your browser fetches them.
- On every visit: Google's AdSense and consent scripts from pagead2.googlesyndication.com and fundingchoicesmessages.google.com, and the ads themselves from Google's ad servers, including googleads.g.doubleclick.net and tpc.googlesyndication.com; these see your IP address, and with your consent (by default outside Europe) set advertising cookies.
- Outside Europe's time zones on every visit, in them only after your Yes: the Google Analytics script from googletagmanager.com, and its measurements sent to google-analytics.com (none once you refuse).
- Only when you send feedback: the form's message to script.google.com (see Feedback above), which sees your IP address.
Questions, or removing your rows
Write to contact@alephb.uk: to ask what is stored about your pseudo, or to have your leaderboard rows removed.