How We Built It
First, we created specialized Google Sheets and Excel workbooks to enable volunteers to collect data for a single given county. Some states aggregated their data across counties, making our job easier. Each of these Google Sheets/Excel spreadsheets was set up in a way to be structurally similar to our database, making input from the spreadsheets to the database easier. At a minimum, volunteers were responsible for collecting information on the type of safe voting location (e.g. ballot drop box versus early voting), the location's physical address, and the URL of the authoritative city/county/state source of the information. Additional elements, such as dates/times of availability, location notes, etc. were also captured, where available.
Once each spreadsheet had the basic information, we ran the physical addresses through a geocoding process from a major technology company to turn physical addresses into latitude. Geocoding is an amazing, yet imperfect technology. Not only are typos possible (e.g. 123 Main Streeet), but some addresses that are customarily written in words (e.g. One Courthouse Square) are much more easily geocoded when re-written as 1 Courthouse Square. Latitude and longitude are necessary for providing to you your nearest locations, but how could we know if the thousands of pieces of lat/long data that came back from the geocoding processes were correct?
Luckily, the geocoding process also returns the city, county, and state of the geocoded address. Since we knew which county and state we were collecting for, anything that did not match was reviewed and corrected, often by hand. Next, we checked to make sure that the city matched. This was a little more difficult as LaGrange, IL and La Grange, IL needed to be reviewed (and sometimes corrected) manually as well.
Once we were confident that we had a clean dataset for a given city, county, or state, we imported it into our database so it could be served up to users as the output of their proximity searches.
Data Sources Used
Full details on which city/county/state data sources we used for each county are here