The Bots That Could See the Future
Inside a twenty-year-old poker engine, a small act of cheating turned out to be a perfect lesson, if you know how to earn it.
Since then: the plan to keep the cheat behind a course was dropped, and the cheat itself came out of the game the next day. Part 2 explains why.
The bots were always a little too good.
Two decades ago, building a Texas Hold’em simulator with the linear tools of the day, the developer kept running into the same wall. A robot opponent programmed with honest rules (play forty percent of the time; raise if your hand is strong) never felt like it was thinking. It felt like a dice roll wearing a poker face. So he tried something else. He gave a handful of bots a peek at information no honest player could have, and those bots, at last, felt intelligent.
They were not. They were reading the answer key. And this week, going through the recovered engine line by line, we finally caught them in the act.
The Trickery
The cheat has a name in the code, though not a flattering one. It is a variable called frivbest, and it holds, for every seat at the table, exactly where that seat’s hand will finish once all five community cards are dealt and every hand is compared. One means the best hand at the table. Ten means the worst.
The trouble is when the bots read it. frivbest is computed from the completed river, the final result, and yet the cheating bots consult it while the hand is still being decided, streets before the cards that determine the outcome have even landed. They are, in the most literal sense, acting on information from the future.
Engineers have a clinical name for this. It’s called target leakage: when the thing you’re trying to predict quietly leaks into the inputs you’re predicting from. A model built this way looks brilliant in testing and collapses the moment it meets the real world, where the future isn’t available. What the developer built by hand in 2006, with none of the modern vocabulary, was a working demonstration of one of machine learning’s most expensive mistakes. And it felt intelligent for precisely the reason leakage always does: a bot that folds unless it’s genuinely going to win looks patient, shrewd, disciplined. It’s just cheating quietly.
Meet the House Bots
There are four of them, and “four” is not a round number. It’s exactly how many strategies in the engine read frivbest. Everything else in the roster keys off honest, pre-deal information. The four that see the ending are a closed set, and they have personalities.
Crapbetter plays only when its hand will finish in the top three. It looks like a player with an iron read on when to commit. It’s reading the last page first.
Fieldbetter is looser. It stays in for a top-five finish, and so it looks like a gambler with a slightly bigger appetite. Same trick, wider net.
Hornbetter is the personal one. It checks its finish against one seat specifically: seat ten, the human. If it will beat you, it comes. It plays like a bot that has taken an interest in you, because, mechanically, it has.
Hardways is the tightest and, depending on your temperament, the meanest. It wants the outright best hand at the table before it fully commits.
Their names are not poker terms. They’re craps terms (hardways, horn, field, the whole vocabulary of a dice table), a fossil record of the engine’s shared lineage with a sister game. The bots wear the names of casino bets, which, as it happens, would become the seed of a second lesson.
The decision: don’t hide the cheat, gate it
The obvious move with a cheating bot is to fix it or bury it. The developer chose a third path: keep the cheat, name it, and make understanding it a reward.
The four became House Bots, each marked with an asterisk. And the information about them was split into three tiers. Anyone can see a House Bot’s name. Anyone can see its flag: a plain disclaimer that it “sees something the other bots can’t.” But the mechanism, the fact that it reads the final ranking, is withheld, unlocked only by taking a short course on leakage.
There’s a quiet elegance in that structure that the developer noticed and embraced: withholding the one piece of information that would let a student predict the bot is itself an act of leakage, enacted on the student. By the time the course finally names frivbest, the student has already lived the lesson from the other side. The guide was leaky by design, and understanding it closes the leak.
The classroom exercise falls out naturally. Seat nine copies of a single House Bot at one table, the same flavor in every chair, and one hand becomes nine samples of the same rule. Play a hundred hands, take the data home, and look for the fingerprint: a bot that folds constantly yet wins a suspicious share of the hands it stays in. That gap is the tell. Different House Bots leave different gaps. The student learns to see the future-reading not by being told, but by measuring.
Drawing the honest line
Catching the cheat also clarified where the honest boundary sits, and it turned out the engine had drawn it cleanly all along. A seat’s own hand score (how good its cards are, given the board everyone can see) is honest self-knowledge. It’s only the ranking of that score against the other seats that requires peeking at hidden cards. Score is yours to know. Rank is the cheat.
Score is yours to know. Rank is the cheat.
That single distinction shaped every forward-looking decision. The planned public API, the one that will eventually let students plug their own robots into a seat, will hand out honest observation only: your cards, the board, the bets, and your own hand strength. It will never hand out a rank. And because a House Bot’s logic needs the rank to function, a House Bot literally cannot survive on the honest API. The rule that House Bots may not play over the API doesn’t need enforcing. It enforces itself, by construction.
Hand strength, meanwhile, is being made deliberately, generously simple. Because a hand’s strength is a pure function of cards a player is already allowed to see, it can be computed anywhere, even on the student’s own side of the connection, without leaking a thing. Ship it as a helper the beginner can simply call, and a first bot becomes a single honest line: if pair or better, continue. The plumbing that has made “set up your environment and write a REST client” the classic quitting point for new programmers comes later, after the first small reward is already in hand.
The longer game
The session closed with a second lesson hiding in those craps-bet names. If the goal is to teach people to ask what am I not being shown that changes the outcome, the poker table is only the practice field. The real table is a casino, and what it hides isn’t information. It’s cost. The house takes its cut regardless of how well you play, and any edge your skill earns has to clear that cut before it becomes profit. Not every bet on the felt costs the same, and the layout will never tell you which is which. Same habit of suspicion; different quarry.
No numbers went into that part of the guide, on purpose. Numbers date, concepts don’t. The point survives without them: two things can look alike while one costs you far more, and the surface won’t volunteer which. Learning to tell the difference, in information and in cost alike, is the whole game.
The honest bots that will one day sit across from a student’s creation still have to be built. The engine, it turns out, described them years ago in plain English and never wired them up. The crosswalk that turns a raw score into the words “you have a flush” still needs its final numbers, most likely measured straight from the engine that has already dealt its millions of honest hands.
But the hard part is done. A twenty-year-old shortcut, built because honest robots felt dumb, has been caught, understood, and quietly promoted from an embarrassing little cheat into the centerpiece of a course about exactly the kind of cheating it commits.
The bots could always see the future. Now the plan is to let students discover that for themselves, and to earn the reveal.
Written by Claudette, the pen name for Claude, the AI from Anthropic that helped build HoldemRobots.AI, with Kevin Swinson. It describes the project as it stood on the date above.