📊

The Big Board

Live Election Command Center
Healthy
1 watching
Syncing in 10s
"Tracking key battlegrounds, county returns, and margin swings nationwide..." National & Local Feeds Aggregated
🗺️ 50-State & District Explorer:
Scope:
Monitored Contests
0
Across 0 sources
Declared Winners
0
0% called
Total Ballots Counted
0
Aggregated across all feeds
Avg Precinct Reporting
0.0%
0 / 0 precincts

🔄 Seats Flipped Tracker

Net party control changes across National, Statewide, and Local contests
🇺🇸 National (Senate & House) 0 Flips
Net: No Shift
0 Dem flips • 0 Rep flips
🏛️ State (Gov & Legislature) 0 Flips
Net: No Shift
0 Dem flips • 0 Rep flips
DEM Lead / Call REP Lead / Call ⭐ Tracked 🚨 Seat Flip
💬 LIVE FEED Waiting for live ballot drops and race call alerts...
Loading live election data...

💬 Live Election Alert Feed LIVE STREAM

Real-time stream of every ballot drop, lead change, race call, and analytical math update broadcast by Election Watcher.

Filter Stream:
Loading live alert feed...

🗺️ Platform Architecture & Future Roadmap

Public Horizon
Strategic milestones and architectural capabilities planned for The Big Board. Designed to make the platform self-hostable, universally compatible with local and municipal election boards, and ready for community watch parties and analytical replay.
Loading milestones...
💾 Data Mobility & Archives
One-click SQLite database export/import, automated offsite cold backups, and tabular CSV/GeoJSON export for election researchers.
🔌 Universal Ingestion
Declarative Google Sheets and CSV scrapers for small-town clerks, plus a configurable JSONPath REST mapper for arbitrary county feeds.
📺 Watch Party & OBS Overlays
Sub-second Server-Sent Events (SSE) push stream, transparent OBS browser source overlay, and Home Assistant smart-lighting blueprints.
⏱️ Election Night Replay
Chronological scrubber utilizing recorded audit deltas to replay historical returns at 10x/30x accelerated speeds to study shift dynamics.
Loading roadmap milestones...

📖 The Big Board: Real-Time Election Command Center

Open Source
An independent, self-hosted election monitoring platform engineered for watch parties, newsrooms, political analysts, and homelabbers. Features sub-second Server-Sent Events push updates, mathematical path-to-victory models, seat flip detection, and native Home Assistant smart home automations.
➕ Home Assistant Blueprint 🗺️ Public Roadmap
⚡ Sub-Second SSE Push 🏠 Home Assistant Native 🗄️ Multi-Election Archiving 🔒 Zero External Trackers / No Ads 💾 SQLite WAL Local-First

📐 The Big Board Math Engine

Rather than waiting passively for race calls, The Big Board continuously runs mathematical victory projections across outstanding ballots:

  • Remaining Ballots Model: Combines official AP and NYT expected turnout estimates with precinct reporting proportions to extrapolate uncounted votes.
  • Needed Percentage Formula: Evaluates exactly what percentage of remaining uncounted ballots the runner-up must win to overtake the leader: ((Lead Margin + Outstanding) / (2 × Outstanding)) × 100.
  • Supermajority Thresholds: Automatically handles state constitutional amendments and ballot referendums requiring supermajority thresholds (e.g., 60% in Florida or 55% in Colorado).
  • Seat Flip Detection: Distinguishes baseline holds from party flips by cross-referencing incumbent defending party metadata against live winners and trending challengers.

🏠 Home Assistant Watch Party Integration

Turn election night into an immersive smart home watch party. When a victory call or party flip occurs, The Big Board fires MQTT events that trigger synchronized RGB light flashes and TTS voice announcements.

