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.

Evaluation Card

Opponent regime coverage

Sample
Weighted live-field gate spanning passive, balanced/selective, phase-shifting, classifier-trap, and hyper-aggressive proxies
Evaluator
Per-opponent reward-per-hand blended by fixed manifest weights
Result
A single weighted score ranks each candidate across the whole proxy field, so a lucky slice against one style stays visible rather than hidden.
Limitation
Proxy opponents approximate the field; a public tournament benchmark stays pending.

Variance control

Sample
Duplicate-deck reconciliation, seed 20260321
Evaluator
Matched-deck reward-per-hand delta versus the frozen anchor
Result
Baseline and challenger replay identical decks, so the comparison isolates policy skill from deal luck.
Limitation
Matched decks shrink variance yet still cover a bounded sample.

Promotion discipline

Sample
Every candidate before it reaches production
Evaluator
Duplicate-deck gate plus weighted live-field gate
Result
A challenger earns promotion only after it clears both gates, passes the engine smoke test, and holds the time budget.
Limitation
Short screens can mislead, so the harness prefers longer confirmation runs.
Evaluation axes with sample size, evaluator, result, and limitation.
AxisSampleEvaluatorResultLimitation
Opponent regime coverageWeighted live-field gate spanning passive, balanced/selective, phase-shifting, classifier-trap, and hyper-aggressive proxiesPer-opponent reward-per-hand blended by fixed manifest weightsA 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 controlDuplicate-deck reconciliation, seed 20260321Matched-deck reward-per-hand delta versus the frozen anchorBaseline 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 disciplineEvery candidate before it reaches productionDuplicate-deck gate plus weighted live-field gateA 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

Methods

  • Opponent modeling
  • Bandit-style strategy routing
  • Bucket-EV action scoring
  • Uncertainty-gated search
  • Duplicate-deck backtesting
  • Manifest-driven study harness