Inspiration

My partner and I are both kids of immigrants. We witnessed our parents fight to be heard in community gatherings, school boards, and public dialogues, not due to a lack of valuable insights, but because language obstacles and intricate systems marginalized them.

We have observed directly how immigrant groups are consistently marginalized in civic participation. Survey forms are available exclusively in English. Feedback systems that overlook cultural communication styles. Policymakers who are unable to recognize the patterns of inequality in their own data due to a lack of tools to reveal them.

CivicLens is our answer to a question that shaped our childhoods: What if AI could break down the barriers our parents faced and ensure every community member's voice is truly heard and understood?

What it does

CivicLens transforms multilingual civic feedback into actionable insights for policymakers.

Upload feedback → Text, CSV files, or documents in any language

AI processes it:

  • Translates non-English feedback (OpenAI GPT-5)
  • Analyzes sentiment (positive/neutral/negative)
  • Rewrites in inclusive, policy-ready language
  • Tags demographics (language, age, income, location)

Dashboard reveals:

  • Sentiment distribution across communities
  • Representation gaps (e.g., "Spanish speakers report 40% more negative sentiment")
  • Actionable recommendations for equitable engagement

Export results as CSV or PDF for policymaker presentations

How we built it

Frontend: React + TypeScript, Tailwind CSS, Shadcn/ui components, Recharts for visualizations

Backend: Express.js with OpenAI GPT-5 API for translation, sentiment analysis, and inclusive rewriting

Database: Supabase (PostgreSQL) with Drizzle ORM for type-safe queries

Key features:

  • Async processing pipeline: Upload → translate → analyze → rewrite → visualize
  • Custom demographic tagging algorithm detecting language, age, income, location markers
  • Representation gap detection: Flags groups with <40% positive or >30% negative sentiment

Challenges we ran into

1. API Cost Management - OpenAI calls add up fast. Solution: Implemented smart caching and batch processing with delays.

2. Multilingual Sentiment Accuracy - Sentiment models work best in English. Solution: Always translate first, then analyze.

3. Database Configuration - Supabase connection strings are tricky. Solution: Created custom setup scripts with clear documentation.

4. Defining "Representation Gaps" - What threshold matters? Solution: Set data-driven benchmarks (<40% positive or >30% negative) after testing.

5. Ethical AI Concerns - How to rewrite without censoring? Solution: Always show original text alongside AI rewrite for transparency.

Biggest lesson: Focus beats features. A working demo that clearly solves a real problem beats an incomplete feature list every time.

Accomplishments that we're proud of

We built a tool that could have helped our parents. That's the accomplishment that matters most. But we're also proud of:

  • Full-stack TypeScript application shipped in a hackathon timeframe: frontend, backend, database, and AI integration all working together
  • Real multilingual processing
  • Actionable insights not just data: the dashboard doesn't just show charts, it tells policymakers exactly which communities need attention
  • Ethical AI design—we always show original text alongside rewrites, maintaining transparency and trust
  • Type-safe architecture—using Drizzle ORM and Zod validation means fewer bugs and faster development

Most importantly, we proved that AI can amplify marginalized voices instead of replacing them.

What we learned

Technical lessons:

  • API costs matter—OpenAI calls add up fast; caching and batch processing are essential
  • Translation first, analysis second—sentiment models work best in English, so always translate before analyzing
  • Type safety saves time—shared TypeScript types between frontend and backend prevented countless bugs
  • Focus on the core loop—we cut voice input, real-time collaboration, and advanced NLP to ship a working MVP

Personal lessons:

  • Building for communities you understand is powerful—our immigrant background gave us unique insight into the problem
  • Ethical AI requires transparency—showing original + rewritten text side-by-side builds trust
  • Data-driven thresholds matter—defining "representation gaps" required testing and iteration, not assumptions

What's next for CivicLens

Short-term:

  • Voice input with OpenAI Whisper for audio feedback
  • Advanced filtering by date, sentiment, and demographic
  • Multi-language dashboard interface

Long-term vision:

  • Partner with city councils and school boards for pilot programs
  • AI-powered policy recommendations based on sentiment trends
  • Show citizens how their feedback led to real policy changes
  • Expand to 100+ languages and partner with international civic organizations

Impact goal: Help 50 municipalities identify and address 10,000+ representation gaps in the first year.

Built With

Share this project:

Updates

Submission history