ChessRank.org

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

Open Opponent Prep, type in a username, and soon 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 history

The moment you search a name, we pull that player's recent games and run them 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.

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.

Where the strength comes from: Stockfish and a model on our server

The books explain which moves the Ghost Bot knows. They don't explain how strong it should be, or how it should go wrong. That part starts on your own device: Stockfish runs right in your browser over a few of their recent games and scores every legal move in every position where they had a choice. The results then go to our server, where our model learns from them: how often this player finds the best move, when they slip, and how big their mistakes get.

That model is a neural network, a mathematical model similar to the LLMs behind Claude and ChatGPT. A language model chooses the next word. The Ghost Bot chooses the next move, the way your opponent would.

So why is it so quick, while Report and Blunder Puzzle make you wait?

Most of the report is counting, not calculating. The repertoire, the two books, the style fingerprint and the weak spots are arithmetic over games that already happened, and a browser gets through that in moments. Stockfish only has to score the games you asked for, and if someone has already scouted the same games, the result comes back from a verified cache in seconds.

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 learns one player's habits from a few games. Report and Blunder Puzzle have to think through every move of the game in front of you.

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.