Learn SQL from your first SELECT to production data. Inside an anime visual novel.
Three instructors teach, grade, and (if you let them) fall for you while you solve real warehouse queries, from your first SELECT to the messy production data tutorials skip. Runs in your browser. No install, no account.
Free companion reading: field notes & books.

How it works: write SQL, get reviewed
No videos, no multiple choice. You type a real query, a real database runs it right in your browser, and your instructor tells you exactly what went wrong. Like this:

SELECT id, user_id, total FROM orders WHERE status = 'SUCCESS';
The data lies. We teach you to read it anyway.
The idiosyncrasies real warehouses actually have, that no clean tutorial ever shows you.
Prices stored as strings
"1.0E-8", "0.000000", "", and one row that just says "N/A". You learn TRY_CAST and to drop the junk before it drops your query.
A boolean that lies
Four listing flags that disagree, and a status enum that is backwards on purpose. You learn to verify against the data, not the schema.
Dirty joins
UUID here, symbol there, chain-prefixed address over there. You learn the join-key landmines before they cost you a report.
14 modules, 224 problems
Foundations to window functions to growth analytics to an interview-style gauntlet. Graded client-side against real DuckDB.
The faculty
Meet your instructors
They teach the rules, the rigor, and the part after the lesson ends.
Tsumugi
Pink twin-tails, zero patience, secretly rewrites your feedback so it stings less.
Aimi
The warm one. Stays after the lesson ends. Never seems to run out of patience.
Nora
Runs the Growth Desk. Measures you in metrics. Approves of your grain discipline.
A whole course. 14 modules, 224 problems.
From your first SELECT to the messy production data tutorials skip. Every answer executes against a real database in your browser and is graded against hidden test data. Nothing is multiple choice.
- SELECT & FROMthe basics, quickly
- WHERE · ORDER BY · LIMITfilter and shape the rows
- JOINswhere most people get stuck
- GROUP BY · HAVING · aggregatescounting, done right
- Subqueries & CTEsqueries inside queries
- Window functionsthe interview favorite
- Query tuningread the plan, kill the scan
- Production-data war storiesstring prices, backwards enums, dirty joins
Get a query wrong and your instructor tells you exactly why. Then you fix it.
Field notes & books
Free companion reading, on the site. No download, no email, no account.
JOINs Field Notes
The visual companion to the module everyone gets stuck on: row matches, missing keys, and fanout before your totals betray you.
Read the field notes →
Off the Clock · Volume One
Seven collectible plates annotated by Tsumugi. Every margin note is a query that was actually run, with the two numbers it returned.
Read volume one →Patch notes and what shipped when live in the itch devlog.
The academy is open.
Free, in your browser. No install, no account. She's waiting, and she will absolutely grade you.


