This page is internal. Enter the password to continue.
Tournament Intel
Fourteen scheduled jobs collect poker tournament data from two public sources, publish it to the apps, and then check their own work. This page is the map: what each one does, why it runs when it runs, and where the boundaries sit so no two jobs are covering the same ground.
Described from the live system on 13 August 2026Every job on this page is one of three things. That single distinction does most of the work of telling them apart, so the colour below is used consistently in the timeline, the diagram and the table.
Five run between 1 and 4 in the morning, when the rooms are quiet and nothing is competing for the machine. The sixth runs four times during the day, because it reads a source that only exists while a tournament is being played.
At 5:30 and 5:40 the night's work is copied from our private working copy into the tables the DirtyStack site and the player app actually read. These two run inside the database itself, so they still work when the Mac is asleep.
Between 6:00 and 9:00 the system marks its own homework, from the narrowest question (did any data arrive?) to the widest (does the page a player reads match what the room published?). One email at 7:35 carries the verdict.
The order is not arbitrary. Gathering finishes before publishing starts; publishing finishes before checking starts; and the check that matters most to a person is timed to land in the inbox before the working day. Where two jobs run minutes apart they share one mark here and appear separately in the table below.
Why the quiet middle of the day. Between 9 AM and noon nothing runs. The overnight picture is settled by 9, and the rooms themselves have not yet started editing tonight's card. The 2 PM re-check exists precisely because they do edit it, usually over lunch.
The top row is the journey a single tournament takes, from a poker room publishing it to a player reading it in the app. The bars underneath are the checks. The length of each bar is the point: they are measuring different stretches of the same pipe, which is why five checks is not five times the same check.
In running order. “If it fails” is the column that matters most: some of this data can be collected again tomorrow, and some of it is gone the moment we miss it.
| Job | When (ET) | What it does | If it fails |
|---|---|---|---|
| Gather reading the two public sources | |||
| Florida turnouttm-attendance | 1:00 AMnightly, ~10 min | Reads how many players actually turned out at each Florida tournament, from the clock PokerAtlas leaves up after an event finishes. Re-reads the last three nights every time, so a bad night repairs itself without anyone noticing. | Recoverable. The clock stays up, so a missed night can be read later. |
| Florida scheduletm-schedule-sweep | 2:00 AMnightly, ~2 min | Pulls the upcoming tournament calendar for all 29 Florida rooms. This is the origin of every Florida tournament the app shows, roughly seven weeks ahead. | Recoverable, but nothing downstream is fresh until it runs. Everything below depends on it. |
| Florida detailtm-structure-enrich | 2:30 AMnightly | Goes back over today's and tomorrow's Florida events and fills in the detail a player actually decides on: starting chips, blind levels, level length, late registration, re-entry, fees, guarantee. | Recoverable. Events still list correctly, just with less detail than PokerAtlas shows. |
| National scheduletm-national-sweep | 3:00 AMnightly, ~6 min | The same calendar pull for the other 456 rooms, across 40 states, about 13,500 rows a night. Florida is deliberately excluded here because the 2 AM job owns it. Also rebuilds the national report page from the fresh data. | Recoverable. This feeds market intelligence, not the live player-facing listings. |
| National turnouttm-attendance-national | 4:00 AMnightly, ~22 min | Turnout for the 90 rooms outside Florida that post a PokerAtlas clock, across 14 states. About half are Texas card rooms. Runs at 4 AM because yesterday is still on PokerAtlas's rolling calendar then; it rolls off by evening. | Recoverable within a few days, then the calendar entry rolls away. |
| Bravo live sweeptm-bravo | 12, 3, 7, 10 PM4× daily, ~25 min | 144 rooms across 31 states run on Bravo instead, which shows a clock only while the tournament is being played and keeps no history. We look four times a day and keep the highest count seen, so a field still filling at 3 PM is corrected by the 7 PM pass. | Not recoverable. Whatever was live and unread is gone permanently. the one that cannot wait |
| Publish moving it into what the apps read | |||
| Publish schedulespromote-external-tournaments | 5:30 AMnightly | Copies the tournaments we gathered out of our private working copy and into the tables the DirtyStack site and player app read from. An event a room has dropped is left listed for one more cycle, then automatically marked cancelled. | Nothing new reaches players. Yesterday's listings stay up rather than disappearing. |
| Publish turnoutpromote-external-results | 5:40 AMnightly | The same for Florida turnout numbers over the last 60 days. Where both sources saw the same event, the post-event PokerAtlas reading wins over the live Bravo one, because it is final rather than mid-count. | Results pages go stale. The underlying numbers are safe in our own copy. |
| Check marking its own homework | |||
| Schedule audittm-audit | 6:00 AMnightly | Goes back to PokerAtlas from scratch and compares every event it lists against every event we are publishing, across the next seven weeks. Two answers matter: missing, meaning the room has it and we do not, and extra, meaning we have it and the room does not. | A missing event is the serious one: a player would not see a tournament that is running. |
| Eyes-on checktm-eyes-on | 6:30 AMnightly | The automated version of sitting down with PokerAtlas open in one window and DirtyStack in the other, for today's Florida events. Compares every field a player reads, not just the date and time, and keeps a screenshot record of what it saw. | Wrong detail on a page a player is acting on today. The narrowest window, the highest stakes. |
| Health checktm-health | 7:30 AMnightly, ~5 sec | Asks a deliberately dumber question than the audit: never mind whether the data is right, did any data arrive at all? Counts what landed in each layer against a minimum. This exists because a scraper can be completely blocked, collect almost nothing, and still finish without an error. | This is the failure that used to go unnoticed for a day. Now it is a red line by 7:30. |
| Morning reporttm-report | 7:35 AMnightly | Builds the web pages that hold every past morning's verdict, and sends the single daily email. The subject line carries the result, so a clean morning needs no click and a bad one reaches you away from the desk. | No email. Silence and success would look the same, which is why the watchdog exists. |
| Pipeline watchdogtm-pipeline-watchdog | 9:00 AMnightly, in-database | The backstop. Every other job on this page runs on the Mac Studio, so if the Mac is asleep or off, nothing runs and nothing complains. This one lives inside the database instead, checks that each job left a heartbeat, and emails only when one has not. | By design, it fails only if the database itself is down, which is a separate alarm. |
| Afternoon re-checktm-audit-pm | 2:00 PMdaily | Rooms edit tonight's card during business hours, and the 6 AM audit cannot see a change made at noon. This re-checks the next three days only, which is the window someone is actually driving to today, and emails only when something is wrong. | An afternoon change to tonight's card could sit unnoticed until the next morning. |
Reasonable question with fourteen jobs. The short answer is no, and the boundaries are drawn deliberately in two places.
Each one only catches failures the one before it would pass. The only genuine repeat is the audit, which runs twice: a full seven-week pass in the morning and a narrow three-day pass after lunch, and only the morning one emails routinely.
The honest limit, worth saying out loud. Everything above proves that what we publish matches what the source published. None of it proves the source is right, or that we read it correctly in the first place. If a start time were misread the same way every single night, it would pass every check on this page, because the audit re-reads with the same software that made the original mistake.
The eyes-on check at 6:30 is the closest thing to a defence: it reads today's events through a different route and compares field by field. It covers today, and Florida.
A handful of things sit alongside the schedule. None of these run on a timer; they are either something a person opens, or something a person runs when needed.
A web page for every morning the system has run, holding that day's verdict and every finding behind it. This is where you go when you want to know whether a problem is new.
The outward-facing analysis page built from the national sweep: where tournaments run, what they cost, when they start, plus a chat window that answers questions against the same data.
Both sources require a logged-in browser and both eventually sign out. When that happens a job stops rather than guessing, and someone signs back in by hand. It takes about thirty seconds.
When a scraper decides a page should have had content and could not read it, it saves the page or a screenshot. An empty folder is the normal state, and a full one is the fastest way to tell a blocked scraper from a quiet night.
How rooms get onto the list in the first place: a crawl of every US state's room listing. Run when we expand coverage rather than nightly, because the set of poker rooms in America changes slowly.
Any PokerAtlas night can be re-collected on demand for a specific date. Running it twice is harmless: it never double-counts and never replaces a good number with a worse one.