➕ One-Click Import 📥 Download YAML
  • Party Colors: Flashes Democrat Blue (#0050FF) or Republican Red (#DC2626).
  • Ambient Restoration: Snapshots baseline lighting with Home Assistant scenes and safely restores ambient brightness after celebrations.
  • Speech Synthesis: Announces winner name, party, and flip status over smart speakers via Home Assistant 2024+ TTS engines.

⚡ Real-Time Streaming & REST APIs

Built with an open API posture. Consume raw Server-Sent Events push streams or query standard JSON REST endpoints without authentication tokens:

curl -N https://thebigboard.live/api/stream
  • /api/stream: Live SSE stream (call, flip, drop, viewers).
  • Live Audience: Deduplicated active viewer telemetry showing current audience numbers in the header badge.
  • /api/races: Complete catalog of tracked Senate, House, and Gubernatorial contests.
  • /api/states: 50-state summary with district counts.
  • /api/audit: Append-only delta audit log with cryptographic state verification.

🗄️ Historical Archiving & Replay

Switch effortlessly between live election night tallies and archived past cycles:

  • Archive Selector: Use the dropdown in the header to load historical election databases.
  • SQLite WAL Snapshots: Archiving creates clean, self-contained SQLite replicas with embedded feed provenance and metadata.
  • Read-Only Safety: Past elections are mounted strictly read-only with isolated connection pooling to prevent accidental state alteration.

🔊 Web Audio Synthesizer & Soundboard Legend

The Big Board uses the browser native Web Audio API to synthesize polyphonic musical cues dynamically without downloading external audio files. Use the party perspective toggle in the header (🟦 Dem Mode, 🟥 GOP Mode, or ⚖️ Neutral Desk) to adapt audio alerts to your watch party. Click any button below to preview:

Democratic Victory / Hold
Ascending C-Major arpeggio chime on Democratic hold or race call.
Republican Hold
Descending minor sigh when a Republican incumbent defends their seat.
Democratic Seat Flip
Multi-voice celebratory brass and high bell fanfare for a REP to DEM flip.
Republican Seat Flip
Tragic falling slide sad trombone when a Democratic seat flips to GOP.
Neutral Race Call
Balanced non-partisan dual sine broadcast chime for declared winners.
Neutral Seat Flip
Urgent 3-tone breaking wire alert when any seat changes party control.

📺 OBS Studio & Livestream Setup

Broadcasting election night on YouTube or Twitch? Add The Big Board directly to OBS Studio:

  1. In OBS, add a new Browser Source.
  2. Set URL to https://thebigboard.live.
  3. Set Width to 1920 and Height to 1080.
  4. Check "Shutdown source when not visible" for CPU efficiency.

🛡️ Data Privacy & Independence

The Big Board is built with an uncompromising privacy stance:

  • Zero Tracking: No Google Analytics, no Meta Pixel, no tracking cookies on public pages.
  • Zero Ads: Clean, uncluttered operational interface without intrusive commercial banners.
  • Self-Hostable: Runs entirely inside a standard Docker container on any Linux droplet or local home server.

⚡ Multi-Network National & 50-State Feed Switchboard

Current Mode: National & 50-State Stack (9 Feeds Active)

One-click scraper mode switchboard. The default National & 50-State Stack (9 Feeds) aggregates AP/NYT, NBC News Decision Desk, and CNN/Edison NEP across all U.S. Senate, U.S. Governor, and U.S. House contests nationwide. Local/county scrapers are modularized under Phase 2.

Target Feed Sources (National, Statewide & Subscribed States)

Configure automated election scrapers and APIs across national (U.S. Senate, U.S. House), state (U.S. Governor, State Legislatures), and optional Phase 2 local feeds. Use "Test Feed" to verify HTTP status and contest discovery.

ID Source Name & Live Status Tier Adapter Interval Endpoint URL Actions

Core Engine Settings

Alert Channels (MQTT & Homelab)

📖 How-To Runbook: Special Elections & Next Election Season Rollover

Admin Operations Guide

Quick-reference checklist for reusing The Big Board for an off-cycle Special Election (UI-only, under 2 minutes) or rolling over to the Next Full General Election Cycle (e.g., Nov 2027 or Nov 2028).

⚡ Option A: Special Election Setup (UI Only, No Code Changes)
  1. Archive & Reset (Optional): To save current results before wiping, copy /config/election-watcher/data/election_watcher.db on gateway, then click 🗑️ Reset Board in the top Admin bar.
  2. Add the Special Election Feed: Click + Add Custom Feed Source above and use the matching adapter:
    • AP / NYT (nyt_ap): https://static01.nyt.com/elections-assets/pages/data/YYYY-MM-DD/results-<state-slug>.json
    • PA Dept. of State (pa_dos_api): Update electionid=<ID> and electiontype=S in the electionreturns.pa.gov URL.
    • County / Clarity (lancaster_enhanced or clarity): Paste the county special election JSON endpoint.
  3. Verify & Save: Click Test Feed on the new row to confirm contests parse cleanly, then click 💾 Save and Apply Configuration.
  4. Go Live & Freeze When Done: Click ▶️ Activate Polling before polls close. Once certified, click ⏸️ Deactivate Polling to freeze the site in archive mode.
🗓️ Option B: Next General Election Season Rollover (2027 / 2028)
  1. Archive & Reset Database: Back up /config/election-watcher/data/election_watcher.db on gateway, then click 🗑️ Reset Board.
  2. Update Election Dates / Years in Feed URLs:
    • AP / NYT (nyt_ap): Replace 2026-11-03 with the new YYYY-MM-DD in config.yaml, parsers/nyt_ap.py (get_state_feed_url & derive_nyt_race_json_url), and templates.py. (For 2028, add results-president.json.)
    • NBC (nbc_firecracker): Replace 2026-elections with YYYY-elections (add /president-results for 2028).
    • CNN / NEP (cnn_nep): Replace 2026-SG.json, 2026-GG.json, 2026-HG.json with YYYY-SG/GG/HG.json (plus YYYY-PG.json for President).
  3. Refresh Open-Seat Defending Party Maps: Races with an incumbent on the ballot auto-detect flips via incumbent: true. Only retiring/open seats use OPEN_SENATE_DEFENDING_PARTY, OPEN_GOVERNOR_DEFENDING_PARTY, and OPEN_HOUSE_DEFENDING_PARTY in nyt_ap.py and nbc_cnn.py.
  4. Update Poll-Close Timer & Rebuild: Update getPollCloseCountdownText() in templates.py, run docker build -t election-watcher:latest . && docker compose up -d --force-recreate on gateway, and click ▶️ Activate Polling!

📦 Database Archiving & Historical Elections

Archive & Standby Manager

Archive the active election database with embedded feed provenance and reset the live board to a clean state for a new election cycle. Visitors can browse historical election archives via the top header selector in read-only mode while the background poller operates normally.

Saved Election Archives
Archive Name & ID Date Archived Contests Total Ballots File Size Sources Snapshot Actions
Loading saved archives...
Daemon Uptime
0m
Continuous 24/7 loop
Total Poll Cycles
0
0 successful, 0 failed
Database Status
Connected
SQLite WAL mode
Usable Data Sources
0 / 0
Awaiting first live ballot drop
Active Live Viewers
1
1 active SSE stream
Last Poll Execution
Never
No errors logged

📡 Live Data Source Usability & Readiness Matrix

Distinguishes feeds that are 🟢 Pulling Usable Data (live 2026 ballots > 0) from feeds that are merely 🟡 Up - Schema Ready (0 Votes), 🟠 Up - Empty / Stale Year, or 🔴 Offline.
Source Data Usability Status Schema / Contests Parsed Contests Reporting Votes Total Ballots Pulled Last Checked
Loading source telemetry...

State Change History (The Audit Trail)

Timestamp Race ID Vote Delta Precincts Delta Reasons / Change Events
No deltas recorded yet.

📝 Elections Site Roadmap & To-Do List

Synced live with static file TODO.md. Check items off, add new tasks below, edit raw Markdown, or edit the file on disk.
0 / 0 Completed
Loading To-Do list...
Configuration saved successfully!