How Elements Helps Democracy in the Netherlands
Running smoother elections with the StembureauApp
The Netherlands, a parliamentary democracy, has a long tradition of free elections. The process and organization of these elections have always been arranged in a traditional way. It is clear that there is room to automate and optimize this process to make elections run more smooth and efficient.
Elements teamed up with long-time partner KPN to develop a scalable and multi-platform solution to assist and support polling station staff during elections in the Netherlands.
This e-democracy solution is called the StembureauApp (“PollingStationApp”), and consists of a mobile app app for iPad and Android tablets and a fully scalable back-end built in Python running in a Kubernetes cluster.
You can read more about the technical solution in Gerard’s excellent blog post on performance and optimization.
A brief history
Traditionally, the chairman and other staff of a polling station does all the work on election days manually, and with paper and pen.
To keep track of the number of accepted voters (and thus handed out ballots), maintaining contact with the city hall and the counting process was all done on paper and by phone. The polling station chairman needs to check each voter’s voting pass number manually against a physical blacklist of all invalidated numbers.
As to be expected, this whole process is prone to errors, especially after a long election day. Also the process is very time-consuming.
Enter the StembureauApp, a software tool internally developed by the city of Rotterdam in 2014 and used for all their elections to date.
Good to realize is that the StembureauApp is not used by voters to actually vote. Per-voter, just the voting pass number, the timestamp of the scan and the polling station number is logged.
In 2017, Rotterdam’s application was shared with four other Dutch municipalities (The Hague, Utrecht, Groningen and Zoetermeer) to also support their elections processes.
As the user base and feature requests grew, Rotterdam and The Hague published a request for tender to find an external technology partner to make the application scalable, for future expansion, and to create a multiplatform solution, as the StembureauApp originally only supported iOS.
A scalable StembureauApp
The tender was awarded in January 2018 to the combined forces of KPN and Elements.
In the months that followed, we worked on recreating the back-end application from Java/Oracle to Python/PostgreSQL, making it containerized and running it in a fully scalable Kubernetes cluster. Also, new lightweight native apps for iOS and Android were built and the Angular front-end was updated.
Hosting moved from Rotterdam’s premises to AppFactory, KPN’s premium continuous delivery cloud platform.
Meanwhile, five more Dutch municipalities joined to make use of the StembureauApp for upcoming elections: Eindhoven, Amersfoort, Nijmegen, Purmerend, and Tynaarlo.
The Groningen municipal election of November 2018 and the Provincial Council and Water Authority elections of March 2019 (ten municipalities) resulted in a few key learnings. Several changes were made to the network infrastructure and software to optimize the user experience.
The use of the StembureauApp for the recent European Parliament elections on May 23rd, 2019 was a huge success. Across the ten participating municipalities, the app was used in more than 1,300 polling stations, where almost one million voters had their voting passes scanned.
The StembureauApp in action
The StembureauApp supports the polling station staff in a number of ways to improve the quality of the voting and counting process and enables the municipalities to get the turnout figures and election results faster.
The presence of staff members is easily managed from within the app and the chairman can conveniently chat from the tablet with the election helpdesk whenever they need assistance. Thanks to the tablet’s camera, a nifty QR code on the voting passes is simply scanned and automatically checked by the backend against the blacklist. Also, each scanned voting pass (and handed out ballot) is logged which automatically keeps track of the turnout number per polling station.
The city hall can view in real-time in what steps of the process each polling station is and can contact them proactively if necessary. The chat feature offers them ways to answer questions quickly or send out a message to all stations at once.
Per-hour turnout figures en real-time results are shared by the municipalities van be viewed on a public website.
The next election, for the national parliament, is scheduled for March 2021.