435 seats.
Killingly first.
The Blue Hour is my results board for election night, November 3, 2026. It starts with my town, Killingly, then Connecticut and Rhode Island, then every one of the 435 House seats and the race for control. Codex built the engine and a private hosted site in an evening. Claude gave it a night sky and a seat chart that makes it obvious what’s still in play. The copy has a point of view (I’m rooting for blue). The numbers don’t.
- Status
- Public replay updated
- Public replay
- National calls through the captured cutoff
- Still open
- Remaining calls and official certification
- Record updated

The whole night in four minutes.
Two days later I wanted to watch it again, so Claude built a time-lapse. It plays a national-only version of the board, starting at 6:45 PM with an empty board, and each recorded call lands at the timestamp supplied by AP through NPR. The seats fill in, the flips go off, and Democrats reach 218 at 2:13 AM.
The calls are real. The vote counts in between are not. The board saved the latest numbers, not every minute of the night, so each race climbs from its state’s poll closing toward its captured count. A badge on the screen says so the whole time.

My town first, then the whole House.
I wanted one screen for election night that started where I live. Killingly first. Then Connecticut and Rhode Island. Then all 435 House seats and the count to 218.
I gave Codex two rules for tone and truth. The copy roots for Democrats. The numbers report what the evidence says. Those two never get to touch each other: the cheering lives in the headlines, and every result on the screen links back to where it came from, with that source’s own timestamp.
No paid election data, either. Everything comes from free public sources.
Three Codex agents and an evening.
- The sourcesAP calls through NPR, official state counts, and Connecticut’s town returns.
- The enginePlain code does the counting. No AI model reads a vote total. A lead, a call and certification are kept apart.
- The snapshotOne saved copy of the night. An update only saves if nothing newer got there first, so two updates can’t trample each other.
- The pageAsks for fresh results once a minute while it’s open. An hourly cloud check keeps going when it’s closed.
Codex split the job across three of its own worker agents: one for research, one for the engine and one for the interface. It put the whole thing on a private hosted site that only I can open, and by 10:37 PM that site was checking all six feeds and saving what it found.
Codex never got to see its own page, though. Its browser checks were blocked on this machine, so the interface went live without anybody looking at it in a browser. That’s where Claude came in.
A lead is hope. A call counts.
- All 435 seats are always on the board. A seat with no data is unknown. It never shows up as zero votes or a win.
- A lead never counts toward 218. Only a race the AP has called, or one that’s certified, goes in the meter.
- A flip needs a called winner and a sourced record of which party held the seat before. A lead that changes hands is not a flip.
- Certification only comes from an official document someone actually read: the source, the title, a short quote, the date. 100% reporting is not certification.
- A certified race locks. No later update can change it.
- Killingly’s own numbers never stand in for a whole district.
- If a feed breaks, the last good numbers stay up with a warning and their timestamp.
- The checks only wind down when every tracked race is certified. One called chamber isn’t enough.
Make it feel alive.
At 10:42 PM I handed it to Claude with a short ask: make it feel alive and exciting, make it obvious what’s in play and what isn’t, and give it a solid look. The ground rules came with it: keep the data hookup, the sources, the accessibility, the once-a-minute updates and the line between a lead, a call and certification.
Codex had already named it The Blue Hour, so Claude leaned all the way in. A dusk sky moves behind the top of the page, with stars and the occasional shooting star. The House became a seat chart: 435 dots, Democrats filling from the left, Republicans from the right, and a line at seat 218.
Under the chart, four counters: no votes yet, leading, called and certified. Click one and the list shows those races. The map stripes every state that still has uncalled seats and puts a pulsing orange ring on close races that are still counting. And every race card shows its stage: a dashed edge and “R leads · not called” while it’s counting, the party’s color once it’s called, gold once it’s certified.





