What shipped
Count Curve is an election-night count simulator for a fictional race between Candidate A and Candidate B. You set the ballot mix: each type (early in-person, Election Day, mail, late mail and provisionals) gets a share of the vote, a lean, and a reporting window in hours after polls close at 7 PM Central. The votes are split into random batches with a configurable precinct spread and released through each window, so the final result is fixed but the path isn't. Press Play the count to watch a live tally board and tug-of-war bar move from Tuesday night through the last ballot. You can also scrub the count curve, which shows the margin among counted votes over time, a percent-counted strip, and markers for the careful call, the hasty call and the last lead change. It has an Election-night zoom. A careful decision desk projects the outstanding vote by type and only calls when the projection beats its caution band. A hasty call just names whoever leads once enough is counted. Verdict chips are CALLED AT POLL CLOSE, ELECTION NIGHT, NEXT DAY, DAYS LATER, TOO CLOSE TO CALL, RECOUNT ZONE and EMPTY, plus LEAD FLIP, MIRAGE, DESK WRONG and HASTY CALL HELD / WRONG. There's also a milestones timeline and a copyable markdown report stamped in Central time. State saves under count-curve-v1.
How to try
- The demo opens on Mail counted last. Election Day precincts report first and lean B, and mail is processed starting about 11 PM. B leads by as much as 10 points early. A hasty call for B at 2:15 AM Wednesday turns out wrong. A pulls ahead for good Thursday morning and wins by about 2.9 points, and the careful desk calls it at 3:05 AM Thursday: DAYS LATER, LEAD FLIP, MIRAGE.
- Load Early vote reported first for the mirror image. Pre-processed mail drops at 7 PM and A leads by 20 points, then Election Day precincts grind it down. The careful desk calls it for B at 11 PM while B is still behind, and B wins by about 1.1.
- Steady county is called within 35 minutes, and the hasty call holds. Recount nail-biter ends 0.02 points apart after three lead changes and never gets a responsible call. Slow mail state takes until Thursday even though A wins by almost 5.
- Press Reroll night to shuffle the batch order with the same final result, raise the precinct spread to make the curve lumpier, or tighten the desk's caution and watch it get a call wrong.
Why this (vs neighbors)
Election Day is November 3. Every cycle, people watch early leads evaporate and assume something changed after the polls closed, when the only thing that changed was the counting order. Poll Line (10/21) simulates the line to vote. Count Curve picks up at 7 PM and shows why "who's ahead" and "who's winning" are different questions until most of the vote is in. It stays deliberately generic and nonpartisan: Candidate A and B, any lean on any ballot type.
Scope trim
No real states, counties or results, no turnout uncertainty, no third parties, no multi-race maps, and no share URL. One race and up to eight ballot types.
Limitations
- Batches are random within each type's window and have the same expected lean over time. Real counts are lumpier because whole counties report together.
- The careful desk knows the exact number of outstanding ballots. Real desks have to estimate turnout, which is a big source of uncertainty.
- The 0.5-point recount line is a common rule of thumb. Actual recount thresholds and mail-processing rules vary by state.
Suggested next steps
- Add turnout uncertainty so the desk has to estimate what's left.
- Add a county-level mode with a little map that fills in as counties report.
- Add a shareable URL for a scenario, for explainers and classrooms.