Inspiration

These days, when people see something wrong in their community (a pothole, illegal dumping, a broken streetlight) they're more likely to film it for TikTok than actually report it. And honestly? That's not laziness. That's friction. Most people don't know that their noise complaint carries a 24-hour response obligation, or that illegal dumping violates specific NZ legislation that the council is required to act on. So even when someone does file a complaint, it often gets lost, ignored, or bounced between departments. CivicOS was built to fix both sides of that problem: giving citizens the legal weight they didn't know they had, and giving councils a clearly routed, formally worded report that lands in exactly the right department's inbox with no ambiguity about whose responsibility it is.

What it does

CivicOS lets citizens report local issues in seconds using a photo, voice note, or text. You don't need to know who to contact or how to word a formal complaint; just describe what you see. Our AI classifies the issue, attaches the relevant NZ legislation that makes it the council's legal obligation to act, routes it to the correct department, and sends a professionally worded email on your behalf. You get CC'd so you have a paper trail, and you can check your report status anytime. No bureaucracy knowledge required.

How we built it

We built CivicOS on AWS with a fully serverless architecture. Citizens submit reports through a frontend that uploads files to S3. A Lambda function runs the AI pipeline: voice notes go through Amazon Transcribe, images and text go straight to Amazon Nova, which classifies the issue into one of five categories and outputs structured JSON. That data flows through DynamoDB to a second Lambda that attaches hardcoded NZ legal citations relevant to the issue, routes the report to the correct council department, and sends a formally worded email via SES. The citizen gets CC'd automatically. The whole pipeline is event-driven and runs without any manual intervention.

Challenges we ran into

AWS SES (Simple Email Service) starts every account in sandbox mode by default. In sandbox mode you can only send emails to addresses you've manually verified, meaning if a citizen submits a report with their email, SES will refuse to send to it unless that exact email was pre-approved. To send to anyone, you have to apply for production access, which requires AWS to review and approve your account. This is AWS's way of preventing spam, but it means for the demo our email pipeline only works with one pre-verified address rather than any citizen's real email.

Accomplishments that we're proud of

We built a fully working end-to-end pipeline in under 10 hours. A citizen with zero knowledge of council structure or NZ law can leave a 30-second voice note and generate a formal complaint that references specific acts of Parliament, and it lands in exactly the right department's inbox. No manual steps. No human routing. What we're most proud of is that this isn't just a polished UI sitting on top of nothing. The legal research is real. The routing logic is real. The emails are genuinely something a council would have to take seriously. We also built multimodal input from scratch: photo, voice, and text all flow through the same classification pipeline. That matters because not everyone can type a paragraph, but pretty much anyone can take a photo or talk for 10 seconds.

What we learned

The biggest lesson wasn't technical; it was that the hardest part of civic reporting is knowledge, not technology. During legal research we kept discovering obligations councils already have that almost no one knows about. The Resource Management Act, the Local Government Act, the Building Act: these laws give people genuine power, but only if you know how to use them. That completely shaped our approach. CivicOS isn't just a reporting tool; it's a legal empowerment tool.

On the build side, we learned the hard way that time spent designing upfront pays for itself ten times over. We should have spent more time mapping out the AWS architecture and planning the frontend flow before jumping into code. When we did, things clicked together cleanly. When we didn't, we ended up reworking things that could've been right the first time. Good architecture and thoughtful UX aren't extras you bolt on later; they're what make the difference between a demo that works and a product that actually feels usable.

We also learned that multimodal AI is powerful but demanding. Getting consistent, structured results from Nova across voice, image, and text required serious prompt engineering and extensive iteration.

What's next for CivicOS

First up: more councils. Right now, we target the Auckland Council, but the architecture is built to scale. Updating the authority map and legal database is all it takes to support any council in New Zealand. After that, we want to swap our hardcoded legal citations for a proper RAG pipeline using OpenSearch, so the system can dynamically pull the most relevant legislation even for edge cases we haven't pre-mapped. From there: user accounts so citizens can see all their past reports and resolution rates in one place; an analytics dashboard so councils can see which issues are spiking and where; and eventually a mobile app with one-tap capture and automatic GPS tagging to make reporting even more effortless. Long term, we want CivicOS to be the default way New Zealanders talk to their local government, where every civic problem is 30 seconds away from being formally on the record and impossible to ignore.

Built With

Share this project:

Updates