Inspiration

In today’s political climate, many constituents feel disconnected from the people elected to represent them. While elections happen every few years, everyday concerns about healthcare, housing, safety, and the cost of living often feel unheard in between. Traditional channels such as emails, phone calls, and forms are fragmented, opaque, and rarely feel collaborative or transparent.

We were inspired to build Agora as a modern, open platform where constituents can clearly and easily voice their concerns, see what others in their community care about, and engage in civic dialogue without their messages disappearing into a void. Just as the ancient Agora was a public space for discussion and democracy, we wanted to create a digital one for today.

What it does

Agora allows constituents to share their concerns and questions with their representatives in a transparent, structured, and community-driven way.

Users can:

  • Submit concerns or questions in natural language
  • Have their input automatically categorized by topic and intent
  • View recurring themes and issues raised by others in their community
  • Participate in an open civic forum that highlights what matters most locally

By structuring and aggregating individual voices, Agora transforms scattered messages into actionable, collective insight.

When users log in, they are taken to a central intake screen where they can type or speak their concerns directly into the platform. Users can also call a dedicated phone number, verify themselves using a unique PIN, and have their concerns or questions processed through the same system.

Additional tabs allow users to:

  • See who their elected representatives are based on their home address
  • Search for a specific representative and view how they have voted on issues important to their community

Together, these features make civic engagement more accessible, informed, and transparent, thus bridging the gap between constituents and their representatives.

How we built it

Agora is powered by a modular, multi-agent backend that integrates AI, telephony, and web technologies to create a real-time civic voice assistant.

Multi-Agent Backend Architecture

We designed the backend around a set of specialized agents, each responsible for a distinct part of the civic engagement workflow. For example, the ConcernHandler agent logs and analyzes constituent concerns, while the QuestionHandler agent processes questions and retrieves similar queries.

A central orchestrator agent coordinates the pipeline by routing incoming input to the appropriate agent. Agents can also invoke one another when needed (for example, the QuestionHandler calling a RAG agent to retrieve relevant information). This modular architecture allowed us to iterate quickly while keeping the system extensible and maintainable.

Voice Agent & Telephony Integration Our Python-based voice agent uses LiveKit’s real-time audio and telephony APIs, enabling users to interact with Agora through phone calls or web sessions. The agent transcribes speech, classifies intent, and responds using text-to-speech, creating a natural, conversational experience even for users without access to a laptop.

AI & Natural Language Understanding We leveraged large language models (OpenAI GPT-4o-mini and Gemini) for intent classification, topic detection, and response generation. Each agent processes messages independently, generates embeddings, and analyzes similarity across inputs, enabling context-aware and personalized interactions.

Database & Embeddings We used Supabase as our backend database to store user messages, embeddings, and metadata. These embeddings allow us to match similar concerns across users and districts, surface trends, and identify recurring community issues over time.

Frontend The frontend, built with Next.js and React, provides a clean and intuitive interface for submitting concerns, speaking with the voice agent, discovering trends, and exploring representative information.

Development Workflow (TRAE IDE) We built the entire project using TRAE as our primary IDE, and it became a core part of our development workflow. TRAE’s AI-assisted coding and navigation tools helped us rapidly prototype agent logic, refactor backend pipelines, and debug complex interactions between services.

Because we were working across Python, TypeScript, SQL, and cloud integrations, TRAE made it easier to stay productive and focused while switching contexts. It allowed us to move faster, experiment confidently, and maintain clarity in a multi-agent, multi-language codebase (especially under hackathon time constraints).

Cloud Infrastructure LiveKit Cloud handles all real-time communication, ensuring scalability and reliability. Environment variables and secrets are managed securely to support rapid deployment and iteration.

Challenges we ran into

One of the biggest challenges we faced was managing AI hallucinations, particularly when generating links or referencing external data. Ensuring accuracy and preventing the system from confidently producing incorrect information required careful prompt design and output validation.

On the frontend, UI design proved to be more challenging than expected. Creating an interface where multiple components (intake, discovery, and representative information) flowed intuitively took several iterations to get right.

From a systems perspective, coordinating multiple AI agents introduced complexity. Designing reliable agent interactions, determining clear responsibilities, and fine-tuning outputs for consistency and usefulness required thoughtful orchestration and extensive testing.

Integrating a voice agent added another layer of difficulty. We worked with cutting-edge speech technology that had limited documentation, which meant frequent experimentation and troubleshooting to achieve a smooth, real-time experience.

Finally, defining the overall agent orchestration pipeline was a major challenge. We ultimately settled on a master orchestration agent that coordinates between the voice, classification, and retrieval agents, which allowed us to maintain flexibility while keeping the system modular and extensible.

Accomplishments that we're proud of

  • Building a working end-to-end system that transforms raw constituent input into structured civic insight
  • Designing a scalable, agent-based backend that can grow with additional capabilities
  • Creating a platform that emphasizes transparency and collective voice rather than one-way communication
  • Translating a complex civic problem into a tangible, usable product in a short time

What we learned

We learned how powerful AI can be when used as an organizing tool rather than a replacement for human voice. Instead of generating opinions, Agora focuses on amplifying and structuring real ones.

On the technical side, we gained experience designing multi-agent systems, integrating frontend and backend workflows, and handling ambiguous, real-world user input.

What's next for Agora

Next, we want to:

  • Add representative-facing dashboards to highlight trends and recurring concerns
  • Support verified representative responses and follow-ups
  • Expand moderation and trust mechanisms to maintain healthy civic discourse

Our long-term vision is for Agora to become a bridge between constituents and representatives, thus making civic engagement more transparent, accessible, and impactful.

Built With

  • cartesia
  • flask
  • geminiapi
  • googlecivicinformationapi
  • googlesearchgroundingtool
  • langchain(textsplitting)
  • livekitcloud
  • next.js
  • openai-embedding-models
  • pgvector
  • postgresql
  • python
  • radixui
  • sentencetransformers(embeddings)
  • stripe-identity-verification-api
  • supabase
  • tailwindcss
  • trae
  • typescript
  • vercel
  • wikipedia-api
Share this project:

Updates