ChessGrader / Privacy Policy
Privacy Policy
ChessGrader has no accounts or advertising. Your games are analysed on your own device and your moves are never uploaded. Bot Forge sends a prompt to an AI service only when you ask it to compile a bot.
The short version
- We do not ask you to sign up, and there is nothing to sign into.
- Your games are analysed on your own device. The PGN, the moves, and the analysis itself are never uploaded to us.
- When a review finishes, one summary line about it is added to our public feed: both players’ usernames and ratings, the result, time control, opening, your accuracy, and the time. Nothing else. Section 4 covers this in full, including how to switch it off and how to have an entry removed.
- If you use the beta feedback card, we privately store the message, category, screen it came from, and any contact detail you choose to add. Section 5 covers that inbox.
- If you request early access to the coach beta, we store the email address you submit and when you joined the list. Section 5 explains how it is used.
- Bot Forge uses the configured AI provider (Anthropic or OpenAI) to turn the prompt you submit into a bounded chess policy. One anonymous first-party cookie lets a creator rename their bot; one-way network pseudonyms enforce compiler limits and one current vote/play contribution per network.
- Everything else ChessGrader remembers — your saved usernames, your settings, your coaching progress, your cached reports — is stored in your own browser and stays there.
- When you import games, your browser talks directly to Chess.com or Lichess. Those requests go to them, not through us.
1. Contact
For any privacy question or request, email contact@chessgrader.com.
2. How ChessGrader is built (and why that matters here)
Every page of ChessGrader is prerendered as a static file. The pages, and a WebAssembly build of the Stockfish chess engine, are downloaded to your browser and the entire review runs locally from there. Your games are not proxied through us, your analysis is computed on your own processor, and we do not build a server-side history of your review activity.
There are four small endpoint groups on our side: one backs the public feed described in Section 4, and one accepts feedback you choose to send as described in Section 5. The third accepts coach beta access requests described in Section 5. The fourth compiles Bot Forge prompts through our configured AI provider. Anyfish creations join the community by default; checking “Keep my bot private” prevents that publication. Our database stores finished-review summary lines, private feedback notes, coach waitlist emails, community bot submissions, votes, and short-lived rate-limit counters. It does not store games, moves, analysis, accounts, or private bot compilations. Everything else stays on your device.
3. What is stored on your device
ChessGrader uses your browser’s localStorage, sessionStorage, and IndexedDB. These are not cookies: they are never attached to network requests automatically and are not readable by any other site. The anonymous per-bot edit credential described below is sent only when you rename that bot.
Depending on which features you use, that can include:
- the Chess.com or Lichess usernames you have entered, and which one is currently selected (
clarity.username,clarity.accounts); - your review settings — engine profile, board theme, piece style (
chessgrader.review-preferences.v1); - if you use the coaching features: a locally generated profile of your play, the goal and session length you chose, your progress through drills, and a rolling performance baseline (
clarity.coach.profile.v1,clarity.coach.progress.v1,clarity.coach.baseline.v1); - a cache of your completed reviews, held in an IndexedDB database named
clarity. Each cached entry contains the game’s full PGN and header information — which includes both players’ usernames, ratings, and result — plus the computed analysis. The cache keeps roughly your 200 most recent games and discards the oldest beyond that; - short-lived details of the game you are currently reviewing, held only for the browser tab session (
clarity.game.*). - Bot Forge bots you keep private, the votes shown on this device, and anonymous edit credentials for public bots you created in this browser (
chessgrader.my-bots.v1,chessgrader.bot-votes.v1, and onechessgrader.bot-edit-token.v1.<bot-id>key per created public bot). A private bot link contains its name, prompt, display labels, and generated policy after the#in the URL. Browsers do not send that fragment when somebody opens the link. The prompt was already processed by the AI compiler when the bot was created, but the private bot is not added to our community database. Without that checkbox, the bot is public by default as explained below. Clearing this site’s browser data removes the local private cartridges and per-bot edit credentials; after that, a public bot can be renamed only while its creator cookie remains valid.
Because a review necessarily covers a game with two players in it, the cache on your device will contain your opponents’ public usernames and ratings. That information came from the platform’s public record of the game and is not shared onward by us.
One more thing worth knowing: the username you are reviewing is placed in the page’s URL (after the #) so that a review is linkable and survives a refresh. That means it can appear in your browser history, and in anything you paste the link into. It is not sent to our server — browsers do not transmit the part of a URL after the # — but treat a shared link as revealing which username you were looking at.
How to delete all of it: clear site data for chessgrader.com in your browser settings, or use your browser’s “clear browsing data” option. That removes everything in this section, immediately and permanently. Using a private/incognito window means nothing in this section is retained after you close it. The one thing clearing your browser does not reach is a feed entry already published from this device — Section 4 explains how those are removed.
4. The public recent-activity rail
ChessGrader shows a rail of recently analysed games and newly published Anyfish bots so the site reflects what people are actually doing. When a review finishes on your device, one review row is added to our database and shown publicly to everyone. A public Anyfish row links to the already-public community bot and shows its name, starting Elo, play count, and publication time.
What that row contains, in full: the game’s ID from Chess.com or Lichess, both players’ usernames, both players’ ratings, the result, the time control, the opening name, the accuracy score of the side that was reviewed, and the time the review finished.
What it does not contain: the PGN, the moves, the engine evaluations, the commentary, or anything else from the report. Those are computed on your device and stay there. The row also carries no identifier for you — no account, no cookie, no device ID, no IP address — so entries cannot be linked to each other or back to a person by us. A username in a row is a player in the game, not a statement that they are a ChessGrader user.
Turning it off: open review settings and switch off “Share finished reviews to the public feed”. Nothing is published from that point on. The rail keeps working and still shows your own reviews from your device.
Your opponent: a chess game has two people in it, so a row naturally names your opponent as well as you. That information is already part of the platform’s public record of the game — Chess.com and Lichess publish it on the game’s own page — and we republish only what is already public there. We do not add anything to it, and we do not build a profile of any player from it.
How long it is kept: feed entries are deleted automatically 30 days after the review. There is no long-term archive.
Removal on request: if you would like an entry taken down sooner — whether it is your game or one you appear in as the opponent — email contact@chessgrader.com with the usernames and roughly when the game was played, and we will delete it. You do not need an account, and you do not need to explain why.
Where it is stored: in a managed Postgres database provided through Vercel, our hosting provider, on cloud infrastructure that may be located in the United States, Europe, or elsewhere. It is processed only to store and serve the feed, and for no other purpose.
5. Feedback you choose to send
The Feedback control lets you send us product feedback. Nothing is sent merely because the card is visible or opened; a request is made only when you press “Send feedback”.
What we store: the feedback category you selected, the message you wrote, the part of ChessGrader you sent it from (for example, the landing screen), the time it was received, and an email address or handle only if you voluntarily put one in the optional reply field. The feedback table does not contain your games, chess username, moves, analysis, account, cookie, device ID, or IP address.
How we use it: to decide what to fix or improve, understand whether a feature is clear, and reply if you asked us to. Feedback is private to the site operator; it is not displayed publicly, used for advertising, sold, or used to build a profile of you.
How long it is kept: feedback older than 12 months is removed whenever the inbox is next written to or opened, and older notes can be removed earlier if the inbox reaches its 10,000-note storage ceiling. You can ask us to delete a note sooner by emailing contact@chessgrader.com with enough detail to identify it. If you supplied no contact detail, we may not be able to distinguish your note from somebody else’s.
Where it is stored: in the same managed Postgres service described in Section 4. Access to the feedback inbox is password-protected and is not available through the public site.
Coach beta waitlist
The coach coming-soon page lets you request early beta access. We store only the email address you submit and the timestamps for when it was first submitted and most recently confirmed. Re-entering the same address updates the existing request rather than creating another record.
We use that address only for coach launch updates and early-access invitations. We do not add it to a general marketing list, sell it, connect it to your chess activity, or ask for your Chess.com or Lichess password. The list is stored in the same managed Postgres service as the private feedback inbox and is visible only through the password-protected admin area.
We keep the address while the coach beta is being launched so we can deliver the access you requested. You can leave the list or ask us to delete it at any time by emailing contact@chessgrader.com from that address.
6. What leaves your browser
Requests to Chess.com and Lichess
When you enter a username to import games, your browser makes requests directly to Chess.com’s public data API (api.chess.com) or to Lichess (lichess.org). Those platforms will see your IP address, your browser’s user agent, and the username you requested, exactly as if you had visited their site. What they do with that is covered by their privacy policies, not ours. We do not proxy, log, or see these requests. Pasting a PGN instead makes no external request at all.
Requests to our host
Loading chessgrader.com downloads files (HTML, scripts, images, the engine) from our static hosting and content-delivery provider, currently Vercel. Like any web host, that provider processes technical connection data — IP address, timestamp, requested file, user agent — to deliver the files and protect against abuse. Apart from the keyed Bot Forge rate-limit token described below, this connection data is handled by the hosting provider rather than copied into our application database. Our host operates globally and may store such logs in the United States, Europe, or elsewhere.
Requests to our feed endpoint
Reading the feed rail, and publishing to it, are requests from your browser to a single endpoint on chessgrader.com. As with any web request, our host processes the connection’s IP address and user agent in order to answer it. That connection data is not stored in the feed table, is not joined to feed rows, and is not something we query. If you switch the share setting off, your browser still reads the rail but never writes to it.
Requests to our feedback endpoint
Pressing “Send feedback” sends the fields described in Section 5 to an endpoint on chessgrader.com. As with the feed and every other web request, our host processes technical connection data to deliver and secure the request. We do not copy that connection data into the feedback table.
Requests to our coach waitlist endpoint
Pressing “Request early access” sends the email address you entered to an endpoint on chessgrader.com. Nothing is sent merely because you visit or type into the page. Our host processes the connection data needed to deliver and secure the request, but we do not copy an IP address, user agent, cookie, or browser identifier into the waitlist table.
Requests to the Bot Forge AI compiler
Pressing “Build bot” sends your prompt to our endpoint. We forward the prompt to the configured model provider, Anthropic or OpenAI, which generates a declarative chess policy, a bot name, and presentation text. Do not include personal, confidential, or sensitive information in a bot prompt. We return a short-lived, signed draft to your browser for review; building the draft uses one of the daily creation slots. Pressing “Confirm Bot” then publishes that exact server-validated draft unless you selected “Private”. A private confirmation remains in your browser and link only and is not added to our community database. Stockfish analysis, policy execution, and the resulting game remain in your browser.
A validated compilation may remain in the server process memory for up to one hour, keyed by a cryptographic hash of the prompt and compiler version, so an identical retry does not create another paid model request. The cache key does not contain the readable prompt, the cache is not a durable database, and a process restart clears it.
To control API cost and abuse, the compiler applies per-minute limits and a limit of 10 successful bot compilations per day. Where configured, the server uses a secret key to turn the requesting network address into a one-way HMAC token; the raw address is not copied into our database. The token appears only in short rate-limit buckets. A global minute limit applies as well. These counters are not joined to prompts, generated policies, community bots, or any other activity.
Requests to the Bot Forge community endpoint
Unless you check “Private” before building and confirming, the validated bot name, prompt, and behavior are stored after confirmation so everyone can browse and play it. We transform the requesting network address into separate one-way pseudonymous tokens for votes and play-count deduplication; the raw address is not stored. A network identity can contribute one play to a bot’s popularity count and one current vote, which it can later change. These pseudonyms remain with the community activity they protect. Do not put personal information in a bot name or prompt you publish. Community bots and their aggregate scores are public and are kept until removed; you can request removal at the contact address above.
7. Cookies
A successful bot compilation or publication sets a first-party, HTTP-only cookie named cg_bot_creator with a random ID for up to 30 days; it lets that browser rename its own published bots. Each newly published bot also gets an independent random edit credential stored only in that browser, so simultaneous first-time creations remain editable. The server stores only its one-way hash. These credentials are not connected to a name, chess account, games, feedback, or waitlist email. Browsing, sharing, playing, and voting do not set an additional identity cookie.
8. Personal information and your rights
The personal information we may hold is limited to feed entries described in Section 4, optional contact details and messages submitted under Section 5, coach beta waitlist emails submitted under Section 5, community bot submissions and anonymous votes, and correspondence you send us. We do not sell or share that data with anyone for advertising.
A chess username can identify a person, so we treat feed entries as personal information even though they carry no account or contact details. Where a legal basis is required for publishing them, ours is legitimate interest: showing a small, public, 30-day rail of already-public game records so visitors can see the site is in use. We have weighed that against the limited privacy impact of republishing public game data, and we offer both an off switch and unconditional removal on request to keep the balance fair.
To access, correct, export, or delete anything: for data on your device, see Section 3 — it is under your control and we cannot reach it. For a feed entry, see the removal instructions in Section 4. For submitted feedback or anything else, write to us at contact@chessgrader.com and we will respond within 30 days. You may also object to the publishing described above, which we action by deleting the entries — the same thing the removal request does.
Depending on where you live, privacy law may give you rights over personal information we hold. In practice, that means public feed summaries, feedback, waitlist entries, community bots, or correspondence you send us. Where a legal basis is required, we rely on operating and securing the site, improving the product, and replying to you.
If you are unhappy with how we have handled a privacy matter, you can contact the privacy regulator or supervisory authority where you live.
9. Children
ChessGrader is open to anyone and does not ask anyone their age, because it has no accounts. Parents of younger players should be aware of two things: importing games sends a username to Chess.com or Lichess, as described in Section 6; and unless the setting is switched off, finishing a review publishes that username to a public rail, as described in Section 4. Either can be avoided — paste a PGN instead of importing, and turn off feed sharing. We will delete a child’s feed entry on request from them or a parent, without question.
10. Security
The site is served over HTTPS. Your games, moves, and analysis are never uploaded, so there is no central store of your chess data to be breached. The database holds the summary lines in Section 4 and feedback described in Section 5, including the coach waitlist. Public visitors can add validated submissions but cannot read private feedback or waitlist entries, modify them, or delete anyone else’s data; the admin inbox is protected separately. Data kept in your browser is only as secure as the device and browser profile you use.
11. Changes
If ChessGrader ever adds a feature that changes any of this — accounts, server-side storage, or advertising — we will update this page and change the effective date before that feature ships. Related reading: our Terms of Use and licenses page.
