← Back to Daily Builds

Daily build note · October 13, 2026

Margin Math

Dial in registered voters, turnout, and the split — see who decided the race on a 200-dot grid, how many no-shows it would take to flip it, and copy a margin receipt.

Civic / Political Tracking Tools Interactive demo live Static HTML/CSS/JS

What shipped

Margin Math is a civic data toy for the weeks before an election. Enter a race, two side names (candidates, or Yes / No for a measure), the number of registered voters, turnout, and Side A's share of the votes cast. The demo draws a 200-dot grid where each dot stands for a slice of registered voters: amber for Side A, violet for Side B, and gray for everyone who stayed home. The dots that make up the margin glow, and dashed rings mark the no-shows it would take to flip the race if they leaned toward the trailing side by the percentage you set. A verdict chip reads TIED, RAZOR-THIN (<1 pt), CLOSE (<5), COMFORTABLE (<10), or LANDSLIDE. A scale line puts the margin in human terms, like "fits in two school buses" or "two Bridgestone Arenas", and shows the margin as 1 in every K registered voters. Copy a markdown margin receipt with an America/Chicago timestamp. State saves in localStorage under margin-math-v1.

How to try

  • The demo opens on Ward council seat: 14,200 registered voters, 16% turnout, and 2,272 votes cast. The race is decided by 82 votes (two school buses), so the chip reads CLOSE. If 411 of the 11,928 people who stayed home showed up and broke 60/40 for the trailing side, the result would flip. That's 3.4% of the no-shows.
  • Load School board runoff (8.5% turnout): a 6-vote RAZOR-THIN margin that fits around a dinner table. Then drag the turnout slider and watch the gray dots fill in.
  • Drag Flip lean down to 50%. New voters who split evenly never change the margin, so the flip number goes to ∞. Push Side A's share to 90% to see a LANDSLIDE that no-shows alone can't close.
  • Try Statewide midterm (a 36,378-vote margin out of 2,021,000 cast) or the HOA pickleball vote, rename the sides, and copy the receipt.

Why this (vs neighbors)

The earlier civic builds (DistrictPulse, Agenda Delta Watch, and the Data Center Docket family) track what governments are doing. Margin Math is a pocket-sized arithmetic toy instead: it makes "every vote counts" concrete by showing how few people separate the result from the stay-home pool. It's also a deliberate change of pace from the recent run of planning and decision tools (Cut Line, Cost of Delay, Kill Criteria).

Scope trim

Two sides only: no third parties, write-ins, undervotes, or ranked choice. No real election data, APIs, precincts, or demographic modeling. One race at a time, with no shareable URL. Side colors are deliberately neutral (amber / violet) and every preset is fictional.

Limitations

  • The flip number is an expected value: it assumes new voters break at exactly the lean you set and that nobody who already voted changes their mind.
  • Dots are rounded to 200 (largest-remainder), so a very small margin can be less than one dot. When that happens the demo says so.
  • Real outcomes depend on recount thresholds, tie-break rules, and who is actually eligible to vote. This is arithmetic, not a forecast.

Suggested next steps

  1. Add an optional third-party / undervote slice and a recount-threshold input so the chip can say when a race lands inside the automatic-recount band.
  2. Add a "my precinct" mode that splits the margin across N precincts ("about 3 voters per precinct").
  3. Add a shareable link that encodes the race in the URL, plus an image export of the dot grid.