Inspiration

The CivicLens Journey: From Global Noise to Local Action


The Spark

We’ve all seen it: a 500-comment thread on social media arguing about global politics, while the pothole on the corner of the street stays there for six months because nobody knows how to talk to their neighbors. We were inspired by the Proximity Paradox—the idea that we are more connected to strangers 5,000 miles away than to the people living 50 feet from our front door. We wanted to build a Digital Town Hall that turns down the global volume and focuses on the streets we actually walk on.

How We Built It

Building a geospatial deliberation engine in a single day required a focused tech stack:

  • The Map: We used React with Mapbox GL JS to create the Pulse Map, where issues are physical coordinates rather than just rows in a database.
  • The Backend: We utilized PostgreSQL with the PostGIS extension. This allowed us to run spatial queries to ensure users were only voting on issues within their verified neighborhood radius.
  • The Brain: We integrated Google Gemini as a Socratic Moderator. Instead of censoring users, the AI analyzes sentiment and nudges participants toward constructive policy discussion when the heat gets too high.

The Math of Fairness

To prevent the loudest voice from dominating the neighborhood, we implemented Quadratic Voting. In standard systems, one person equals one vote, which is easy to spam. In CivicLens, if you want to exert more influence on a specific solution, it becomes exponentially more expensive in terms of your limited Civic Credits:

$$Cost = (\text{Votes})^2$$

For example, if a resident feels so strongly about a new park layout that they want to cast 3 votes, it costs them 9 credits. This mathematical constraint forces users to prioritize the issues they care about most, ensuring a more balanced and thoughtful community consensus.

Challenges We Faced

The biggest hurdle was Spatial Noise. If 50 people report the same broken streetlight, the map becomes an unreadable mess of pins. We had to implement a clustering logic to aggregate these points into a single Issue Hub without losing individual user data. Additionally, balancing privacy with verification was tough—we had to ensure users were local through GPS-gating without storing sensitive movement history.

What We Learned

We learned that context changes behavior. On anonymous platforms, people act like trolls. On CivicLens, because the discussion is tied to a map of their own backyard, people act like neighbors. We realized that the secret to better politics is not more speech, but more grounded speech. By limiting influence through math and limiting scope through geography, we found that consensus is actually possible.

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for CivicLens

Built With

  • ai:
  • analysis.
  • and
  • api
  • built-with-frontend:-next.js
  • consensus
  • database:
  • deployment:
  • fastapi.
  • for
  • gemini
  • geospatial
  • google
  • indexing.
  • mapbox-gl-js
  • moderation
  • postgis
  • postgresql
  • socratic
  • tailwind-css.-backend:-python
  • vercel
  • with
Share this project:

Updates