Officials, legislation, AI voice chat, and moderation in one product.
The challenge
Most civic products either expose raw public data without useful context or bolt AI onto a narrow chat surface. Pinpoint needed to unify officials, legislation, surveys, community features, and moderation across mobile and web without becoming a pile of disconnected screens.
How we built it
I built the stack around Expo, Express, Prisma, and PostgreSQL, then added direct Firebase token verification via Google JWKS, SSE-based Gemini chat, text-to-speech proxying, civic-data search proxies, and a durable moderation ledger. On the product side, the interface centers on a swipe-based dashboard, deep links, and dedicated admin workflows.
What shipped
The result is a real platform rather than a civic-tech demo: one codebase serves iOS, Android, and web, AI chats stream with voice responses, moderation decisions stay auditable, and the release process is backed by CI, secret scanning, and reliable Railway deploys.
Outcomes
- Shipped one shared product across iOS, Android, and web instead of a disconnected set of prototypes.
- Built streaming AI official chat with personality modes and ElevenLabs voice responses.
- Added durable moderation workflows, searchable civic data proxies, and an operator-facing admin dashboard.