chessrank.org
Blog

Inside Opponent Prep: How We Build a Ghost of Your Next Opponent

Open Opponent Prep, type in a username, and a few seconds later you are staring across the board at something unsettling: a bot that opens the way they open, drifts into the same shaky structures they always drift into, and seems to know exactly when they tend to blunder. We call it the Ghost Bot, and under the hood it is a genuinely layered piece of engineering — several independent systems stacked on top of each other, each one built to answer a different question about a stranger you have never played.

Four systems, one Ghost Bot
Exact-position book
every position they have actually reached, and what they played there
Habit book
recognises their setups even in positions they've never reached before
Style fingerprint
a statistical read on how they choose moves, measured against players their own strength
Safety net
a live engine check that stops the Ghost Bot ever repeating a habit into a hung piece

First, it reads their whole history

The moment you search a name, we pull every available game that player has on record and run it through a single pass of analysis — win rate, which openings they actually reach with each colour, roughly how strong they play at different points in a game, and, crucially, exactly where they have lost the most points in the past. Not guessed at. Counted, from their own moves, across however many hundreds of games they have played.

The exact-position book: their moves, indexed

Out of that history we build a lookup table: for every position the player has ever actually reached, what did they play, and how often? When the Ghost Bot is following in their footsteps, it isn't improvising — it is drawing straight from that table, weighted by how often they really chose each option. Play into a position they have visited fifty times, and the bot's reply comes from the exact same fifty data points. It's less a simulation and more a replay, narrated by the numbers.

The trick that makes it feel eerily accurate: the habit book

Here is the part that took real thought. An exact-position table only helps once you're back in a position they've been in before — and the moment you play something even slightly unusual, that table goes blank. Real opponents don't have infinite memories, but they do have habits: the player who always fianchettoes their bishop, always castles by move eight, always builds the same pawn triangle regardless of what you're doing on the other side of the board.

So we built a second index that deliberately throws away half the information: it remembers a position by their own pieces only, blurring out whatever you happen to be doing. That blurrier memory is what lets the Ghost Bot recognise "this looks like their London System" in a position that, technically, never once occurred in their actual games. It is pattern recognition standing in for a chess brain — and every recalled habit is silently re-checked for safety before it's played, so a familiar setup can never wander into a piece hanging on move nine just because the position looks the part.

On top of both books sits the strangest layer of all: a personality, reduced to a set of dials. We build a style fingerprint by comparing the player's actual move choices against a control group of opponents at roughly their own strength. It turns "plays cautiously," "loves sharp tactics," or "gets impatient in equal positions" into numeric nudges that quietly lean the Ghost Bot's decisions the same way whenever it has to improvise beyond both books. The result doesn't just remember their opening — it leans the way they lean.

So why does this appear instantly, while Report and Blunder Puzzle make you wait?

This is the honest, slightly deflating answer: Opponent Prep is fast because none of the above asks a chess engine anything. Building the whole report — the repertoire, the two books, the style fingerprint, the weak spots — is counting, not calculating. It's arithmetic over a pile of games that already happened. A modern browser chews through that in a couple of seconds flat, no matter how many hundreds of games are in the pile.

Game Analysis and Blunder Puzzle are answering a completely different kind of question, one with no shortcut: was this specific move, in this specific game, actually good — and how good? That question didn't exist five minutes ago. Nobody has ever asked it before, because the position on your board right now is unique to the game you just played. There is no table to look it up in. The only honest way to answer it is to hand the position to a real chess engine and let it search, move by move, for the entire game — and when it's checking whether a sacrifice was truly sound, it has to ask a second question on top of the first: what happens if they take it? That's not a lookup. That's real, sequential thinking, happening live on your device, one position at a time, and there is no cache in the world that can skip it for a game nobody has ever played before.

Put simply: Opponent Prep is fast because it is remembering. Report and Blunder Puzzle take their time because they are actually thinking.

Go build your own Ghost

Opponent PrepScout anyone and play against a bot built from their own history

Know their habits before the clock even starts.