An enthusiastically shareable version of the Civic Dashboard project (Opens in a new window) came online the week of March 28th, 2025. It featured:
A simple, accessible How Council Works page
A Councillors page showing how every councillor in this session of Council
An Actions page showing all committee/council items available to act on in the city, along with filters/tags and an email alerts/subscription feature
A prototype Search page showing where we’re headed in upgrading Council-related search in Toronto
Organizational infrastructure like social media, a blog, Feedback/Join Us pages, and the tools to support it all
What got us there is not made up of bits and pixels, but time and people:
37 volunteer contributors
120 Slack channel members
9 months
42 hacknights
3 key supporting organizations - thank you to Open Data Toronto, 1RG, and Civic Tech Toronto!
Stories show us what’s possible, yet volunteer efforts rarely have their stories told, especially not as they’re happening. When they don’t work out they (and their learnings) disappear, and when they do work the journey to get there is obscure, often smoothed over, and mythologized. This is our best attempt at avoiding either of these outcomes, by communicating one version of the first 9 months of this project!
Much as open source code bolsters other projects and makes them feel more possible, we hope that open sourcing our process and progress will do the same for civic technology projects in Toronto and beyond. We’ll release updates more often going forward!
What the work log below doesn't - and can't - cover is all the critical work in between. The conversations in person and online, the cafe and Zoom meetings and work sessions, encouragement from friends, family, and recent strangers, the personal obstacles overcome, the folks who left and re-engaged, and everything that didn't work before it did.
Here are a few core takeaways:
Working in large groups is not just an unfortunate necessity of volunteer projects, but a core driver of the capacity and resilience of an organization/project. It's a feature, not a bug.
There are many wonderful, skilled, trustworthy low ego people who want to contribute, and lots of great work to be done.
The best things are not any one person’s - they’re collective, co-owned efforts, and to focus on individual stories is to miss the forest for the trees.
Community infrastructure - be it public data or a decade-long weekly meetup - is critical, makes good things possible, and deserves our support.
What follows is a month by month breakdown of the high level work (and the people who did it) that got us to where we are today! It’s not meant to be engaging (unless you’re SUPER into project management). It’s a literal, messy, and necessarily incomplete record of a beautiful and underappreciated way of doing meaningful, necessary work in community. If this way of working sounds appealing to you, you can join us (Opens in a new window) any time!
May 2024
Ilya does a Civic Tech Toronto hacknight presentation (Opens in a new window) on the UX of democracy, with no project in mind/attached to it
Several viewers reach out and ask whether there’s a project associated with this, saying they would be interested in contributing!
June 2024
Jim, Rel, Sarah, Gena, Sudhakar, Michael N, Mehul, Thomas, GodKnows, RJ, and Aidan join the project
June 18th - first “pitch” + hacknight breakout
Quote - “the goal is to iterate + learn quickly and have an MVP up ASAP, hopefully this summer! I'm gonna be running this breakout every Tuesday this summer, pending emergencies”
The project working name is “Citizen Dashboard”
Most of the work consists of onboarding, some research into Toronto’s Open Data + TMMIS system, and some whiteboard sketches!
July 2024
Shelley, garo, Nithin, Olivia, Ahmed, Yael, Ajay, and Thomas C join the project
Mackenzie from Toronto’s Open Data team becomes aware of the project, shares great context
We split the project into 3 workstreams - Tech, UX, and Project (general), and make the associated Slack channels
Tech:
Michael N opens a GitHub repository, write an initial scraping script for Agenda Item data, an initial architecture diagram, and makes a slide deck called “Toronto City Council Explained”
Nithin creates documentation of the existing API documentation
The UX team begins work on a user survey and interview program, spearheaded by Thomas S and Sarah K
August 2024
Michael K, Sam M, Jasper, Ali, Manvi, Mandy, Tom R, and Bradley join the project
UX:
Ali creates a discussion guide for semi-structured user interviews
Yael shares research on the City’s decision making process
The team develops the survey, including questions, email templates, and informed consent forms
Tech:
Lots of discussion and exploration on architecture and MVP scoping
Michael K sets up an architecture with Kafka and Kubernetes
Michael, Mitch and garo build the team’s understanding of the City’s API
Project:
Manvi and Jasper sign on as product managers
September 2024
Fab, Baris, Emily, Alan, Simone, Jesse, Kit, Sharmeena, Paul, and Yiwei join the project
UX:
Survey launches, responses roll in!
User interviews with democracy power users begin via a Calendly booking page, spearheaded by Ali and Shelley
The quest for a more inclusive name (because ~20% of Toronto residents are not citizens) begins, prompted by Sarah K
Ilya writes up our first Personas document
The research Figjam board is first created and shared
Tech:
Nithin builds and deploys an elastic search instance pointed at our agenda items database
More discovery work is done on the agenda item lifecycle and the associated data
Project:
Notion and Google Drive instances launch for the project, we start tracking meeting notes, user stories, and project to-do’s in Notion
We make a channel for research-related work called #research-civic-dashboard, led by Yael
Ilya writes up an Onboarding document
First outside-of-hacknight team party!
October 2024
Xin Wen, Matthew, Milan, Torie, David, Lawrence, Tristan, Gabriele, Patrick, Julia, Simon H, Isaac, Brian, and Alex G
UX:
Rel sketches out engagement touchpoints on the current City website
Tech:
The team decides on using Tailwind and Next.js for front end work
Matthew builds and deploys the first version of our Councillors page
Nithin deploys our first Search page prototype
Michael N progresses work on our github’s DevOps setup
garo builds and deploys the first version of our Actions page
Research:
David begins research on similar projects in other municipalities
Brian gives insight on how this tool could play from inside a Councillor's office
Project:
Hacknight meetings are run by the team (spearheaded by Jasper and Manvi) in Ilya’s 5 week absence
November 2024
Atina, Khasir, Jijesh, Alex O, Sonal, Aditya, Jonathan, Jeremy, Ana, Tom, Akhil, and Jai join the project
UX:
Sharmeena augments the engagement touchpoints draft with more user journey research
Sharmeena shares initial designs for the Councillors page
User interviews continue, run by Ali
Rel creates first design system for the project, based on Material UI
Tech:
garo implements client-side search and filtering by decision body for the Actions page
We decide on a postgres database in the backend
Research:
Ali and Yael share the first version of the How Council Works page
David shares research about the Councilmatic project in NYC and Chicago, and where it did or didn’t work
Project:
After much discussion, we rename to Civic Dashboard
Project management is switched to Slack Canvases and Lists
Ilya creates Products and Teams + Onboarding docs and a kanban board + tickets in Slack
We formally break our work up into product teams - How Council Works, Search, Actions, and Councillors
December 2024
Sourabh, Sage, Katelyn, Naomi, Jerome, Danillo, Thomas F, and Sebastian join the project
UX:
Yael shares a visual design for an Actions page, and incorporates lots of feedback into the How Council Works document
Tech:
Khasir kicks off and leads data pipeline conversations and mapping, he and Lawrence explore different AI models for item summarization
garo implements an “email yourself your search” feature for Actions
Matthew adds Moved/Seconded By tabs and full agenda items to the Councillors page
Michael N deploys our first data backend prototype, and a wiki for the GitHub repo
Nithin ships a Search prototype with AI summaries
Milan builds and deploys the first iteration of civicdashboard.ca (Opens in a new window), with a landing page, an About Us page, links to our prototypes, and Join Us + Feedback pages
The team decides on Cloudflare for hosting
Project:
We have a holiday party at 1RG!
January 2025
Yumi, Drini, Ariel, Richard, Matteo, Chantal, Ashish, Nour, Sadiq, Mikaal, Kevin, Sarah P, Rowan, Phu, Sunny, Joseph G, and Serena join the project
UX:
Ilya build a user feedback form to Google Sheets to Slack pipeline
Mandy rejoins the project and initiates design system + unifying agenda item card design work
Sharmeena designs our first shared agenda item component
Chantal contributes some sketches for the How Council Works page
Tech:
garo merges the action page and website repositories
Khasir, Jerome and Lawrence continue agenda item classification/tagging work
Research:
How Council Works team splits into visually-focused team working on the intro document and a research/words-focused team working on more extensive wiki docs for the City
Yael connects Ilya to Jordan, a taxonomist at the City, who points us to the City Subject Thesaurus, which shows that there are human-made tags on most agenda items
Danillo gives feedback about the How Council Works document
Project:
Jeremy creates a meeting and project management structure for our tech team - tech work items start being tracked in GitHub
Ilya makes a Backlog document, an Open Organization document, and a Milestone document outlining what we’re aiming for next
Notion is formally shut down
February 2025
David H, Caroline, Geoffrey, Labib, Mateo, Mathushan, Kyle, and Luce join the project
UX:
Sharmeena and the design team conduct some voting research about the agenda item card component
Richard does initial branding work and a team survey
Ali and the How Council Works team post first Figma wireframes for the How Council Works page
The UX team transitions from Figma to Penpot (under Jordy’s suggestion) due to cost and open source considerations
Tech:
Jim brings up the idea of using a Github wiki as the place for our burgeoning Council wiki
Jai and the data team take a first pass at, and get feedback on, different forms and attributes of AI summaries for items
garo and Khasir find and analyze “subject terms” for agenda items, paving the way for tagging
John adds the Councillor list page
Research:
Yael, Danillo, and Mathushan start work on the Council wiki
Project:
The team decides to work with a deadline for the first time, aiming to release an enthusiastically shareable + usable version of Civic Dashboard by April 3rd, in time to demo it at Democracy Xchange!
The team does a big work session outside of hacknights for the first time, at Civic Space Sundays at 1RG!
#updates-civic-dashboard is added and hooked up to the GitHub
Khasir and Jai create a technical onboarding document
Calendly is shut down, the team transitions to an email-based flow for signing users up for interviews
March 2025
Liqi, Ian, Veronica, Nathan, Melissa, Carol, Luisa, and Allan join the project
UX:
Mathushan creates and iterates the User Researcher Toolkit
The team transitions all assets and work to Penpot from Figma
Sarah connects the team with Luisa, who (with the team’s direction) creates illustrations for How Council Works
Shelley shares new designs for the future of the Search page
Richard designs Civic Dashboard’s first logo
Tech:
Garo adds viewing past items, search operators, and viewing underlying subject terms by hovering over tags, email subscriptions, and new UI to the Actions page
Luce implements infinite scroll for the Actions page
Caroline builds a prototype of the new Search design
Khasir creates supertags from subject terms to be used to tag agenda items throughout the website
Jai creates an agenda item AI summary generating pipeline
Milan deploys the How Council Works page, updated UI for the Councillors page (with individual motions on each item), and adds a Feedback banner + updates to the Feedback page,
Matthew implements new designs for the Councillor List page and Jai’s AI summaries into agenda items on the Councillor page
The team comes up with a basic permissions hierarchy for Github
Project:
garo initiates the practice of a monthly “all hands” Slack thread for the team to be aware of each other’s work and how they’re feeling
The team works together outside of hacknights at Civic Space Sunday and for a pre-launch work session tomorrow
Jerome researches newsletter options, selects Steady
Ilya makes LinkedIn and BlueSky pages