CivicLens — Making Civic Engagement Accessible
What Inspired Us
Most people care about what happens in their community, but government hearings are long, confusing, and inaccessible. A single city council meeting can run three hours. Transcripts are dense. Most residents never find out what was decided — let alone whether their concerns were heard. We wanted to fix that. CivicLens was built for the single mom who can't attend a 2pm hearing, the college student who doesn't know where to start, and anyone who believes democracy shouldn't require a law degree.
What We Built
CivicLens is a full civic participation pipeline: Hearing Ingestion — transcripts from real government meetings are submitted or pulled automatically from YouTube captions AI Summarization — we use a large language model to extract the core issue, key stakeholders, arguments raised, and community impact in plain English Public Comments — residents can submit their thoughts directly on the platform Comment Clustering — AI groups comments into themes and visualizes them as an interactive node graph so you can see what the community cares about most Accountability — once a decision is made, CivicLens compares it against public input and generates an alignment analysis
How We Built It
We used Python and Flask for the backend, SQLAlchemy for our database, and Jinja2 for our frontend templates. AI processing is handled through the Groq API running LLaMA 3, isolated behind a service layer so the rest of the app never touches the AI provider directly. Transcript ingestion uses the YouTube Transcript API to pull captions from public meeting recordings.
Challenges We Faced
Our biggest challenge was getting the AI to return consistent structured JSON. Smaller models kept responding in plain text no matter how strict the prompt was — we solved this by switching to Groq for faster, more reliable inference. Merge conflicts were also a constant battle with three developers working simultaneously on the same files. We learned to communicate before touching shared files and to always pull before pushing.
What We Learned
We learned that civic tech is harder than it looks — not technically, but in terms of data. Finding real, usable transcripts takes effort. Making AI output feel trustworthy to non-technical users takes even more. Most importantly, we learned that the best technology is the kind that gets out of the way and lets people participate.
Log in or sign up for Devpost to join the conversation.