About Badger Politics
Badger Politics is an independent project, not affiliated with the State of Wisconsin. It exists so that any Wisconsinite can answer, in plain language: what is my Legislature doing, how did my legislators vote, and what died quietly without a hearing?
Everything is built from official public records , last pulled Aug 24, 2026. The Legislature's most recent recorded action is from Aug 18, 2026 — between floorperiods those two dates drift apart, because we keep checking while the Legislature rests. There are no accounts, no tracking cookies, and no ads. The Find my legislators feature keeps your district in your browser only. Your address is never stored. The full pipeline and site are open source at github.com/uprightsleepy/badger-politics, and all data is free to reuse.
Where every number comes from
Each kind of data on this site has exactly one official source, and every page links back to it so you can check our work.
Bills, votes, and hearings
Scraped nightly from the Legislature's own site, docs.legis.wisconsin.gov, using the open source Open States scrapers with our fixes contributed back. Coverage runs from the 2009 session to today. A few older sessions are marked "partial data" where the Legislature's records do not include individual roll calls.
- Every vote is matched against a roster of who actually served that session. If a name on a roll call could mean two people, the nightly build fails and a human resolves it. We never guess.
- Some official roll calls omit the list of members who did not vote and give only a count. We show the count and never invent the names.
- "Hearing: none" means what it says: the bill died at the end of a session with no public hearing on record. The committee and chair shown are from the bill's own history.
Legislators
Names, districts, parties, photos, and committee assignments come from docs.legis.wisconsin.gov. Attendance heatmaps and "votes with party" figures are computed from the roll calls above, and the page states what each number counts.
Elections and districts
Candidate lists come from the Wisconsin Elections Commission ballot access report, and past results from WEC's certified canvass reports. District boundaries are the Legislative Technology Services Bureau's official 2024 files. When you look up your address, it goes to the U.S. Census geocoder once, just to get coordinates, and is never stored or sent anywhere else.
Campaign money
Fundraising figures come from committees' own filings with the Wisconsin Ethics Commission, via campaignfinance.wi.gov, covering electronic records from 2008 to today. Some things to know when reading them:
- Corporations cannot contribute to Wisconsin candidates. Money reaching a legislator's committee comes from individual people, from political committees (PACs, party committees, other candidates), and from conduits that pass along individual contributions.
- "Top contributing committees" lists political committees by their own filings. A PAC's name may reference a company or industry; the money is the PAC's, raised from its contributors, not a corporate payment.
- "Top occupations of individual donors" aggregates what donors themselves reported as their occupation. It says nothing about any employer directing or endorsing the contribution.
- Totals follow the person: they cover all of a legislator's candidate committees, including committees for runs at other offices.
- Totals are a rolling window since each member took office, dated from their first recorded floor vote. Money raised before they held office, including the campaign that first elected them, is not counted. Electronic filings begin in 2008, so members who took office earlier are counted from then.
- Committees are linked to legislators only when the link is certain. Where we haven't verified a committee yet, the page says the data isn't linked. It never shows a false zero.
- Donors are grouped by the state's own filer identifiers, not by name, so two different people with the same name are never combined. Individual donors appear only in aggregate, never by name.
- Organization logos appear only for committees whose sponsoring organization we have verified by hand, and the build re-verifies the organization's own website before fetching each logo. A logo never replaces the committee's registered name.
Lobbying
Registered lobbying interests per bill come from the Ethics Commission's Eye on Lobbying. A registration means an organization paid lobbyists to weigh in on a bill. It is not a for or against position, and we present it that way.
Compensation
Salaries are set by statute and identical for every member. Per diem rates come from each chamber's rules. What individual members actually claim is released by the chief clerks on request once a year, and is noted as such where shown.
Checks the data must pass
- Integrity checks gate every deploy. If any check fails, the site simply is not updated that night. Checks are never loosened to make a run pass.
- Counts are reconciled against the source. Every month of campaign finance data must match the state system's own record count exactly before it is accepted.
- History is re-audited nightly. Committees can amend old filings, so a rotating sample of past months is re-fetched every night and refreshed if the official record changed.
- An independent pipeline checks our math. We compare per-legislator totals against the National Institute on Money in State Politics (followthemoney.org), which processes the same filings separately. Their data is used only for verification and is not republished here.
- The site itself is tested. Every build runs automated accessibility scans and functional checks, from search quality to district lookup, before it ships.
What we deliberately do not do
- We never infer. If a link between records cannot be established from official identifiers, the page says so instead of guessing. Gaps are labeled as gaps.
- We do not put donations next to votes or suggest that money caused a vote. Both are shown, on separate pages, and you can draw your own conclusions.
- We do not track you. Analytics is a single privacy-respecting counter (GoatCounter) with no cookies. Personalization lives in your browser and nowhere else.
Corrections
Accuracy is the whole point. Every vote and bill page links to the official record. If anything here disagrees with it, please open an issue. Corrections are treated as the highest priority bugs.