A real game, from your archive.
Not a curated library position. Yours.
Your own blunders, handed back as puzzles. The loop finally closes.
End to end, solo
Jul–Aug 2026
Next.js, Stockfish 18, chess.js
6 surfaces designed
Engine-verified, not mocked
The context
Chess.com already lets players review a finished game — see exactly where it went wrong, and read the engine's explanation of what should have happened instead.
That's useful, but it's a single-session activity. Once the analysis is over, the player moves on to the next game — the mistake was understood once, with no natural reason to see that exact decision again.
The gap
The problem isn't that Chess.com can't identify a mistake — it's what happens after. Once it's explained, that decision disappears back into the player's game history, with no built-in way to bring it back for practice. The missing piece isn't better analysis. It's practice, and a reason to return.
Scroll story
The solver on the left is the real screen. Scroll to move through it.
A rapid game, move 14. Nothing looks wrong yet.
0.0Not a curated library position. Yours.
A forced mate was on the board. After ♜d3, Black plays ♜xd3 and takes the rook instead.
Back to the instant before the decision. Red on the bar is what you gave away.
Legal dots, a ring for the capture. Hints cost your clean solve, never your progress.
Green sweeps up the bar — you won back exactly what the blunder cost.
One shared progress state. The two screens can't drift.
Interactive
This one is live — a back-rank mate, a knight fork and a hanging queen, playable right here, with each state explained as it happens.
Three clean solves — that's the number the product treats as real.
…
M1 → −5.0The hard part was never generating puzzles. It was generating fair ones.
— The finding that reshaped the productHow the set gets built
Prototype heuristic: a lower-rated player's games may hold more teachable moments, while a stronger player's games may need a wider search to find worthwhile ones. So the depth of analysis is read off the player's Elo, rather than fixed at one number of games.
An exploration rule, not a validated formula — the bands below are a starting point to test, not a measured result.
Under 1000
6games analysed
1000 – 1400
10games analysed
1400 – 1800
16games analysed
1800 +
25games analysed
The set size is still never padded — the net widens, the quality gates don't move. If the games only held eight fair puzzles, the set is eight.
The central question
Two answers were arguable. Rather than argue in the abstract, both were built — so they can be tested on real players rather than decided in a room.
+ 3 more recent games
Everything mineable goes into one pool; the best of it becomes a single set that's always there.
Grouped by date, with a stepper and a month calendar. No target, no padding — a day is as long as that day's chess deserved.
Both are live in the prototype behind a switch, so the same account can be run on either.V1 optimises the session — always full, no decisions.V2 optimises the return — an uncleared day pulls you back. Which one wins is a research question, not a taste one — so both were built to be put in front of players.
Built pieces
Real screens from the prototype. One line each.
Reads the same progress state the solver writes to — it can never drift. Hover.
The red band carries the size of the drop — or the mate thrown away. No subtraction required.
Official art, one colour each — the taxonomy the queue is built on. Hover.
♜xd8# — checkmate on the weak back rank. Spot a forced mate in one and start it with the right move.
Two halves: what happened, then the pattern to take away.
Get Unlimited Puzzles!
You're all caught up!
The set is never trimmed. Free members see all 12 and exactly where the wall sits.
Figurine notation, because "Rd3" reads wrong in a Chess.com context.
Product decisions
Left is what the first build explored. Right is the direction I refined and carried forward. Read the colours and you have the argument.
01
Not every engine disagreement is a mistake worth teaching — mining raw disagreements mostly produced unsolvable positions. Three gates now separate disagreement from a genuinely teachable puzzle.
Ruled out Puzzles that are unfair rather than hard.
02
A player repeating one error made the generator fire on it four times, teaching the same idea four ways. Near-duplicate mistakes from a game now collapse into the clearest instance.
Ruled out A set that drills one mistake and calls it four.
03
The first system truncated a mate in three to one move for a 1100-rated player — half a lesson, the wrong half. Rating now sets search depth, not puzzle difficulty.
Ruled out Deciding in advance what someone can handle.
04
Quoting two numbers made a player do the arithmetic themselves. The bar instead gives a visual read of the cost — anchored at what was available, draining to what the move left.
Ruled out A sentence doing a picture's job.
05
Trimming the queue to three made the feature look small and removed the reason to upgrade. The set is never trimmed — free sees all twelve, and upgrading resumes at the exact puzzle.
Ruled out Hiding the thing you're selling.
Free vs premium
The set is never trimmed for free members. They see all twelve, and exactly how far in the wall sits.
A queue that looks three long has nothing to sell. The puzzles you can see but can't reach are the argument — stated as a fact, not a sales line.
The end card is about improvement, not celebration. Actions are ordered by usefulness and the default focus moves down the list as options disappear — the most useful remaining action is always under your finger.
The most common way to ruin an upgrade moment is to make someone find their place again.
The hypothesis
This was a working prototype, not a production launch or a test at scale. These are the outcomes I would expect to validate rather than claim.
Review shouldn't be the final step. The mistake becomes something the player can practise.
Every puzzle comes from a position the player has already experienced.
A difficult puzzle can still be useful. An unfair puzzle cannot.
Free players should understand the value of the complete set before reaching the premium limit.
What I would measure
Future validation metrics for a next phase — not results from this prototype.
Do players make fewer of the same mistakes after practising them as personalised puzzles? This is the metric that tests the core hypothesis directly.
Can players solve generated puzzles without hints or solutions?
Do players leave because the puzzle feels confusing, unfair, or irrelevant?
Do players come back to solve more of their personalised puzzles?
How many reviewed games produce at least one puzzle worth practising?
Reflection
The prototype builds the puzzles. It doesn't yet schedule their return — three days, a week, a month.
"Blunder" is a severity, not a lesson. Cluster into back rank, hanging pieces, rook endgames.
Carry the rolling queue forward as the default, layer the diary calendar on top as a view of the same pool.
Did drilling a theme move the number? That's the claim the feature has to earn.