Inspiration

We've all heard the stat: voter turnout in America is embarrassingly low. But the deeper problem isn't apathy - it's information friction. Ask anyone on the street how their senator voted on the last major bill. They'll shrug. Not because they don't care, but because finding that answer means navigating congress.gov, decoding bill numbers, cross-referencing roll call votes, and somehow translating legislative jargon into something a human can actually understand.

That friction is a tax on democracy. VoteTrace was built to eliminate it.


What it does

VoteTrace turns your home address into a real-time civic dashboard in under 30 seconds:

  1. Enter your address → Google Civic API identifies your exact federal representatives
  2. See their recent votes → Live data pulled from the Congress.gov API
  3. Click any vote → Claude generates a neutral, two-sentence plain-English explanation of what the bill actually does — no spin, no partisan framing
  4. Personalize it → Tell the app a bit about yourself — your job, family situation, financial context — and every explanation gains a second paragraph: what this bill might mean for your life specifically

No login. No homework. Just answers.


How we built it

Layer Technology
Frontend Next.js + Tailwind CSS
Rep Lookup Google Civic Information API
Voting Records api.congress.gov
Bill Explanations Claude (Anthropic API)
Deployment Vercel

The core insight was that three APIs that had never talked to each other could be chained into a single seamless flow. Google Civic resolves an address to bioguide IDs. Congress.gov maps those IDs to recent roll call votes. Claude takes the bill title and summary and returns something a voter can actually read.

The personalization layer adds a second dimension entirely. Users describe themselves in plain language — "I'm a public school teacher with two kids and student loans" — and Claude incorporates that context into every explanation. Generic civics becomes something that actually hits home.


Challenges we ran into

  • API chaining latency — stitching three live APIs in sequence without making the UI feel slow required careful async handling and progressive loading states
  • Bioguide ID mapping — Google Civic returns rep identifiers that don't directly match Congress.gov's member endpoints; building that bridge took more digging than expected
  • Keeping Claude neutral — prompt engineering to ensure explanations were genuinely nonpartisan regardless of how politically charged the bill was took serious iteration
  • Rate limits — Congress.gov's free tier is aggressive; we had to implement caching to avoid hitting walls during the demo
  • Personalization without bias — making "what does this mean for me" feel genuinely relevant without letting it drift into partisan framing required careful prompt design and extensive testing across user profiles

Accomplishments that we're proud of

  • A demo that works live, end-to-end, on any U.S. address in under 30 seconds
  • Claude explanations that are genuinely readable — we tested on non-technical friends and they got it immediately
  • A personalization layer that makes federal legislation feel relevant to a real person's actual life
  • Clean, minimal UI that gets out of the way and lets the data speak
  • Zero partisan framing across every bill and every user profile we tested

What we learned

Civic data is shockingly accessible — the raw ingredients for full government transparency already exist publicly. The gap isn't data, it's product. Nobody had built the last mile.

We also learned that prompt engineering for neutrality is its own discipline; getting Claude to explain a politically charged immigration bill the same way it explains a highway funding bill required more nuance than we expected. And personalization made that harder — when a user tells you they have student loans, it's easy for the model to subtly editorialize. Getting genuinely useful personal context without any partisan lean was the hardest engineering problem on the AI side.


What's next for VoteTrace

  • State legislature support — federal reps are just the start
  • Vote history timelines — see how your rep's positions have shifted over time, and whether their votes match what they campaigned on
  • Email/SMS alerts — get notified when your rep votes on issues relevant to your personalization profile
  • Missed vote tracking — absences are votes too
  • Bill comparison — side-by-side explanations of competing versions of the same legislation
  • Saved profiles — persist your personalization context across sessions so every visit is already tailored to you

The infrastructure for an informed electorate already exists. VoteTrace is just making it usable.

Built With

  • claude-api-(anthropic)
  • congress.gov-api
  • google-civic-information-api
  • next.js
  • react
  • tailwind-css
  • typescript
Share this project:

Updates