Information about who represents you, politically, is publicly available — but it’s spread across a bunch of different websites. Finding out about your representatives means tracking down a lot of disparate information. If that data was organized in one central location, you’d be able to know a lot more about who those people are and what they do every day. My goal was to find that data, organize it, and make it easy to understand.
No computer science degree. Built independently, with modern development tools and a clear sense of what the work should accomplish. Detroit, Michigan.
CIV.IQ — CIVIC UTILITY LIVE!
Visit CIV.IQ, enter your address and ZIP code, and you can see who represents you in government at the federal and state level — and coming soon, local — along with their voting records, campaign donors, sponsored legislation, committee assignments, and lobbying connections. All of that data is online, it’s just not centralized. The key is where you live, your address. That key unlocks the data.
WHAT YOU CAN DO WITH IT:
- Look up any of the 535 federal legislators and see their full legislative history
- Compare two representatives side-by-side on votes, donors, and bills
- Track bills by policy area with AI-generated plain-language summaries
- Browse state legislature activity for all 50 states
- Access a K–12 civics curriculum built on live government data
- Use the public REST API to build your own civic applications
Civic events detected by the platform are cryptographically signed and distributed via Nostr relays, creating a public record that survives independently of the platform. ActivityPub federation allows fediverse instances to follow civic updates.
STACK: Next.js (App Router), TypeScript in strict mode with zero any types, Redis caching via Upstash, MapLibre GL JS with PMTiles vector tiles, Gemini 2.0 Flash AI summarization, D3.js + Recharts visualization, Zustand state management, Jest + Vitest + Playwright test coverage.
DESIGN: Inspired by Otl Aicher and the Ulm School of Design — 8px grid system, 2px black borders, systematic color palette. No rounded corners, gradients, or shadows.
RELIABILITY: Circuit breaker pattern isolates failures from any upstream API. Multi-tier rate limiting (4 tiers, per-IP Redis tracking). Request deduplication coalesces concurrent identical calls. Sub-2-second page loads, sub-200ms API responses, Lighthouse 95+.
AUTOMATION: Three daily Vercel cron jobs run unattended — RSS news aggregation, AI bill summarization, and Nostr civic event publishing — writing to Redis and distributing to external relays without manual intervention.
PLAIN LANGUAGE: All AI summaries tracked against PlainLanguage.gov guidelines using Flesch-Kincaid scoring (target: grade 8 or below).