Projects

↩ Warp back to the vault ↩ View all projects            

Rep Connect: Case Study

Overview

Rep Connect is a civic tech web app that lets anyone look up their elected representatives across all levels of United States government by entering a ZIP code. My goal was simple: provider regular people — not lobbyists or policy professionals — an easy, no-login way to find who represents them and how to reach them.

 

Stack: Vanilla HTML, CSS, and JavaScript with no framework, no build tools, and no backend. Everything runs in the browser from a single self-contained file.

 

Data Sources:

  • OpenStates public CSV downloads for state legislators and executive officials

  • @unitedstates/congress-legislators for federal representatives

  • OpenSourceActivismTech/us-zipcodes-congress for ZIP-to-congressional-district mapping

  • Embedded fallback dataset for governors where live data is unavailable

Product

A fully self-contained single HTML file (no backend and no API key required) that pulls live data on:

 

  • Federal reps: both U.S. Senators and the House Representative for the entered ZIP, with photos

  • State Executive: Governor and statewide officials, with an embedded fallback for states where live data isn't available

  • State Legislature: Full searchable list of state legislators, with a deep link into OpenStates for exact district matching by address

  • Local Government: Curated links to Ballotpedia, USA.gov, and Google for city/county officials

Why It Matters

Civic participation starts with knowing who to call, but for most people that information can be difficult to find. It's scattered across government websites, buried inside tools built for professionals, or gated behind accounts and sign-ups that add friction before anyone has even asked a question. When these tools do exist on official government pages, they're often embedded inside dense, outdated sites that feel intimidating to navigate, with poor layouts, unclear labels, and walls of text that make the design itself a barrier. The information is technically there, but the experience makes people feel like they're doing something complicated when they're not.

 

That gap has real consequences because constituent contact is one of the most direct forms of political pressure available to ordinary citizens, and research consistently shows it works. Offices track call volume and representatives pay attention to it, so the problem isn't that people don't care about who represents them; it's that the infrastructure for acting on that care is poorly designed for regular use, and the interface has never been built with a regular person in mind.

 

Rep Connect is built on the premise that a tool this fundamental should be frictionless and feel good to use: one input, immediate results, no account, no cost, and a clean, modern interface that doesn't make civic engagement feel like filing taxes.

Who It's For

Rep Connect is built for anyone who has ever wanted to contact their representative but didn't know where to start: the first-time voter trying to understand who actually represents them at each level of government, the parent who wants to call about a school funding bill, the person who just watched something upsetting in the news and wants to do something about it.

 

These are folks who care but have never had a tool that felt built for them. Most civic tools assume a baseline of political literacy that a lot of people simply don't have yet, and Rep Connect is designed to meet people where they are rather than where the system expects them to be.

Lessons Learned

The project started with the Google Civic Information API as the backbone for representative data, which offered clean, reliable lookups by address. When that API was discontinued, it meant rebuilding the data layer from scratch mid-project and finding alternative sources that could cover the same ground without requiring an API key. That pivot led to OpenStates' public CSV downloads and the @unitedstates/congress-legislators dataset, which ultimately made the tool more resilient since it no longer depends on a single external service that could disappear at a moment's notice.

 

The transition also surfaced a harder lesson about public civic data: it's often messier than it looks on paper. OpenStates is well-documented and widely used, but its CSV exports turned out to be inconsistent for executive-branch officials like governors, something that only became clear once the app was running against real state data. The fix was an embedded fallback dataset with a "verified May 2026" label, so the State Executive section always populates rather than showing an error. It's a pattern worth carrying forward: assume gaps exist in any public dataset and build graceful fallbacks before users run into them.

 

On the product side, discovering Plural was a useful forcing function. It pushed a more honest reckoning with what Rep Connect actually is and who it's actually for, and the answer turned out to be a clearer and more defensible position: a tool for regular people, not a platform for professionals. Sometimes a competitor clarifies your own thinking more than any amount of upfront planning.

↩ Warp back to the vault ↩ View all projects