- Updated: May 1st, 2026 -
The American Energy Scorecard educates lawmakers about the most important energy votes of the year and empowers the American people to hold their elected officials accountable for the decisions they make in Washington.
The Scorecard backend lived in a custom WordPress plugin that originally integrated ProPublica’s Congress API (now sunset). I inherited that codebase and did a substantial rewrite for api.congress.gov so ingestion, normalization, and persistence matched new endpoints, new constraints, and new gaps compared with the older integration.
The rewrite wasn’t only “swap the base URL.” The new API didn’t offer the same breadth in practice, so I implemented additional chamber-specific requests (House vs Senate) to rebuild committee coverage the UI depended on. Some sources like chamber votes and bills weren’t JSON-first: I handled raw XML, parsed it into structured data, and moved it through PHP so it could be merged with the rest of the pipeline and written into the WordPress database as individual rows for votes, members, and committees.
On the WordPress admin side, the product already relied on Key Votes and Bills CPTs to connect organizational intent to legislative reality (I didn’t author the original CPT scaffolding). As the data model changed, I updated and expanded both: Key Votes for the editorial layer around what counts for the Scorecard, and Bills for the items AEA expected members to take positions on, so the site could track “what we asked for” alongside “what happened on the floor.”
Public-facing exploration ran through DataTables inside plugin templates, fed by AJAX reading from the local database. Updates were intentionally manual in admin (fetch current data on demand) rather than cron-driven, matching how the team wanted to operate the integration day to day.