A snap election, tracked live.
BC's 2026 election was called early, on September 22, for October 24. BCPoliTracker went public that morning and followed it to the count.
- 93
- Ridings, a page each
- 16k+
- News items from 260 sources
- ~10k
- Visits in five weeks
- 1 in 6
- Visits referred by AI agents

1 The problem
Who sits where in the BC legislature today? No single place answered that correctly.
The Assembly's public standings page lagged its own member register, and the register keeps no dates. Floor crossings and new parties since the 2024 election had made the count a weekly question for anyone working in BC politics. Then the Premier called an election two years ahead of the fixed date.
2 What Gremble built
- A record of every seat change since the 2024 election, each one dated and sourced. A correction is a new row; nothing is overwritten.
- A page for each of the 93 ridings, with candidates from Elections BC's own list.
- Every public poll since 2024, listed as each pollster published it.
- A news wire drawing on 260 sources, scanned every half hour.
- Election-night results from Elections BC's initial count. Open pages check for a new count every minute and reload when it changes.
- A daily or weekly email digest, and Election 101: how a BC election works, checked against the statutes.
3 The rules
- Two tiers on every row. Confirmed means it is in the official record: the Assembly's register or Elections BC. Reported means credible media or the party itself, ahead of the record.
- Detection proposes, a person decides. Scans file proposals, and a person checks them before the record, leaders or candidates change. Only official sources, like the Assembly's register and Elections BC's candidate list, flow straight through.
- The record has to add up. Each build walks every member from the 2024 result through every recorded change and checks the result against the live register. If one member disagrees, nothing is written.
- It calls nothing. Results say who leads, by how many votes, with how many ballot boxes in, and stay labelled preliminary until the final count. A media projection is shown apart, with its source.
- No AI-written text goes out. A small language model classifier sorts the news. Headlines are the outlets' own words, and every digest has a report-a-mistake link.
- Tested before every deploy. Every deploy runs the full test suite against the real code, then checks the scripts the browser actually receives.
4 A call it reversed
Two days into the campaign, the tracker took down its own seat projection.
A review found one poll made up two-thirds of the polling average, and one province-wide swing is not a seat model. The average and the projection came out. The tracker now lists every poll as published and points to 338Canada for seat projections.
5 What broke
- Sep 24The clocks stopped. A deploy left the scheduled jobs switched off for about seven and a half hours overnight. Every alarm ran on the same stopped clocks, so the only sign was a morning digest that never arrived. The fix added a second watchdog on its own clock, one deploy script that runs every test and waits for the clock to beat, and a public notice when updates run late.
- Sep 26One candidate, counted twice. Elections BC's list printed a name surname-first for a single read, and the next read added the candidate again. Names now match in any word order within the same party and riding, with a test to hold it.
- Oct 19Yesterday's official data. Elections BC serves its turnout file with a year-long cache lifetime, so the edge kept handing back the previous day's file. Every Elections BC read, the results-night reader included, now skips the cache, and a test fails any read that doesn't. That was five days before the count.
6 Voting day
October 24 brought about 1,800 visits, five times the busiest day before it.
- An AI agent read the tracker's pages more than 400 times that day to answer people's questions, about four times its busiest day in the fortnight before.
- Over the five weeks, AI agents referred more than twice as many visits as Google.
Counted with cookieless analytics and Cloudflare's request logs, September 21 to October 27, 2026. Pageviews are left out: open result pages reloaded themselves as the count changed.
7 Since the count
The front page has switched to results, labelled preliminary until Elections BC's final count, November 6 to 10. A new Platform page lists every commitment in the incoming government's platform, by sector, in the party's own words. The news wire keeps running.
