Pablo Zavala · AI Safety Evaluation · Research Engineering
Tournament Poker Bot with Adaptive Opponent Modeling
A tournament poker bot built for the CMU Data Science Club competition, aimed at decision-making under uncertainty against varied and adversarial opponents. The bot reads opponent tendencies from live betting signals, routes among specialist strategies through a bandit-style selector, and spends heavier turn-street search only on high-uncertainty spots. A manifest-driven backtest harness with duplicate-deck reconciliation and frozen release snapshots records every promotion decision against fixed opponents and score weights.
Adaptive poker bot with a documented study workflow: posterior opponent routing, packaged bucket-EV scoring, uncertainty-gated turn search, and manifest-driven duplicate-deck backtests with frozen release snapshots.
Public submission repository
Evidence rests on the committed bot and the documented method; the duplicate-deck study scripts that regenerate the comparisons stay outside the public tree, a public headline benchmark against the live tournament field remains pending, and the opponent models stay heuristic and statistical.
Role: Pablo: team bot strategy plus the reproducible experiment workflow, from opponent model to promotion gate.
Per-opponent reward-per-hand blended by fixed manifest weights
A single weighted score ranks each candidate across the whole proxy field, so a lucky slice against one style stays visible rather than hidden.
Proxy opponents approximate the field; a public tournament benchmark stays pending.
Variance control
Duplicate-deck reconciliation, seed 20260321
Matched-deck reward-per-hand delta versus the frozen anchor
Baseline and challenger replay identical decks, so the comparison isolates policy skill from deal luck.
Matched decks shrink variance yet still cover a bounded sample.
Promotion discipline
Every candidate before it reaches production
Duplicate-deck gate plus weighted live-field gate
A challenger earns promotion only after it clears both gates, passes the engine smoke test, and holds the time budget.
Short screens can mislead, so the harness prefers longer confirmation runs.
How to Inspect This Work
Method over score
The bot earns its place through a documented decision stack, meaning signal-weighted opponent reads, bandit-style mode routing, and uncertainty-gated search, rather than a single tuned threshold.
Documented harness
Every promotion runs through a manifest that fixes opponents, hand counts, and score weights, then writes a weighted comparison; the committed strategy and workflow notes document how that gate works, though the study scripts themselves stay outside the public tree.
Reader check
Read the harness as internal self-play against heuristic proxy opponents; treat the reward-per-hand figures in the lab log as screening signal, and await a public tournament benchmark before reading them as field strength.
Case Study
Problem
Tournament poker punishes a static strategy: opponents range from passive stations to hyper-aggressive maniacs, and some shift style mid-match to bait a fixed counter.
Setup
Pablo built a layered bot on the club engine plus a study workflow that stages challengers in a separate lane, so production code stays stable while experiments run.
Method
The opponent model weights recent betting signals by street, pot size, and continue cost, flags instability and cheap-signal risk, and feeds a bandit-style selector that routes among solid, pressure, trap, showdown, robust, counter, equity, and predator modes. A hybrid challenger adds posterior regime routing, packaged bucket-EV scoring across five action buckets, and a higher-compute extension of the uncertainty-gated turn search the production bot already runs. Promotion runs through manifest-driven studies with duplicate-deck reconciliation.
Result
The frozen anchor held as the production default because each challenger, including the richer hybrid stack, failed to beat it on the longer weighted gate; the lab log records that verdict alongside the artifact paths.
Limitation
Evidence stays internal self-play against heuristic proxies over short-to-medium samples; a public tournament headline number remains pending.
Evidence
The committed strategy write-up, workflow doc, and running lab log document the routing stack, the promotion gates, and each accept-or-reject decision; the duplicate-deck study scripts that regenerate the comparisons stay outside the public tree.
Key Outcomes
Signal-weighted opponent model that separates credible pressure from cheap early noise and flags style shifts
Bandit-style router across eight specialist modes with a UCB-style exploration term
Hybrid challenger with posterior regime routing, five-bucket EV scoring, and uncertainty-gated turn search
Manifest-driven backtest harness with duplicate-deck reconciliation and frozen release snapshots for controlled comparison