← Back to all officials

About

How PA Elected Officials Watch works

Every number on this dashboard comes from a public source we cite. This page explains where the data comes from, how votes are scored against the WTPPPA platform, and why Pennsylvania's full-time legislature produces more trackable activity than most states.

What this dashboard tracks

We track all 251 current PA state legislators — 50 senators (4-year terms) and 201 representatives (2-year terms), all elected in even years — across two data dimensions:

Data last updated April 29, 2026, refreshed monthly from OpenStates. See Data sources below.

Pennsylvania's full-time legislature

The National Conference of State Legislatures (NCSL) classifies state legislatures into three tiers based on how much time legislators spend on their duties, how much they're paid, and the size of their professional staff. Pennsylvania sits in the top tier — full-time — alongside California, New York, Ohio, Michigan, and a handful of others. About 10 states nationwide reach this tier.

What that means in practice:

This context matters for reading the dashboard. A PA legislator who has introduced 40 bills isn't unusually prolific — the full-time schedule, staff support, and year-round calendar make that volume normal here. In a part-time legislature the same 40 bills would be extraordinary.

State NCSL type Annual pay Session Members
California Full-time $128,341 Year-round 120
New York Full-time $142,000 Year-round 213
Pennsylvania Full-time $106,422 Year-round 253
New Jersey Full-time $49,000 Year-round 120
Ohio Full-time $73,146 Year-round 132
Texas Part-time $7,200/yr 140 days/2 yrs 181
Wyoming Part-time ~$150/day ~40 days/yr 90

Source: NCSL Full- and Part-Time Legislatures · NCSL Legislator Compensation, 2024. Salaries are base pay; some states add per diem, mileage, or leadership stipends. TX legislators meet for 140 days every two years (biennial session) and are compensated primarily via per diem.

Bills enacted per million residents

Raw bill counts mislead. Wyoming's legislature enacts far more bills per resident than Pennsylvania's — not because it's more effective, but because Wyoming has 580,000 people and correspondingly simpler governance needs. Pennsylvania has 13 million residents, a $50B budget, 500 school districts, and policy complexity that requires longer, more contested legislation. Per-capita normalizes for state size so comparisons are fairer.

PA's current session (platform-tracked bills only): 4,051 introduced · 72 enacted (2% of tracked bills). Note: this dashboard tracks platform-relevant bills, not all PA legislation — the comparison table uses full-legislature estimates.

State Type Enacted (2-yr) Population Per million
California Full-time 1,200 39.0M
31
New York Full-time 900 19.7M
46
Pennsylvania← PA Full-time 250 13.0M
19
New Jersey Full-time 500 9.3M
54
Ohio Full-time 280 11.8M
24
Texas Part-time 1,400 30.0M
47
Wyoming Part-time 300 0.6M
517

All figures are approximate 2-year session estimates; sourced from NCSL "Bills Introduced and Enacted" reports and state legislature websites, 2023–2024 sessions. PA (~250) is a conservative estimate for a full session — PA enacts fewer bills than many states due to divided-government dynamics. Population: 2023 US Census estimates. "Enacted" = bills signed into law by the governor.

The small-state per-capita advantage is structural, not a sign of greater effectiveness — Wyoming's 40-day session can move faster partly because its policy space is narrower. The more meaningful question is whether a legislature has the institutional capacity to handle complex, contested policy. That's what the Squire Index below measures.

Legislative professionalism: the Squire Index

Political scientist Peverill Squire developed an index that measures how professionalized each state legislature is relative to the US Congress (which scores 1.0). It combines three factors: compensation (salary relative to median household income), staff (per-member professional staff), and session length (days in session). A higher score means legislators can work more like full-time professionals — deeper expertise, better-staffed offices, more time on complex policy.

Pennsylvania scores ~0.28 — roughly 28% as professionalized as Congress, and among the top 8–10 states nationally. That's what the $106k salary, year-round schedule, and large legislative staff buy you.

State NCSL type Squire score Relative to Congress
California Full-time 0.63
63% of Congress
New York Full-time 0.52
52% of Congress
Pennsylvania Full-time 0.28
28% of Congress
New Jersey Full-time 0.24
24% of Congress
Ohio Full-time 0.19
19% of Congress
Texas Part-time 0.09
9% of Congress
Wyoming Part-time 0.06
6% of Congress

Source: Squire, Peverill. "A Squire Index Update." State Politics & Policy Quarterly 17(4):361–371, 2017. Scores are approximate and rounded; the index has been updated periodically since its original 2007 publication. Congress = 1.0 benchmark.

High Squire scores correlate with more complex legislation, larger staff capacity, and longer bill-drafting cycles — not necessarily more bills enacted per year. CA and NY both score high and enact relatively few bills per capita because their legislatures are doing harder work on larger policy problems.

How votes are scored

What counts as "scorable"
A vote is scorable when (a) the bill has been reviewed by WTPPPA editors and assigned a clear "aligned" or "opposed" designation against a platform position, and (b) the legislator cast a yea or nay vote on the floor. Abstentions and absences are excluded — they don't tell us where someone stands. Mixed-alignment bills (one plank aligned, another opposed) are flagged but excluded from the headline alignment rate.
With vs. against the platform
Voting yea on an aligned bill = with the platform. Voting nay on an opposed bill = also with the platform. The inverse in each case = against. This is symmetric: a legislator who consistently votes against bad bills scores just as well as one who consistently votes for good ones.
The "topic-only" category
Some bills match a platform topic (e.g., they're about education funding) but haven't been reviewed for clear alignment. These show up in the vote history as "Touches platform" and contribute to the total vote count but not the scored alignment rate. As Legislation Watch accumulates more editorial reviews, more votes will resolve into scored calls.
Sponsorship vs. voting
We treat sponsorship as the stronger priority signal. A legislator can be whipped into a party-line floor vote against their preference; choosing to introduce or co-sponsor a bill is a voluntary act. The headline stats on each official card lead with sponsorship for this reason.

Data sources and update schedule

Officials and voting records
Fetched from the OpenStates API (PA state legislature feed) by a GitHub Actions cron job that runs on the 1st of each month. OpenStates aggregates roll-call data directly from the PA General Assembly's official records. Last pipeline run: April 29, 2026.
Bill data and platform matching
Sourced from the same OpenStates feed that powers Legislation Watch. Bills are matched to platform positions using a two-pass keyword + TF-IDF matcher — no AI in the matching loop. Editorial alignment calls (aligned / opposed / mixed) come from WTPPPA officers reviewing matched bills and recording decisions in a version-controlled JSON file.
Geographic lookup (ZIP / address / county)
ZIP-to-district lookups use a pre-built static map derived from PA legislative district shapefiles. Address lookups use the US Census Geocoder (free, no API key, no quota). County-area sampling uses the same Census endpoint across a grid of points to catch all overlapping districts. No data leaves your browser for these lookups beyond what the Census API receives.

Limitations and caveats

A note on AI

We used Claude, an AI assistant from Anthropic, to help write code and draft copy for this dashboard. The data is not AI-generated — every number comes from a public PA or federal source we cite. Bill-to-platform matching uses a keyword and TF-IDF algorithm, not an AI model. Alignment calls are made by WTPPPA editors and stored in version-controlled JSON.

Found this useful? Tip the team.

These dashboards are built and maintained by volunteers. A few bucks helps keep them running and free.

Tip the team