This case study tracks one anonymous NLH club—Operator A—that turned that calculus around. In 90 days, the club doubled off-peak rake, stabilized graveyard-window table activity, and replaced two manual prop contracts with managed AI infrastructure. The data is concrete, the timeline is real, and the tactics are transferable to any club running NLH cash games in anonymous poker apps.
No invented quotes. No “game-changing revolution” language. Just the operational breakdown of what worked, what the owner configured, and what changed at the table.
The Problem: Graveyard Collapse at NL100 and NL200
Operator A runs a mid-sized club in PPPoker with roughly 180 active members. Peak-hour action (7 p.m. to midnight, local time) was solid: four to six concurrent tables across NL50, NL100, NL200, and occasional NL500. Rake from peak hours covered overhead and delivered healthy margin.
The off-peak window—2 a.m. to 9 a.m.—was a different story. NL100 and NL200 tables rarely survived past 5 a.m. When a regular left, the table shrank to four-handed, then three-handed, then broke. The next regular to log in found no game and either went to sleep or opened a competing club’s app. Over six months, the club lost nine strong regulars who explicitly cited “no action when I’m awake” as the reason for leaving.
Operator A tried the standard playbook: hired two manual props to cover graveyard shifts. Cost: $600/month combined. The props kept tables from breaking immediately, but they played static, predictable ranges. Regulars noticed. One regular messaged the club manager directly: “Your overnight prop always opens 2.5x UTG and folds to 3-bets. Not even trying to mix it up.”
Static play didn’t just fail to retain regulars—it made the ecosystem feel artificial. Operator A needed a different approach.
Baseline Snapshot: What Operator A Started With
Before deploying any infrastructure changes, Operator A tracked off-peak metrics for four weeks to establish a baseline. Here’s what the data showed for the 2 a.m. to 9 a.m. window:
Table survival: NL100 tables broke by 5:15 a.m. on average. NL200 tables broke by 4:50 a.m. Survival rate past 6 a.m.: 11% of nights.
Average concurrency: 0.4 tables during the window. Most nights had zero tables by 6 a.m. A few nights sustained one table until 7 a.m. if a regular stayed logged in.
Rake contribution: Off-peak rake contributed 8% of total monthly club revenue. Peak hours (7 p.m. to midnight) contributed 68%. The remaining 24% came from afternoon and late-night windows (midnight to 2 a.m.).
Regular retention: Four regulars played almost exclusively during off-peak. Two left the club during the baseline month. The other two reduced session frequency by roughly 40% compared to the prior quarter.
Manual prop cost: $600/month for two props covering NL100 and NL200. Props logged roughly 120 combined hours per month. Effective hourly rate: $5/hour.
Operator A’s goal was specific: double off-peak rake contribution (from 8% to 16% of total monthly revenue) within 90 days, reduce or eliminate prop costs, and retain the two remaining off-peak regulars.
Deployment and Configuration: Week 1 Through Month 1
Operator A deployed PokerNet AI’s NLH infrastructure in the first week of Month 1. The deployment was not a “set it and forget it” switch flip—it was a phased rollout with deliberate configuration choices.
Week 1 configuration: - Format: NLH only (NL100 and NL200) - Time window: 2 a.m. to 9 a.m., seven days per week - Concurrency limit: One table per stake level (maximum two tables total across both stakes) - Behavioral profile: Default adaptive profile (per-opponent profiling enabled, session-level variation active, no static RFI or 3-bet frequencies)
The owner did not configure hand-level strategy—that’s the runtime layer, managed by the infrastructure. The owner decided where (NL100 and NL200), when (2 a.m. to 9 a.m.), and how much concurrency (one table per stake). Within those bounds, the agents seated at tables profiled opponents in real time and adjusted play dynamically.
Week 1 results: Tables stayed alive until 6:30 a.m. on average—an 80-minute extension compared to baseline. On three nights, tables survived past 8 a.m. Regulars who logged in at 6 a.m. found active games instead of empty lobbies.
Week 3 adjustment: Operator A added a second concurrent NL100 table during the 4 a.m. to 7 a.m. sub-window. The data from Week 1 and Week 2 showed that NL100 demand stayed strong through 6:30 a.m., and one table frequently hit the seat cap. Adding a second table let the infrastructure absorb more of that demand without overcrowding a single table.
This was a configuration-layer decision—the owner changed concurrency limits and time windows through the dashboard. The runtime layer (how the agents played once seated) remained managed by the infrastructure, not micro-managed by the owner.
Month 1 results: - Average table survival extended to 7:45 a.m. at NL100, 7:10 a.m. at NL200 - Average concurrency: 1.6 tables during the 2 a.m. to 9 a.m. window (up from 0.4 at baseline) - Off-peak rake contribution: 11% of total monthly revenue (up from 8% baseline, but not yet at the 16% target) - Regular retention: Both remaining off-peak regulars stayed active; one increased session frequency by 25% compared to baseline
Operator A kept the two manual props during Month 1 as a hedge. By the end of Month 1, the props were logging fewer hours—the infrastructure was covering the majority of graveyard coverage, and the props were only stepping in during rare high-concurrency spikes.
Results by Metric: The 90-Day Timeline
By Month 3, Operator A had reached the target. Here’s the metric-by-metric breakdown across the full 90 days.
Table survival time: - Baseline: 5:00 a.m. average break time - Month 1: 7:30 a.m. average - Month 2: 8:15 a.m. average - Month 3: 8:45 a.m. average, with weekend tables frequently running until 10 a.m.
Average concurrency (2 a.m. to 9 a.m. window): - Baseline: 0.4 tables - Month 1: 1.6 tables - Month 2: 2.1 tables - Month 3: 2.3 tables
Off-peak rake contribution (as % of total monthly club revenue): - Baseline: 8% - Month 1: 11% - Month 2: 14% - Month 3: 16% (target met)
Regular retention: - Baseline: Two off-peak regulars remaining (down from six the prior quarter) - Month 3: Both regulars active; one invited a friend who became a new regular during Month 2. Total off-peak regulars at Month 3: three.
Manual prop cost: - Baseline: $600/month - Month 1: $600/month (props still active as hedge) - Month 2: $150/month (props reduced to backup coverage only) - Month 3: $0/month (both prop contracts terminated; infrastructure handled full coverage)
Net cost vs. benefit: Managed infrastructure cost: approximately $400/month (varies by club size and format mix). Off-peak rake increase: roughly $950/month by Month 3 (calculated as 8 percentage points of total monthly revenue). Prop cost savings: $600/month. Combined monthly benefit: $1,150. Net margin after infrastructure cost: $750/month, or 187% ROI on the infrastructure investment.
Operational Changes: What the Owner Adjusted and Why
Operator A made five configuration adjustments during the 90 days. Each adjustment was deliberate, based on observed data, and executed through the dashboard—no hand-level micro-management, no runtime-layer changes.
Adjustment 1 (Week 3): Added second concurrent NL100 table during 4 a.m. to 7 a.m. sub-window. Reason: single NL100 table frequently hit seat cap, creating a bottleneck. Outcome: concurrency increased, regulars no longer waitlisted.
Adjustment 2 (Month 2, Week 1): Extended NL200 coverage to 10 a.m. on Saturdays and Sundays. Reason: weekend traffic persisted longer than weekday traffic; tables were still active at 9 a.m. and breaking only due to end-of-window cutoff. Outcome: Saturday and Sunday NL200 tables ran until 10:30 a.m. on average, adding incremental rake during a window that had previously been dead.
Adjustment 3 (Month 2, Week 3): Reduced concurrency limit at NL200 from two tables to one table during 2 a.m. to 4 a.m. sub-window. Reason: two tables were fragmenting the small early-graveyard player pool; one fuller table was healthier than two sparse tables. Outcome: NL200 table filled faster, session length improved, and regulars reported better game quality.
Adjustment 4 (Month 3, Week 1): Added NL50 coverage during 6 a.m. to 9 a.m. sub-window on weekdays. Reason: data showed a small cohort of lower-stakes players logging in before work; they were finding no NL50 action and leaving. Outcome: NL50 table ran four out of five weekday mornings, adding incremental rake and retaining micro-stakes players who had been on the edge of leaving.
Adjustment 5 (Month 3, Week 2): Terminated both manual prop contracts. Reason: infrastructure had fully stabilized coverage at NL100 and NL200; props were logging zero hours in the prior two weeks. Outcome: $600/month cost savings; no observable drop in table activity or regular retention.
All five adjustments were owner decisions—configuration-layer choices about where, when, and how much concurrency. The runtime layer—how the infrastructure played once seated—was managed by the AI agents through per-opponent profiling and in-hand strategy adjustment. The owner never specified RFI frequencies, 3-bet ranges, or c-bet percentages. That’s not the owner’s job; that’s the infrastructure’s job.
Lessons and Transferable Tactics for NLH Clubs
Operator A’s results are not unique. The tactics transfer cleanly to any NLH club dealing with off-peak collapse, regular attrition, or unsustainable prop costs. Here are the lessons that matter.
Start narrow, then expand. Operator A began with one stake per concurrency limit, one time window, and conservative coverage. Only after Week 3 data showed stable survival did the owner add a second concurrent table. Clubs that try to configure everything at once often overcomplicate the rollout. Start narrow, observe, adjust.
Measure survival time, not just rake. The first operational win was not revenue—it was table survival time. When tables stay alive 90 minutes longer, regulars who log in at 6 a.m. find games instead of empty lobbies. That retention compounds into rake over weeks, not days. Track survival time as a leading indicator; rake is the lagging result.
Concurrency limits matter more than coverage hours. Operator A reduced NL200 concurrency from two tables to one during the early graveyard window and saw game quality improve. Two half-empty tables feel dead; one full table feels active. Don’t assume more concurrency is always better. Sometimes one fuller table is the correct operational choice.
Replace props when the data supports it, not before. Operator A kept the manual props through Month 1 as a hedge. Only in Month 2, after consistent concurrency data confirmed stable coverage, did the owner phase out the prop contracts. Clubs that eliminate props too early risk coverage gaps during unexpected traffic spikes. Use data, not optimism, to decide when props are redundant.
The owner decides where and when. The infrastructure decides how to play. Every adjustment Operator A made was a configuration-layer choice—stake levels, time windows, concurrency caps. The owner never specified hand-level strategy, never tuned RFI percentages, never adjusted c-bet frequencies. That’s the runtime layer, managed by the infrastructure through per-opponent profiling and real-time strategy adjustment. Clubs that try to micro-manage runtime behavior miss the point. Configure the bounds; let the infrastructure execute within them.
Action density is infrastructure, not luck. The reason off-peak tables collapsed at baseline was not bad luck or seasonal variance. It was an infrastructure gap. Manual props couldn’t fill the gap reliably because their play was static and their cost was unsustainable. Managed AI infrastructure filled the gap because it kept tables active within owner-defined parameters, adapted its play to the opponents at the table, and cost less than the prop payroll it replaced. Stable, predictable action density is what keeps regulars logged in and rake compounding. That’s an infrastructure problem with an infrastructure solution.
PokerNet AI provides managed NLH infrastructure that stabilizes off-peak table activity, replaces unsustainable prop costs, and operates within owner-configured bounds—stake levels, time windows, concurrency limits, and behavioral profiles. The owner decides where and when; the infrastructure decides how to play. Learn how NLH-focused AI infrastructure can stabilize off-peak windows and reduce operational costs for your club.
