Skip to content
The Think Blog

Helping people get to the polls with a PWA

Think Company logo

As Election Day approaches, one question that many voters may be asking themselves is, “Where is my polling place?” A group of Thinkers built a progressive web application (PWA) to give Pennsylvanians a quick answer.


At Think Company, we have an extensive history of volunteering our time to help the community. From improving the public transit fare system to providing design and development assistance for a cancer data project, we are always looking for ways we can be of service.

Think Company is also committed to ensuring employees are fully able to participate in our democracy by granting up to four hours of paid time off on Election Day so that we can vote. Additionally, I’m proud to say that three of my Think Company colleagues serve on election boards in their hometowns!

The Challenge

One of the greatest frustrations a voter can encounter on Election Day is showing up at a polling place only to be told they’re not registered to vote at that location. Many new voters, or voters who have recently moved, might be uncertain as to the location of their polling place. They may show up at a polling station close to their home assuming it’s the correct location.

Election officials often hear the question, “Am I registered to vote here?” If this question isn’t answered quickly and correctly, it could have a negative consequence on our democracy: if the voter happens to be at the wrong polling place, they will need as much as time as possible to get to the right polling place before they need to be at work or school or before the polls close, or simply before they get aggravated from waiting and give up.

One method that any Pennsylvanian may use to check if and where an individual is registered to vote is the PA Voter Services website—and, in fact, many election board officials point folks to this website on Election Day. However, the website is less than user-friendly, especially on a mobile device.

A Better Solution

A group of Thinkers decided to address this problem by creating a mobile-friendly solution that would provide a faster user experience by improving on the method of content entry (camera integration to scan driver’s licenses for faster lookup!) and highlight the resulting desired information (polling place address).

This is where the use of a PWA shines. Camera integration has traditionally meant building a native mobile application, which meant choosing iOS or Android support (or doubling costs and time to support both). New browser features allow websites to take advantage of the same types of features while working across different devices and browsers by default. Also, because PWAs are still delivered via the web, a voter or election official can quickly start using the app by visiting the URL in their browser, without the hassle of finding and downloading an app from the app store on their device.


Above: Before (the PA Voter Services site on mobile)


…and after (our VoterCheck PWA)


We think the result is a decent proof of concept for an improved voter services experience. We’ve timed it; if you get a clear photo of a driver’s license and have a decent internet connection, our PWA will report your voter registration status and the address of your polling place in less time than it would have taken to go through the PA Voter Services experience.

Let’s Get Technical

We first approached this problem by using the device’s camera to capture the barcode on the back of an ID, but we found that the older 2D barcode format used on the back of licenses didn’t work well with JavaScript readers. So we iterated, changing our approach to something more reliable. Our current approach asks you to take a picture of the front of the ID and leverages Google CloudVision, which performs OCR and parses out the date of birth and driver’s license number.

Next, we leveraged Google Puppeteer to complete the form on the PA Voter Services website and then “scrape” the results from the page returned, since the PA website does not provide a public API for retrieving a voter’s registration information.

Because the app handles personally identifiable information (PII), we thought about privacy and security from the very beginning. The image taken by the device camera is not stored on the server after being processed, nor is the data that is parsed from the driver’s license image. Secondly, any information being transferred, whether it be the image sent to Google CloudVision or the data sent to the PA Voter Services website, is done securely over HTTPS.

Vote on Tuesday, November 6!

While there are still improvements that could be made, we think that VoterCheck is ready for testing out in the field. If you’re a Pennsylvania voter, please try it out at—and don’t forget to vote!

Nota bene: If the VoterCheck app says you’re not registered, or if it returns an error, try the PA Voter Services website instead. If your information is still not found, contact your county voter services office right away!


Thanks to Luke for his help with co-writing this blog post.

Stay in the know

Receive blog posts, useful tools, and company updates straight to your inbox.

We keep it brief, make it easy to unsubscribe, and never share your information.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Send us a postcard, drop us a line

Interested in working with us?

We scope projects and build teams to meet your organization's unique design and development needs. Tell us about your project today to start the conversation.

Learn More