Delegation Map
Every PA House, Senate and executive branch official, mapped by county. Filter by body, party, municipality, 2026 ballot status, leadership post or agency tier.
Four sheets built from public filings: who holds office, who funds them, whose money it actually is once you trace it through the PACs, and what they are all voting on. Every figure is derived from primary sources with its method and confidence recorded — open any sheet's Method & limits tab before citing a number externally.
Every PA House, Senate and executive branch official, mapped by county. Filter by body, party, municipality, 2026 ballot status, leadership post or agency tier.
The summary view. Corporate versus individual split by politician, money by industry, the PAC funding chains, and the full method and limitations record.
The complete record. Search any politician or any donor, then walk the network in either direction — who funded them, and who else that donor funds.
Every bill and resolution of four Pennsylvania legislative sessions, 2019-2020 through 2025-2026, each clickable through to its record — and linked in both directions to the members who sponsored it. Switch sessions from the header.
given by a single individual — Jeffrey Yass — all of it to PACs, routed through a layered network (Students First PAC to Commonwealth Children's Choice Fund to Commonwealth Leaders Fund). Traced pro-rata, $3.87M of it reached candidate committees. Restated 2026-09-29: the earlier $71.25M counted the same dollars at each layer.
the ratio by which building trades union PACs ($23.5M) out-give contractor PACs ($0.93M) in direct contributions to Pennsylvania candidates. Excludes contractor owners giving as individuals. Restated 2026-09-29 from a withdrawn 10 to 1.
sponsor signatures now resolve to a named member and district across 4,598 measures in four sessions, covering everything that passed a chamber, was vetoed, or was enacted. 1,748 measures touch construction, labor or procurement directly — an eight-year record of who signed what.
| Jurisdiction | Source | Refresh |
|---|---|---|
| Pennsylvania | Dept. of State full campaign finance export | Periodic restatement |
| Philadelphia | City campfin_contributions API | Near real time |
| Federal | FEC bulk files, filtered to PA | Weekly (Sunday) |
| Officeholders | PA General Assembly and pa.gov, cross-verified | Weekly |
| Legislation | PA General Assembly record, harvested via LegiScan | Per session sitting |
| Prior sessions | Same pipeline, seats corrected to the session being described | Once, on load |
Donor classification is derived. No jurisdiction publishes a reliable corporate-versus-individual flag — Pennsylvania has no such field, Philadelphia's is 92% unspecified, and only the FEC's entity code is dependable. Every row carries its method and a confidence score.
Totals use primary rows only. 46% of Philadelphia dollars duplicate a Pennsylvania state row for committees that file in both places. Duplicates are flagged, never deleted.
Donor entities are resolved conservatively. A wrong merge invents an influence claim, so borderline matches go to a review queue. Each name variant is keyed by name plus ZIP or state and employer, so same-named people in different places are kept apart; the 2026-08-04 build collapsed them, the current build does not.
Sponsor coverage on LT-04 is partial by design. Every measure of all four sessions is listed, but full cosponsor rosters are loaded for the measures that passed a chamber, were vetoed, or were enacted. The sheet marks which is which; it does not present partial coverage as complete.
A district does not name the same person in every session. LT-04's historical sessions identify members from the bill records of that session, not from today's roster. The source stamps each sponsor with the seat they hold now, so 20 members who have since changed chamber or been renumbered by the 2022 redistricting are refiled under the seat they actually held - for 2021-2022 and 2019-2020 by matching every sponsor against a per-session roster of who held each seat, cross-checked against election and special-election results. A seat that changed hands mid-session names everyone who sponsored from it. Do not read a historical district as the member who holds it now.
LT-04's two oldest sessions predate the current district map. 2021-2022 and 2019-2020 ran under the pre-2022 legislative map. Those district numbers do not describe the same ground as today's — HD-189 then is not HD-189 now. The sheet therefore withholds county geography and current-occupant labels for those two sessions rather than joining data across incompatible maps. Treat a district number there as a label for a person, not a place.