Introducing Canvasser 2.0

For those who didn’t see the demo at Roanoke 2023 or have enrolled as beta testers, it’s my pleasure to introduce you to the v2.0 release of Voter Science Canvasser on Android and iOS. The three major new features included in this release are:

  • New dashboard panel
  • New route detail panel
  • Optimal route generation

Most of these new features have been suggested by users in the field, and I want to thank everyone for providing that valuable feedback during the 2022 campaign season. As a candidate I was also testing the designs first hand, a tradition that at Microsoft we referred to as “eating our own dogfood.”

New Dashboard Panel

Probably the most obvious change that you’ll notice on first launch of the 2.0 release is the new DASH tab on the main screen. This will be familiar if you’ve used VS Fundraiser, and it’s basically loaded with statistics and history for the selected walking list.

Like Fundraiser, the dashboard consists of two animated donut charts that summarize the status of households in the current sheet (To Do, Voted, Complete, etc.) and the result of contact for each that have been visited (Left Literature, Talked with Voter, etc.). The History section contains a list of all the doorbelling sessions for the sheet, broken down by date and by canvasser email. In the detail line for each history entry, you’ll see the number of households canvassed during that session, the total number of voters represented by those households, and the total distance covered.

Tapping any of the history entries will show the new route detail panel:

Route Detail Panel

This detail panel roughly shows the path taken canvassing during that session. Since we’re just connecting the positions that were logged in the history by GPS position and timestamp, it’s not necessarily your actual walking path but an approximation. That said, it can quickly identify volunteers who may have tried to canvass their walking list from the local Starbucks. Note that the pins on this path currently represent voters visited, and not households, since that’s how changes are logged. A future update may consolidate those back into households so that you can tap them to navigate to the household detail panel.

Optimal Route Generation

You will notice a new option in Settings > Lists> Sort By:

By selecting the new Route option, Canvasser will generate an optimal route for you to take to canvass the walking list. Creating optimal routes is a generalization of the Travelling Salesman Problem (TSP), which belongs to the class of NP-complete problems. Thus, it is possible that the worst-case running time for any algorithm for the TSP increases superpolynomially (but no more than exponentially) with the number of potential stops, making it impractical to simply brute force. The algorithm that I’ve chosen is a classic pairwise exchange or “2-opt” technique constrained by paths segmented by block and side of the street (thus preventing zig-zag patterns as you progress down the street). This ends up being a decent optimization for canvassing, given that we currently can’t easily constrain to actual street geography.

Here’s an example shown on the Hybrid map type:

The optimal route is shown with red traces, just like the historical routes shown in the new route detail panel. The List tab is also sorted in the optimal route order, allowing you to just swipe through household detail view to progress through the walking list.

Getting Started

The v2.0 release of VS Canvasser represents a major feature release for the 2023 campaign season, and it is now live on both the Google Play Store and Apple App Stores.

We remain committed to further tactical improvements as the election cycle progresses. If you have any additional feature requests, please send them to chad@voter-science.com and I’ll make every effort to roll them into a future release.

Which legislators vote their district?

In light of the Senate passing SB 5082 to end advisory votes, I thought I’d highlight a personal project that shows their value even if they aren’t legally binding. Specifically, I wanted to make it easy for voters to determine how often their representatives in Olympia match their district on legislation that is referred to the ballot.

It’s codenamed Project Fidelity, and you can access it from my WhipStat site here:

https://whipstat.com/Projects/Fidelity

To create this I researched the LD breakdowns of all ballot measures since Initiative 960 went into effect in 2012.  Some of these were already posted on the WA Secretary of State website, but several years were missing and needed to be obtained via public records request.  I then compared them to voting records for all members using Legislative Web Services, something that I’d already been leveraging for the Partisan Leaderboard and Identify Friend or Foe projects.

To use this tool, simply select the chamber and date range that interest you and a stacked scatter chart will be displayed on the left showing individual member fidelity scores, with 0% meaning that they never matched their district, and 100% meaning that they were always consistent with the majority of their constituents.  The data points (with tooltips) are color coded by party and you’ll also see vertical lines that represent the median score for each party.  Clicking an individual member in the chart will show a table below breaking down every bill that went before voters during their tenure, their last floor vote on the bill, the percentage of their constituents that supported it, and whether they matched.

If you click the Download button, it will create a tab-delimited file for each member on the chart and their score, allowing you to create an easy leaderboard in Excel for the best and worst members at voting their district.  (It’s also worth noting that the Republicans median score is 60%, compared to 50% for Democrats.  That might help explain why they seem so invested in ending advisory votes.)  One thing that surprised me is that members from swing districts aren’t very good at representing the majority of their constituents.  For example, I only got 50% of them right and I still had the best score of anyone representing the 5th LD.

We at Voter Science hope that Project Fidelity can provide a little more transparency into our state government, allowing WA taxpayers to easily determine which state legislators are voting with their district on legislation referred to the ballot, and which might be selling out to special interests or simply voting party line. It’s an opportunity to hold them more accountable for their voting record when they’re up for reelection, using a mechanism that was created with Initiative 960 and may soon be disappearing.