OpenBallot
Mar 26th, 2025
OpenBallot is a platform for discovering, authoring, and sharing voter guides.
Problem
Casting an informed ballot, especially in places like California, is demanding. There can be tens of ballot items and hundreds of candidates for little-known offices like Comptroller or Member of the Board of Supervisors.
Solution
OpenBallot helps make voting easier by centralizing all the voter guides published for an election into one place. It also allows knowledgable local voters publish their own guides to share with their community or publicly.
Technical Architecture
The OpenBallot client is built using the following stack:
- Next.js, React, and Mantine (component library) for client development
- Hasura for GraphQL api and Postgres management
- Vercel and GCP for hosting, deployments, and object storage
Data for the application was generated using the following infrastructure:
- Python-based data pipelines using GPT-4.1 and O3-mini for structured data extraction from guides and ballot documents
- A small, vanilla javascript application for data staging and QA after initial extraction
Challenges & Learnings
Voting support applications like OpenBallot present a range of engineering and product challenges, and we've learned a lot so far.
- There is huge (and frustrating) variation in voter guide formatting which makes consistently extracting data very challenging. Some guides have tables with names only, others have large blocks of text, and still others embed endorsement information into images and just show those on a page.
- There is huge variation in the types of races and offices across the country, making election data modeling and data ingestion difficult. New York had racess like: "Alternate Delegate for the Judicial Convention, Assembly District 65." Is that a judicial contenst? And is it a County or a State-level race?
- Marketing a product that will primarily be used within a single two-hour window on a single day is difficult! It's very hard to generate awareness for the application when people are not thinkng about the behavior/action it supports.
Results & Impact
So far we've deployed the app for two elections, the November 5th, 2024 election in San Francisco and the June 22nd Primary election in New York City. About 10,000 people use the applicaion in San Francisco and many fewer in NYC (since we have thinner networks there and only released the app three days before the election). We're ramping up work though and are shooting to deploy to at least three more elections this year.