Dokicode Privacy Policy
Dokicode is a study game for LeetCode practice. It has two parts: the web game at dokicode.com and the Dokicode Chrome extension, which runs on LeetCode problem pages. This page explains what each part collects, where it goes, how long we keep it, and how to get it deleted.
Short version: the extension never reads or sends your source code. It sends the outcome of your LeetCode runs and submissions so the game can react to them. The first three hint steps send only the problem's URL name and your language. Only if you press "Read it with me" does it send the failing test case and your own AI key so the hint can be written for you.
1. The Chrome extension
Where it runs
The extension runs on leetcode.com/problems/*, and on the Dokicode game site so the game and the extension can talk to each other. It does not run on any other site.
What it reads on LeetCode
It watches the responses LeetCode sends back when you press Run Code or Submit. From those responses it keeps only the result. It does not read your code, the editor contents, or which keys you press. It notes the time of a key press to know whether you are still working, and that time stays in the page. It also reads the difficulty label LeetCode shows on the problem (Easy, Medium, or Hard).
What it sends to Dokicode after a run or submission
Each event contains exactly these fields and nothing else:
- the problem's URL name (for example
two-sum); - the kind of action: run, wrong answer, or accepted;
- the problem difficulty as LeetCode shows it (Easy, Medium, or Hard), or empty when it cannot be read;
- LeetCode's numeric status code (for example 10 for Accepted);
- which attempt this is on the problem;
- whether you used a hint, and whether you marked the solution as borrowed;
- the time of the event;
- a duplicate-check key built from LeetCode's submission or run ID.
Events go to dokicode.com/v1/events/batch with your Dokicode sign-in token. If you are offline, they wait in the extension's local storage and are sent later. You can pause tracking from the companion panel; while paused, nothing is sent.
Hints
Hints come in up to four steps (Direction, Key idea, Outline when available, and Edge cases), and you choose when to unlock the next one. You need to be signed in to Dokicode for the server-backed steps.
- Steps 1, 2, and 3 (the direction, the key idea and an edge case to try by hand, and a prose solution outline with target time and space complexity) are written ahead of time and need no AI key. The extension sends a request to
dokicode.com/v1/coach/hintwith your Dokicode sign-in token, containing only the problem's URL name, the step, and your language setting. It does not send a failing test case or any AI key. - Step 4 (Edge cases) shows the edge case and the latest failing test case on your screen. It is built in the page and sends nothing unless you press "Read it with me".
When a Run Code or a submission fails, the extension keeps the latest failing test case in the page's memory. That is the test input, your program's output, and the expected output, or LeetCode's first-line error message. For a compile error it keeps only the words "Compile Error", because compiler messages can quote your code. Each field is cut to 600 characters. Nothing is sent at this point, and it is forgotten when you leave the page or move to another problem.
The test case leaves your browser only when you press "Read it with me" in the Edge cases tab, which uses an AI key you supply (Google Gemini, DeepSeek, OpenAI, or Anthropic). You enter the key in the game's Settings, and the game passes it to the extension. That request goes to dokicode.com/v1/coach/hint and contains:
- the problem's URL name and title;
- the heroine you are studying with and your language setting;
- how many runs have failed in a row;
- the failing test case described above;
- your AI provider name and AI key, sent as request headers.
Our server builds a short prompt from that data and sends it, with your key, to the AI provider you chose. The provider's reply comes back as the hint. Our server does not save your key, the test case, or the prompt. The AI provider handles the prompt under its own privacy policy and your account with it. Without a linked key, "Read it with me" is not offered.
Unlocking step 2 (Key idea), step 3 (Outline), or "Read it with me" marks that problem as hinted, so your next run and submission events for it say a hint was used. The mark and any saved hint tabs for that problem are cleared when the problem is accepted.
While tracking is paused, no hint request is sent.
Review reminder
To show how many of your reviews are due today, the extension asks dokicode.com/v1/review/state with your Dokicode sign-in token. It keeps only the count and the date, shows the count on the extension icon, and the heroine may mention it once a day. Nothing is asked while tracking is paused, and signing out clears the count.
Picking up the problem you are on
The extension reads only the URL names (slugs, such as two-sum) of leetcode.com problem tabs you have open. It does not read the URLs of any other site. When the game asks, the extension tells it which open problem you looked at most recently and when you first opened it, so the game can offer to continue with it. To answer that, it keeps up to 20 recently opened problems, with those two times, for 12 hours. When the extension opens dokicode.com for you (after install, from the toolbar icon, or from the setup note on a LeetCode page), the problem's slug travels in the dokicode.com URL. While tracking is paused, nothing is recorded and the game is told nothing.
What it stores in your browser
The extension uses chrome.storage.local, which stays on your computer, for:
- your Dokicode sign-in tokens, received from the game when you pair;
- the game's address and the ID of the open game tab;
- the problem you left the game to solve, with the heroine's name, outfit, and lines;
- the last verdict, until the game picks it up;
- events waiting to be sent;
- your AI provider and key;
- the URL names of problems you took a hint on, and the hint steps you unlocked so you can re-read them across reloads, until each problem is accepted (at most 100);
- today's due review count and date, and the date the heroine last mentioned it;
- the time limit of a running interview, so a page reload keeps it;
- recently opened problems: up to 20 problem slugs, each with when you first opened it and last looked at it, for 12 hours;
- whether and when you dismissed the setup note, so it does not keep coming back;
- companion panel preferences (position, chattiness, voice on/off and volume, collapsed state) and the tracking pause switch.
The AI key is kept by the extension's background worker and is not given to the scripts running on LeetCode pages. Signing out of the game clears your sign-in tokens, the AI key, the hint marks and unlocked hint steps, the review count, the interview limit, and the recently opened problems. The setup note choice belongs to this browser, not to your account, so it stays. Removing the extension deletes all of this.
Pairing with the game
When the game is open on dokicode.com, it hands the extension your Dokicode sign-in token so events count toward your account. The extension accepts this only from the Dokicode site.
2. The web game
Google sign-in
You sign in with Google. Google sends us a signed token, and from it we keep your Google account ID, your email address, and your language. We do not get your Google password, contacts, or any other Google data. We then issue our own sign-in tokens.
What our server stores for your account
- game settings: chosen heroine, time zone, daily study hour, study plan and section, difficulty filters, tracking pause;
- the LeetCode events listed above, and the problems and sections you have solved or marked;
- game progress: currencies, items, ability scores, achievements, relationship and story state, story choices;
- save slots: heroine, study plan, the study promise text you write, relationship stage and affection, the problem on your desk, and story position;
- usage records the server creates from your actions, such as a problem accepted, a story event finished, or a gift given, to find bugs and improve the game.
What the game stores in your browser
The game uses your browser's local and session storage for your settings (including any AI keys you enter), a copy of your save slots, a cache of your study route, and your sign-in tokens. When you talk with a heroine and have an AI key linked, the game sends the key with that request so our server can ask your AI provider for her reply. As with hints, the server does not save the key.
3. Who else handles data
- Cloudflare hosts the website and forwards API requests.
- Google Cloud runs our API server.
- Neon hosts our database.
- Google provides sign-in.
- The AI provider you pick receives hint and conversation prompts, only if you link a key.
We do not sell your data, show ads, or share data with anyone else, except where the law requires it.
4. How long we keep data
- Account data, events, and progress: for as long as your account exists.
- Your AI key and hint prompts: not stored on our server at all.
- Queued events in the extension: deleted once they are sent.
- Data in your browser: until you clear it, sign out, or remove the extension.
Our hosting providers keep standard request logs (time, address, path) for a short period for security and debugging.
5. Deleting your data
Email [email protected] from the address you sign in with and ask us to delete your account. We will delete your account and everything linked to it within 30 days and confirm by email. To remove local data, uninstall the extension and clear site data for dokicode.com in your browser.
6. Children
Dokicode is not meant for children under 13, and we do not knowingly collect their data.
7. Changes
If we change what we collect, we will update this page and its date before the change ships.
8. Contact
Questions: [email protected]