

Civic Engage: Contact your representative
Civic Engage
Turning complex legislation into civic action through AI-powered simplification
Most Americans cannot read the legislation that governs them. CivicEngage is my free, non-profit web app that translates federal and state bills into plain language and connects people directly to their representatives. I designed it, built every layer of the stack, shipped it, and have kept rebuilding the parts that were not good enough.
174
Active users in 5 mo
1,200+
Tracked interactions
46
Users arriving through organic Google search
Role:
Founder, full-stack product designer and developerAI integration to translate legislative complexity into accessible summaries
Scope:
End to end
Research, design
Architecture
Build
Deployment
Measurement
Tech Stack:
React, Node.js, Express
AI/NLP: Google's Gemini API
Database: Supabase
APIs: Google Civic Information API, Congress.gov API, Legiscan API
Deployment: Render
Live Site: civicengage.me
THE PROBLEM
When Democracy Feels Out of Reach
I kept seeing people say they wanted to be more civically engaged but didn't know where to start, and I felt it myself. Congressional approval ratings consistently hover below 20%, yet the problem isn't that people don't care about legislation. It's that participating feels impossible.
The barriers are concrete.
Bills average 50+ pages of dense legal terminology
No easy way to understand what legislation actually does
Finding your representative requires navigating multiple websites
Writing effective advocacy messages takes time most people don't have
The frustrating part is that participation actually works. Organized constituent outreach increases legislator support by 12 to 20 percent, and congressional staffers report that fewer than 50 personalized messages can influence an office's position. The system listens. People just can't get to it.
The opportunity was clear: Remove the barriers between citizens and their representatives.
RESEARCH AND DISCOVERY
Understanding the Gap
Rather than building on assumptions, I grounded the project in civic engagement research and public data. Gallup polling shows persistent congressional disapproval, which signals disconnect rather than indifference. Academic studies demonstrate that constituent communication works at both state and federal levels, and congressional staff surveys reveal that personalized messages carry far more weight than form letters.
The competitive landscape confirmed the gap. Congress.gov and GovTrack are comprehensive legislative databases, but they present bills in full legal text and assume users can parse it. That assumption is precisely the barrier preventing engagement. Nothing in the space did the translation work.
Four design principles came out of this research, and every later decision had to pass them:
Simplicity over comprehensiveness: show what matters most
Privacy by default: no accounts, no data storage
Progressive engagement: guide from awareness to action
Accessibility: make participation possible for everyone
Privacy by default was the expensive one. A stateless, no-account design meant giving up the easiest ways to measure my own product, and I chose it anyway because every step between arriving and acting is a reason to leave.
DESIGN SOLUTION
Three Steps from Awareness to Action
I designed CivicEngage around a single question: what does someone need to go from "I care about this" to "I've contacted my representative"?
Understand the Bill

Find Your Representatives
Take Action
Designing for Trust
The original UI was functional but visually generic, and a tool about legislation has to feel serious and trustworthy. In v2.1 I built a full design system around an editorial civic-journalism aesthetic, closer to Politico Pro and C-SPAN than to a SaaS dashboard: a navy and cream palette, dark editorial heroes, and hierarchy through type scale rather than decoration.
The redesign also fixed interaction problems. Blocking modals for representative lookup and contact became side drawers, so users keep the bill they care about in view while they act on it.

Technical Architecture for Privacy and Scale
This is a fully custom build across the entire stack, not a scaffold or a no-code tool. React frontend with a custom router, Node and Express orchestrating four external APIs, Supabase for bill storage, Gemini for summarization, deployed on Render.
The hardest problem wasn't architecture. It was trust, because an AI tool that misstates what a bill does is worse than no tool at all. I engineered structured prompts that force every summary into the same neutral format, with named sections, no editorializing, and consistent reading level, and verified outputs against the source bill text.
Reliability also meant designing for failure. Fallback handling degrades to official bill data when the API misbehaves, so the app never shows something wrong in place of something true.
Even model selection was a lesson in operational AI. I cycled through three Gemini models that failed on quota limits or deprecated endpoints before landing on a flash-lite model with a genuine free tier, the kind of detail that never appears in a demo but decides whether an AI product stays up.
I launched on Heroku with DynamoDB, and real usage exposed both choices. Bill data is fundamentally relational, and DynamoDB's composite keys were creating duplicate records every time a bill updated.
In v2.0 I migrated to Render and Supabase. PostgreSQL fit the data model, Render's native cron containers replaced scheduled jobs running inside the web process, and each cron script now acquires a database lock to prevent overlapping runs.
Scope grew deliberately. Federal bills shipped first, then state legislation through the LegiScan API, which required more refactoring than it should have because I hadn't designed for it upfront.
Zero personal data stored, no authentication required, fully stateless. Nothing about the user is persisted, which is both an ethical stance and a UX decision.
Solving Real Challenges
The Challenge: Early AI summaries varied in quality—sometimes missing key information or using inconsistent formatting.
The Solution: Developed structured prompts with explicit instructions for format, tone, and required sections. Iterated on prompt engineering until outputs were consistently clear and user-friendly.
The Challenge: Congressional API rate limits could impact user experience during high-traffic periods.
The Solution: Implemented intelligent caching in DynamoDB to store processed bills, minimizing API calls while maintaining information freshness through scheduled updates.
The Challenge: Representative information changes with elections and redistricting.
The Solution: Leveraged Google's Civic Information API rather than maintaining a custom database.

RETROSPECTIVE
Key Learnings
Effective civic technology isn't about complexity—it's about removing barriers. By focusing relentlessly on simplicity and user privacy, Civic Engage makes civic participation accessible to people who previously felt excluded from the legislative process.
What I'd Do Differently
User Testing Earlier: While the research validated the problem, testing prototypes with actual users would have surfaced usability improvements sooner.
Analytics from Day One: Anonymous usage tracking would help validate which features drive the most engagement.
Modular Architecture: Building with state-level expansion in mind from the start would reduce future refactoring needs.
Reflection
Building Civic Engage end-to-end deepened my appreciation for the intersection of design and engineering. Every design decision had technical implications, and every technical constraint shaped the user experience.
This holistic perspective strengthens my ability to collaborate with engineering teams and design solutions that are both user-centered and technically feasible—exactly the approach that drove success in my work at ProductPlan and Bright Horizons.
Visit the Platform
Live Site: civicengage.me
Support the Project: Donation link available in footer (excess funds donated to ACLU)
Built with: React, Node.js, Express, DynamoDB, Google Gemini API, deployed on Heroku


Bridging the Gap in Strategic Planning with ProductPlan
Driving strategic alignment with 54% month to month retention boost with portfolio visualizations

Curriculum Management for School and District Admins
Increasing Daily Active Usage by 15% through optimization of curriculum management
Let's build something worth reading about.
Thank you for your interest in my work. Let’s connect!






