Thumbnail showing Younkin winning the GOP nomination for governor.

In 2020, The Virginia GOP decided to run a multi-round, ranked-choice election where delegates' votes were weighted based on where they lived. Despite having only a week to design and build the pages, we created a live election results page. I built the front-end code in d3 and Svelte, as well as much of the server-side code in Django.

Screenshot of a form allowing users to submit public records requests.

For my master's thesis in Stanford's journalism program, I'm working on a project that involves getting records from a lot of different municipalities.

For data journalists, this is a pretty common problem. A lot of information journalists seek — death records, inspection records, you name it — is collected at the state, county, or municipal level. And data journalists often want to analyze that information across a wide geographic area.

In order to manage this work, I created a Django tool for filing public records requests to multiple agencies at once. I used an early version of this, django_sourcebook, to file requests for a reporting project. Since then, I've worked on building a more interactive version with authentication and tests. That project is foia_integration.