Between checks, it notices what changed. The numbers count up, seats that changed pop, a “since you opened this page” line keeps score, and new calls get a heads-up at the bottom of the screen. A new Democratic flip sets off a burst of blue stars. A Republican flip gets a plain message. I did say I was rooting.
Then the boring, important part. Claude ran Codex’s page and the new one side by side on the same results: every region, every filter, three map states, the House numbers, the monitoring notes and every source link. All 32 views matched. No errors at desktop, tablet or phone width, and with motion turned off in the system settings, everything holds still and stays readable.
Wire it up.
Once the new look was done, I asked Claude to wire it up to track live. The hosted copy already updates on its own, but the new design only lived inside the chat window, and it would stop when the chat did.
So now there’s a launcher on my PC. Double-click it and a small window runs the same server code the hosted site runs, with the new page. It checks every feed once a minute even with the browser closed, writes each check to disk, and prints one line per check: the count for each party, how many seats are still uncalled, and whether every source is healthy. Close the window and it stops. Open it again and it picks up where it left off, history included.
Hosted and at home.
The private hosted site keeps its own hourly cloud check for when nobody has it open. The tracker on my PC runs the same engine against the same feeds, so the two can’t drift apart on the rules.

What broke, and what fixed it.
- Codex couldn’t look at its own page. Its browser checks were blocked on this machine, even after it was given more access. Nobody saw the interface in a browser until the design pass.
- The first deploy had a storage setting in the wrong format. The host wanted it written a different way. Codex fixed it and redeployed.
- A feed sent a bad number. At 11:10 PM, Open America’s House file came in with a reporting percentage the engine wouldn’t accept, so it set that file aside, kept the last good numbers and put up a warning. By 11:26 the feed was clean again. That’s the rule working the way it should.
- The quiet seats disappeared. The first seat chart drew the no-votes-yet seats so dim they vanished into the glow behind it. They got brighter.
- A flip got talked over. On a manual refresh, the “Sources checked” message landed on top of the flip celebration. The celebration waits its turn now.
- One seat has no data. When Codex delivered, Wisconsin’s 8th District had no return from any feed. It stays on the board as unknown, which is the point.
One night, so far.
- A dated ending for the public replay.
Rebuilt from the public AP/NPR House, Senate and governor data. The last frame uses the exact captured counts, with 18 races still uncalled. The intermediate vote counts remain simulated. This update does not change or certify the private tracker.
- Watch it back.
A time-lapse of the whole night, on this site: real AP call times, simulated counts, about four minutes.
- Tracking on its own.
The tracker went on my PC: one double-click, a check every minute, every check saved. All six feeds healthy.
- The first bad feed.
Open America sent a number the engine refused. The page showed a warning and kept the last good data. Clean again by 11:26.
- The new look, checked.
Claude finished the design pass and matched it against Codex’s version on the same results: 32 views, no differences. Codex reviews it before it goes on the hosted copy.
- The design pass starts.
“Make it feel alive and exciting, obvious what is in play and what is not.”
- Live.
The hosted copy checked all six feeds and saved its first snapshot. The hourly cloud check was set to start at 11 PM.
- Codex builds it.
Research, the engine and the interface, split across three Codex worker agents, with 24 engine tests and 5 server tests.
What is still open.
- The new look on the hosted copy. Codex reviews the design pass and publishes it.
- My phone. The tracker only answers on my PC right now. It can reach my phone over my own private network after one small fix.
- Killingly’s numbers. At 11:39 PM the town feed listed 10 contests with no votes reported yet.
- The long tail. Close races and certification take days to weeks. The checks keep going, and each race locks when its official document comes in.
- The finish. The checks stop only when every tracked race is certified.
Checks are not results.
Checked so far
Codex’s 24 engine tests and 5 server tests pass. The side-by-side run of Codex’s page and the new one matched on all 32 views. No errors at desktop, tablet and phone width, a run with motion turned off, and every button, filter and map state clicked through by a test script. The tracker saved a fresh check every minute on its own.
Not proven yet
Certification. No race has been certified yet, so that path hasn’t run for real. How smooth it is on my own screens and in Safari. And the results themselves: everything on this page is election-night counting, not a final count.
About the pictures. These are real screens from election night, with real Associated Press calls and state returns, captured between 11:38 and 11:39 PM Eastern. None of it is final. The candidates’ names are public. The private hosted site isn’t linked here.
Record assembled from the project’s own notes (context, decisions, acceptance rules and delivery receipt) and the night’s build and test logs, through 11:45 PM Eastern on November 3, 2026. Built by Mark Salisbury with AI collaborators: Codex researched the sources and built the engine, the server, the hosted site and the first interface with three of its own worker agents. Claude did the design pass, the side-by-side checks and the tracker on my PC, and wrote this record.
Public record revised . The screenshots and original build checks retain their election-night dates; the dated public replay is a separate update.