Inspiration

City services can feel confusing, even when help exists. We wanted to build a civic AI assistant that makes it easier for Toronto residents to understand what to do, where to go, and how to take action.

What it does

City Copilot helps residents ask civic questions, route service requests, explore neighborhoods, compare livability, review local proposals, and draft outreach emails. It combines AI answers with Toronto-style civic workflows and fallback logic so the app still works during demos.

How we built it

We built City Copilot with Next.js, React, TypeScript, Tailwind CSS, Vercel, Toronto Open Data, and an OpenAI-compatible AI provider setup. The app includes a local settings page for API keys, AI chat, neighborhood scoring, radar graphs, what-if scenarios, proposal cards, and structured report views.

Challenges we ran into

The biggest challenge was making the app feel like one complete product instead of separate prototypes. We also had to handle unreliable AI/API connections, and inconsistent UI styles while keeping the demo stable.

Accomplishments that we're proud of

We are proud that City Copilot became a full civic dashboard, not just a chatbot. It has AI-powered answers, neighborhood intelligence, proposal participation, local configuration, fallback responses, and a strong visual identity inspired by terminal-style civic operations tools.

What we learned

We learned how important fallback systems are when building AI apps. We also learned that civic technology needs clear language, trustworthy routing, and simple interfaces because residents should not need to understand city bureaucracy to get help.

What's next for City Copilot

Next, we would connect deeper real-time city APIs, add multilingual support, voice input, map-based reporting, saved user accounts, official 311 integrations, and more accurate neighborhood data for every Toronto community.

Built With

Share this project:

Updates

Submission history