What this is

Thunder Citizen puts Thunder Bay’s public data in one place: transit performance, council votes, city budgets, and more. The information is already public, but it’s scattered across feeds, PDFs, and meeting minutes that most people will never open. We collect it, organize it, and present it.

Thunder Citizen is also a software project. The backend uses Go for ingestion, parsing, indexing, and serving; the frontend uses HTMX for progressive enhancement on server-rendered pages, so it stays fast and works without JavaScript. The source code is open. Follow along on GitHub.

Questions, ideas, or just hello? Drop us a line at hello@thundercitizen.ca.

How it works

Transit data comes from Thunder Bay Transit’s real-time feeds. Council votes are scraped from the city’s published minutes. Budget figures reference specific pages in official documents.

PUBLIC SOURCES THUNDER CITIZEN COLLECT download + record PROCESS parse, cite, index PUBLISH store + serve PUBLIC

Transit pulls live GTFS-RT feeds for vehicle positions and delays, and budget flows are rendered as Sankey diagrams so revenue and expenditure can be traced end to end.

Raw feeds and PDFs aren’t built for humans. We translate them: bus arrivals become “3 min late” instead of a Unix timestamp, line items become labelled categories, motions get plain-language summaries with the official wording one click away. The goal is to make the answer to a question take seconds, not an afternoon.

Every figure stays traceable to its source. Budget numbers cite their FIR page, council votes link back to the minutes, transit metrics show the formula. Friendly on the surface, auditable underneath.

Other local sites we like

No affiliation. Just other locals building useful things for Thunder Bay.

SiteWhat it does
TB ShowsWhat’s on this weekend
Just The MenuLocal restaurant menus, no fluff
Thunder Bay Open DataThe city’s open data portal

Disclaimers

Data & accuracy

Thunder Citizen is an independent project. It is not affiliated with the City of Thunder Bay.

Provided “as is”, without representations or warranties (express or implied), including accuracy, completeness, timeliness, merchantability, or fitness for a particular purpose. No liability is assumed for errors, omissions, or any loss arising from use.

For official information and authoritative records, refer to the City of Thunder Bay or other responsible agencies.

Found an error or have a correction? Email data@thundercitizen.ca.

Privacy

Thunder Citizen does not use tracking cookies, analytics pixels, or third-party advertising networks. No user accounts are required.

We do process standard request metadata (IP address, user agent, request path, timestamp) for security, abuse prevention, operational stability, and to understand roughly how the site is used. Raw logs are kept only as long as reasonably necessary for these purposes; any longer-term figures are aggregate, cookieless counts that hold no personal data.

Outbound links (e.g. to the City of Thunder Bay, open data portal, or other local sites) are subject to the privacy policies of those destinations.

Privacy questions or requests: privacy@thundercitizen.ca

Data freshness

How recently each data source was last checked. Refreshes every time this page loads.

SourceFeedExpectedLast update
Budget · Operating ledger2026 Operating Budgetannual3d ago
Transit · Vehicle positionsGTFS-RT feedevery 6s5s ago
Transit · Trip updatesGTFS-RT feedevery 1m42s ago
Transit · Service alertsGTFS-RT feedevery 1m39s ago
Council minuteseScribe portalwhen published3d ago
We check eScribe regularly. Meetings are listed there promptly, but no official minutes PDFs have been posted since April 7.