🔄 Seats Flipped Tracker
💬 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.
🗺️ Platform Architecture & Future Roadmap
Public Horizon📖 The Big Board: Real-Time Election Command Center
Open Source📐 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.
- 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:
/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:
📺 OBS Studio & Livestream Setup
Broadcasting election night on YouTube or Twitch? Add The Big Board directly to OBS Studio:
- In OBS, add a new Browser Source.
- Set URL to
https://thebigboard.live. - Set Width to
1920and Height to1080. - 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 GuideQuick-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).
-
Archive & Reset (Optional): To save current results before wiping, copy
/config/election-watcher/data/election_watcher.dbongateway, then click 🗑️ Reset Board in the top Admin bar. -
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): Updateelectionid=<ID>andelectiontype=Sin theelectionreturns.pa.govURL. - County / Clarity (
lancaster_enhancedorclarity): Paste the county special election JSON endpoint.
- AP / NYT (
- Verify & Save: Click Test Feed on the new row to confirm contests parse cleanly, then click 💾 Save and Apply Configuration.
- Go Live & Freeze When Done: Click ▶️ Activate Polling before polls close. Once certified, click ⏸️ Deactivate Polling to freeze the site in archive mode.
-
Archive & Reset Database: Back up
/config/election-watcher/data/election_watcher.dbongateway, then click 🗑️ Reset Board. -
Update Election Dates / Years in Feed URLs:
- AP / NYT (
nyt_ap): Replace2026-11-03with the newYYYY-MM-DDinconfig.yaml,parsers/nyt_ap.py(get_state_feed_url&derive_nyt_race_json_url), andtemplates.py. (For 2028, addresults-president.json.) - NBC (
nbc_firecracker): Replace2026-electionswithYYYY-elections(add/president-resultsfor 2028). - CNN / NEP (
cnn_nep): Replace2026-SG.json,2026-GG.json,2026-HG.jsonwithYYYY-SG/GG/HG.json(plusYYYY-PG.jsonfor President).
- AP / NYT (
-
Refresh Open-Seat Defending Party Maps: Races with an incumbent on the ballot auto-detect flips via
incumbent: true. Only retiring/open seats useOPEN_SENATE_DEFENDING_PARTY,OPEN_GOVERNOR_DEFENDING_PARTY, andOPEN_HOUSE_DEFENDING_PARTYinnyt_ap.pyandnbc_cnn.py. -
Update Poll-Close Timer & Rebuild: Update
getPollCloseCountdownText()intemplates.py, rundocker build -t election-watcher:latest . && docker compose up -d --force-recreateongateway, and click ▶️ Activate Polling!
📦 Database Archiving & Historical Elections
Archive & Standby ManagerArchive 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.
| Archive Name & ID | Date Archived | Contests | Total Ballots | File Size | Sources Snapshot | Actions |
|---|---|---|---|---|---|---|
| Loading saved archives... | ||||||
📡 Live Data Source Usability & Readiness Matrix
| 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
TODO.md. Check items off, add new tasks below, edit raw Markdown, or edit the file on disk.