Inspiration The TAMU Datathon poker bot challenge. Heads-up short-deck 5-card Pot-Limit Omaha is an unusual variant with no off-the-shelf solvers. We wanted to see how close to game-theory-optimal play we could get in one weekend on a single home PC.

What it does 3XKO-pokebowl is a bot that plays heads-up short-deck PLO5 over HTTP. It has three layers:

  • Main strategy: a strategy trained offline with game theory (a CFR "blueprint").
  • Passive opponents: against players who rarely raise, it switches to a hand-tuned heuristic strategy.
  • Exploits: an opponent model on top looks for patterns it can take advantage of. If anything goes wrong, it falls back to the heuristic and then to a guaranteed-legal action, so it never crashes, forfeits or runs out of time.

How we built it

  • Written in Python with numpy and FastAPI.
  • Grouped similar hands into 400 "buckets" per betting round. Mapped every possible betting sequence: 15,952 decision points and 6.4M distinct situations.
  • Trained the blueprint with Monte Carlo CFR for 16.2 billion iterations on an 8-core Ryzen CPU, with no GPU.
  • Built a simulator, a pool of practice opponents and a Docker check that matches the tournament's limits (1 CPU, 8-second time bank).
  • Used Claude Code subagents to run separate parts of the project at the same time, each on its own git branch.

Challenges we ran into

  • Game size: the game is far too large to solve exactly, so we had to simplify it without losing too much strength.
  • Hardware: all training ran on a CPU, under a weekend deadline.
  • Speed: each bot gets only 1 shared CPU in the tournament, so we calibrated timing at startup to stay inside the time bank.
  • Luck: poker results swing a lot by chance. Telling real improvement from noise took many seeds and opponents held out from tuning.

Accomplishments that we're proud of

  • We managed to finish

What we learned The game-theory strategy is much stronger than hand-tuned rules against good opponents. Simple heuristics still win more against passive ones, so a hybrid works best. We also learned to measure carefully, because poker variance makes it easy to fool yourself.

What's next for 3XKO-pokebowl

  • Finer hand groupings and longer training runs
  • Solving smaller parts of the game live during play
  • Better opponent modeling
  • A reliable way to measure how exploitable the bot is

Built With

Share this project:

Updates

Submission history