In addition to software and web development experience, I also possess specialised knowledge working with political data across several roles. On previous roles I worked with Congressional campaigns across multiple states, several state politcal party organizations, the DNC, and over a dozen down-ballot campaigns.
Descriptions of the tools and tasks I have engaged with over several years of campaign experience are below.
Through Renegade Squirrel I provided voter data consultations to numerous down-ballot campaigns across North Carolina. The consultations provide data showing how to break down the electorate in a candidate's district to reach their Win Number. The targeting provided in this process is used in the software to create Tiers of voters for campaigns to contact.
The targeting work breaks down to the Precinct level and has been given to campaigns ranging from School Board races covering a few Precincts to Congressional races in districts covering several counties.
Shahid Buttar for Congress (2020)
I held the Data Director role on this campaign through the "Super Tuesday" Primary in March 2020. Targeting work on this campaign included building custom targets inside PDI using the PDI data and the CA voter file. I also helped filter through donor data to pick good targets for candidate call time and other fundraising efforts. My candidate successfully made it through the top-2 cutoff and advanced to the general election.
Campaign Tech Tools experience
I have experience working with many different campaign tech tools over several years of campaign work. Experience from tools I've worked with is listed in alphabetical order below:
- Advanced functions used includes: VLOOKUP/HLOOKUP, INDEX(MATCH), IF/SUMIF
- Experience building Pivot Tables
- Experience referencing and parsing data from external data sources.
- VBA: I built a side-project using Visual Basic for Applications (VBA) to help trading card game players test their decks. Click here for details.
- I worked at GetThru (formerly Relay) as a Dialer Manager on the ThruTalk product, helping numerous campaigns make use of the autodialer system by adjusting parameters as needed to reduce wait times.
- While working at GetThru on occasion I had teams of people that I was responsible for managing.
- I also was involved with GetThru as a customer on a couple campaigns to help setup texting accounts with the ThruText service.
- Advanced functions used includes: QUERY, VLOOKUP/HLOOKUP, IF/SUMIF
- Experience building Pivot Tables
- Experience referencing and parsing data from external data sources.
- Google Apps Script: I built a couple of Apps Script projects to help automate campaign tasks using Google Sheets:
- Sheets to Action Network: A script that took volunteer signups from other sources collected in a Sheets doc and loaded them into Action Network via their API.
- Sheets to Google Voice/Spoke: For texting programs, these scripts de-duped phone numbers from other data, did some cleaning, and filtered to rows without Do Not Call designations to produce a final textable import file.
- Sheets to Slack: This script was written to trigger when new rows were added to a responses tab of a Google Forms linked Sheet, then post details from the new entry to a Slack channel.
- While working with the VA Coordinated Campaign I administered a large-scale Hustle texting operation that sent nearly 2 million messages over the course of the 2018 campaign.
- I managed hundreds of volunteer accounts for the VA Coordinated Campaign's Hustle account. We had so many volunteers that we hit the Hustle user accounts limit multiple times!
- This was used on a Congressional campaign I worked on to collect survey responses during in-person events, especially for people who were not already matched with our campaign's targets.
- I administered the back end for this app, setup user accounts, setup tags and surveys, and moved response data out of the app into other systems.
- I setup an instance of this texting app on a Congressional campaign I worked with.
- I setup user accounts, set the campaign scripts including follow-up messages, and wrote Python/Pandas scripts to move data between this system and other tools used on this campaign.
VAN / Votebuilder
- I've been a Votebuilder user since 2012.
- I know how to pull lists with complex logic, cut turf, set report formats to customize printed voter lists, create and mange user accounts, import data, and setup VPBs.
- In 2016 I used Votebuilder as an Organizer where I setup volunteer accounts, cut turf, and managed phone banks.
- In 2018 I used Votebuilder on a Coordinated Campaign where I built state-wide lists of targets with 10+ steps, cut turf, and pulled counts of voters on demand.
- In 2019 I assisted in a training held by DataDems where I helped students work through their Votebuilder assignments.
- I wrote a Python Selenium script to help speed up the process of pulling a set of lists to import into a linked Hustle account.
Working with large datasets
Handling big data efficiently is no small task.
I regularly work with very large datasets including state-wide voter files, the FEC individual contributions database, and contact history files spanning millions of rows.
In 2020 I implemented a feature in Renegade Squirrel to report on returned absentee ballots in North Carolina. I built a utility on the back-end to monitor the NC Board of Elections' absentee file and load a fresh copy of that file into the system on a daily basis. I learned a lot about how to manage large data sets in C# when that file quickly ballooned to over 5 million rows! Using techniques such as batching data, removing processed rows from memory (and only keeping so many rows in memory at any one time), and SQL bulk copying allowed me to handle this amount of data and provide my clients with timely updates on the absentee and early voting situation over the course of the election.
Raising money for campaigns with donor data
- I've worked with ActBlue data on a recent Congressional campaign.
- On the campaign I exported ActBlue donation data and matched it with other campaign data for reporting and other internal needs.
- On campaigns I have troubleshooted issues with embedding ActBlue forms, donation buttons, and front-end issues with donation landing pages.
- On a Congressional campaign I setup the CallTime.AI account.
- I managed users, created donor lists, uploaded donor data, and handled the ETL pipeline to constantly load new contacts into the system.
- I wrote Python/Pandas scripts to clean and format data for import into this app.
Working with FEC donor data
On a couple Congressional campaigns I matched existing donor data with FEC records to fill out donor history and other useful information to aid in fundraising. I have extensive experience building queries that makes searching and matching data to FEC records hosted on Google BigQuery painless.
- In the past I matched call lists across several data sources, voter files, etc. to make sure we had the best phone numbers for each potential donor.
- I know how to build ETL scripts to clean and format donor data for use in several systems, such as Spoke for texting donors or CallTime.AI for phone banking.
GIS and Geocoding voters
- On the VA Coordinated Campaign I setup a set of maps in Carto that integrated campaign metrics with precinct-level shapefiles to show how the campaign was doing on a Precinct & regional basis.
- I handled setting up the Carto account, creating the maps, and matching shapefile data to the Precinct-level metrics using lookups in Google Sheets spreadsheets.
BI & Data Visualization
I have experience using several BI & visualization tools to produce reports for campaign stakeholders, as well as testing some tools in this space for research purposes.
- Google Data Studio: I have the most experience using this tool. I've used this in 2018 & 2019 to visualize voter data sets and campaign results. I like how you can use this to get a quick visualization directly from the results of an executed BigQuery statement, while also giving me the ability to build a more comprehensive report.
- Microsoft Power BI: I used Power BI in 2018 to help visualize data for Renegade Squirrel clients. I have the most experience with the Desktop version of this program.
- Tableau: This was one of the tools used to visualize campaign progress during the VA Coordinated Campaign. I mainly used the desktop version of this software.
- Looker & Periscope: These BI tools were tested to help a large stakeholder decide how to move forward with their BI needs. I used a sample voter file and related data sources to build the same visuals across several tools in order to help determine ease-of-use, what features were available, and identify any potential snags that other users would encounter long-term.
Database / SQL experience
Query features I have experience using includes, but is not limited to:
- Basic SQL operations: SELECT, INSERT, UPDATE, DELETE
- JOINs (LEFT, RIGHT, INNER, etc.)
- GROUP BY & HAVING to aggregate results
- CASE statements for branching logic
- Creating Views
- Complex queries involving multiple temp tables to efficiently process many joins and large data sets
- Writing Stored Proceedures (MS SQL Server)
- Writing custom functions (Google BigQuery)
Database systems I have experience working with:
- MS SQL Server (including SSMS, coding queries in C#, VB.NET, and Entity Framework)
- Google BigQuery (including working with FEC data, large voter files and other large data sets)
- SQLite (used locally for one-off and campaign-specific database needs)
- MySQL (used as a backend for websites while working at Aeroflow Healthcare)
- Vertica (previously used with a large poltiical client for large-scale data analysis)
ETL & Automation experience
Automating the boring stuff with Selenium
I have used Selenium to automate navigating websites in two places. One was at Aeroflow where Selenium was used as part of Unit Tests I wrote to test various online forms with valid and invalid data to make sure the correct behaviors are being observed. The other place was on the VA Coordinated Campaign where I used Selenium to automate moving data between multiple political tech tools to build daily refreshes of textbanking lists.
Extract / Transfer / Load (ETL) development
ETL processes are a key component of Renegade Squirrel's back-end system. I have console applications that download and process voter data, update voter data to track changes between updates, update campaign data, and load absentee ballot data. I also have written similar programs for previous employers.
Data cleaning & conversion
Python / Pandas
I wrote Pandas scripts to clean and format phone numbers (ex: validating correct lengths, handling international formats, working with special characters, etc.), de-duplicate rows, and standardize names. I also wrote numerous Pandas scripts to convert data exported from a voter file or one political tech tool to import into other tools.