A few weeks ago I was doomscrolling and feeling some type of way about... waves indiscriminately at the state of the world. The thing that always gets me during times like these is feeling like there's nothing I can do about any of it.
So I had a good think about what I actually can do. And I landed on something that's been bugging me for years: contacting your elected representatives is unreasonably hard. You have to dig through multiple government websites to figure out who represents you, find contact info in outdated directories, and then stare at a blank text box wondering what to even say. It's enough friction that most people just... don't.
I'm a software engineer with almost 10 years of web development experience. I can't fix policy but I can fix a bad user experience. So I built Democracy Direct.
What it does right now
You put in your ZIP code and see your two senators and your representative with their contact info and social media links. You can save your district so you don't have to look it up every time.
The feature I'm most excited about is letter templates. Somebody writes a good letter about healthcare or housing or whatever, and other people can grab it, customize it, and send it. One person's effort becomes a tool for a lot of people. Templates can be public or private, and they include short descriptions so they show up well in search results and social sharing. No account needed to browse or use templates. Your messages never touch the server, everything stays on your device.
What's coming
Next up is voting records and legislation tracking. I want you to be able to see how your reps actually voted, search bills, read plain-language summaries, and link letter templates directly to specific legislation. After that, campaign finance data and an interactive district map. Longer term the goal is to expand beyond federal to cover state legislators and local officials too.
The roadmap is public: democracy-direct.com/roadmap
Privacy first
This was non-negotiable from the start. ZIP code lookups happen entirely in your browser using pre-loaded data. We never see what you search. If you create an account, your email gets hashed with SHA-256 before it's stored. We can't recover it even if we wanted to. Letters you write never touch the server. Analytics are anonymous through PostHog with no session recordings and no way to link usage data back to you.
Cloudflare Turnstile keeps bots from spamming the template system, and I'm using AI moderation to help with content review so one person can actually run this thing without drowning in moderation work.
The stack
I wanted to move fast, ship something that loads fast, and deploy to Cloudflare Pages. That meant Astro with React and TypeScript, which is also the sweet spot for working with AI coding agents. I've been building most of this with Claude Code and experimenting with Ralph loops throughout the project with varying degrees of success. When it works it's like having a junior dev who never sleeps. When it doesn't you're cleaning up some truly creative messes.
The database is Neon PostgreSQL. On-demand compute, easy branching and replication per PR, and a generous free tier. Authentication is OTP codes via AWS SES. No passwords to manage, no passwords to forget, no credential stuffing to worry about.
Representative data comes from public sources: unitedstates/congress-legislators for federal, Open States for state legislators, and the U.S. Census Bureau for ZIP code mapping.
Building in public
The whole thing is open source under AGPL because civic infrastructure should be auditable and forkable. No ads, no sponsors, no premium tier, no data sales. Funded by donations if you're into that sort of thing.
Democracy Direct is independent. No party, no PAC, no nonprofit. Just a frustrated engineer who decided to build something instead of doomscroll.
Code's at github.com/anomalousventures/democracy-direct. Contributions welcome, whether that's code, templates, bug reports, or whatever. If it's useful to you, share it with someone who'd use it. The whole point is making it easier for people to be heard.
Top comments (0)