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
- fastapi
- python