Inspiration

It shouldn’t be difficult to figure out where your councillors stand on issues that matter to you.

What happens after you cast your ballot? You deserve a government that listens to you all the time, not just during election season. Keep yourself informed of the happenings of Toronto City Council. Determine whether your elected officials really represent you. Demand better.

Political apathy is all-too prevalent today, even though information should be more accessible than ever before. I noticed that this is especially true when it comes to municipal politics, particularly in my city of Toronto. Given that it is the only level of government here where officials are non-partisan, it is extra difficult for citizens to determine which candidates best align with their priorities.

Inspired by other open parliamentary projects that target various federal governments, I wanted to create a tool that made the happenings of Toronto City Council more accessible and relevant. I believe that voter responsibility does not stop on election day, and that voters should be able to continue to scrutinize an official once elected–“track their vote,” so to speak.

What it does

This tool allows users to access historical records of decisions made by Toronto City Council, including how their own councillor voted. It connects headlines to the real "yes"s and "no"s that make things happen.

How I built it

This is a web app built in Flask. It uses the City of Toronto Open Data API. Example one-time news data was found using SerpAPI and evaluated using the BERT language model to match articles to specific motions. Future iterations of this project would use APIs on a larger scale to get historical data for lookbacks as well as run at set intervals for up-to-date, relevant information.

Challenges I ran into

The biggest challenge was figuring out the best way to do the matching of news articles and city council decisions. Unfortunately, free API restrictions meant that it could not yet be done on a large scale. However, I found that matching was relatively accurate.

Accomplishments that I'm proud of

Developing a working matching system as well as making the large mass of data available in the City of Toronto's dataset much easier to engage with.

What I learned

This was my first time building a dynamic web app and using Flask. I learned about Jinja templating as well as the use of transformer models like BERT.

What's next for TrackYourVoteTO

  • Implement paid but low-cost APIs like NewsAPI to fetch news content at regular intervals (hourly) to show latest news and implement server-side caching
  • Incorporate the meeting dataset from the City of Toronto Open Data and highlight future decisions (votes and meetings) to provide even more actionable steps for users (attending meetings, contributing to polls, etc.)
  • Incorporate past meeting transcripts and incorporate content from the City of Toronto YouTube channel to allow users to better understand their officials’ stances

Built With

Share this project:

Updates