project case study

Elections Alberta Application Design & Development



The Challenge

Prior to Alberta’s spring 2019 provincial election, Elections Alberta was tasked with updating all the voter records (the technical term is enumeration, and the key element is updating residential addresses with registered voters). In the past, that meant manual canvassing and manual data entry. Given the fact that the dataset is large – 2.1M addresses, to be precise – data capture and separate data entry was exceptionally time-consuming and error-prone, and not really feasible anymore. Thus, they came to us looking to design and develop a web application that would digitize the entire process.

The Solution

We delivered an award-winning cross-platform application that was responsible for updating 1.5M records during the 10-week enumeration effort. The platform included support for three key enumeration workflows: self-enumeration (where any eligible Alberta resident can log-in, validate their credentials, check their voter record for accuracy, and update if required; phone enumeration (where call centres use the application to update the records of voters who chose to call in); and door-to-door enumeration (where 7,000 door-to-door enumerators use a mobile application to go to each residence and update voter information).

Project Services

  • Agile Approach
  • User Stories
  • Application Architecture
  • Rapid Prototyping
  • Responsive Design
  • User Acceptance Testing
  • Quality Assurance Testing
  • Performance Optimization
  • Post-launch Support

The Details

Elections Alberta is an independent, non-partisan office of the Legislative Assembly responsible for administering provincial elections, by-elections and referenda; they administer the Election Act and the provincial electoral process in Alberta. As Alberta moved towards the next provincial election, the thought of tackling the legislated enumeration process the old way – with paper and pencil, manual data entry, and the like – wasn’t ideal. Having delivered multiple digital projects for Elections Alberta in the past, they came to us looking to build a web application to handle the whole process digitally.

Key Scenarios & Agile Methodologies

The application needed to support three key scenarios:

  1. Self-enumeration: the ability for any eligible Alberta resident to log-in, validate their credentials, check their voter record for accuracy, and update if required.
  2. Phone enumeration: the ability for call centres to use the application to update the records of voters who chose to call in, and
  3. Door-to-door enumeration: the ability for 7,000 door-to-door enumerators to use a mobile application to go door-to-door and update voter information at each residence.

This meant we had to design and build a platform that handled all that data, securely and in a performant manner – 2.1M addresses, to be precise – while also designing efficient, user-centric workflows. We started with workflows delivered to us by Elections AB, extended them and captured them in user stories, then immediately started rapid prototyping in HTML/CSS to test functional workflows at the end of every sprint. As feedback was gathered, new user stories were written, existing acceptance criteria was updated, and new work was prioritized for the next sprint. We continued to work in this fashion for the duration of the project – hands-on testing of functional software was critical to the ability to deliver this whole project in 6 months.


Unique Features

The system also had a number of unique features required to support a variety of edge cases, and specific requirements like:

  1. offline data storage, for door-to-door enumerators who lost signal, wherein the application would save data in-browser using PWA techniques and automatically upload the data to the server when a connection was detected
  2. work planning functionality, wherein door-to-door enumerators logged in and created to-do-lists so their managers knew where they were planning to be when out in the field
  3. support for multiple statuses, wherein door-to-door enumerators reported (within the app) on items like: how many visits they’ve made to an address, whether or not the address had been successfully enumerated, etc.

Laravel & Custom API Development

A considerable portion of the application was built on Laravel – specifically using the Lumen API framework. Lumen was used to create various API end points to tackle functionality like:

    1. Validate Driver’s Licence data.
    2. Search for Electors. Including the ability to lookup a single elector via elector_id, lookup an elector without an elector_id, and grab all electors associated with an address
    3. Add an elector & Update an elector.
    4. Manage Address Routes. Including the ability to lookup a Single Physical Address ID, lookup addresses using multiple address IDs, add Physical or Mailing Address, and update Physical or Mailing Addresses.
    5. Manage Places Routes. Including the ability to lookup a single Place (by place id), and grab all the Places in the database.
    6. Manage Enumeration routes. Including the ability to return list of all PSDs that belong to 87 EDs, grouped by ED, and return Enumeration Statuses (multiple)
    7. Manage Enumeration Addresses Routes. Including the ability to return all Addresses of {ed} or {ed}+{psd}
    8. Manage Changelog Routes. Including the ability to retrieve all changelogs associated to an address; retrieve all logs created by an enumerator, and retrieve all changelogs associated to an elector
    9. Manage Notes Routes. Including the ability to create a new address note, and grab all notes associated to an address


In the end, 1.5M addresses were updated over the approximate 10-week enumeration period – a considerable number. Elections AB was then able to pull reports as needed from the database for their internal use. Overall, it means the voting process for our next provincial election was made that much easier for those who choose to vote. That’s the kind of work worth getting excited for.

contact us

Let's make something amazing together.

Interested in working together, or maybe just having a conversation? We’d love to hear what you have in mind, and answer any questions you might have. Let’s make whatever’s rolling around in that brain of yours happen.

Onwards to view The Next Project →