Cardinal TechnologyCardinalTechnology
← All posts
Case StudyCivic TechClaude API

Building Engage: A Political CRM for People Who've Actually Run Campaigns

After seven campaigns as a Field Director, I knew exactly what was wrong with political software. So I built something better.


I've been a Field Director for seven New York State Assembly races. That means I've spent a lot of time doing the unglamorous work that actually wins elections: managing paid canvassers, assigning turf, tracking who talked to whom, and trying to figure out which voters are actually persuadable with the time and budget you have left.

I've also spent a lot of time fighting the tools that are supposed to make that work easier.

The standard political software stack — VAN, NGP, various data portals — was built to solve problems that existed fifteen years ago. The data models reflect that. The UX reflects that. The pricing reflects that. If you're a well-funded congressional campaign, you can afford the enterprise tier and a full-time data director who knows the import format. If you're running a state assembly race with twelve paid canvassers and a $60,000 budget, you're making do with exports and spreadsheets.

Engage started as a tool I needed. It became something more.

The core problem: voter data is everywhere and nowhere

Every competitive state has a voter file — a database of registered voters with address, party enrollment, voting history, and demographic information. In New York, that file has millions of records. Most campaigns buy a slice of it, load it into VAN, and build their universe from there.

The problem is that querying that data in any meaningful way requires either paying for an expensive platform or exporting to Excel and doing the analysis yourself. Neither works well when a canvass director is standing in a parking lot at 9am trying to figure out which precincts to hit that Saturday.

Engage's voter search is built differently. It queries the voter file directly — across millions of records — with response times under 300ms. Fifty-plus filters: party, age range, voting history, turnout score, vote type (mail, early, election day), geography, and more. The results are live; adjusting a filter updates the count instantly. You can see your universe size before you commit to printing walk sheets.

The turnout scores are calculated from voting history and surfaced as a filterable field. A canvass targeting high-turnout Democrats for a GOTV push looks completely different from one targeting low-propensity persuadables in the final week. The tool makes that distinction easy to act on, not something you have to explain to a data consultant.

Turf cutting without a GIS degree

Cutting turf — dividing a universe of voters into walkable geographic assignments for individual canvassers — is one of the most time-consuming pre-canvass tasks. Done well, it saves hours per day in the field. Done badly, canvassers spend half their shift driving between disconnected clusters of addresses.

The canvassing module in Engage puts voters on a map and lets a canvass director draw turf boundaries directly. Click to define a polygon, see which voters fall inside, assign it to a canvasser, export the walk list. The whole workflow that used to take a laptop, a desktop GIS application, and an hour of frustration now takes ten minutes on a tablet.

This was technically straightforward — Google Maps, polygon hit-testing, some coordinate math — but it required understanding the actual workflow to design correctly. The insight that mattered was that turf-cutting is usually done under time pressure, often the morning of a canvass, and the person doing it is managing multiple other things simultaneously. The interface had to be fast and forgiving, not precise and powerful.

FEC data as a first-class feature

The Federal Election Commission publishes detailed contribution data for every federal candidate — donor name, employer, amount, date, zip code. It's public record and it's useful, but the raw bulk files are not easy to work with.

Engage loads the full FEC dataset into DuckDB and makes it queryable through a finance browser: find any federal candidate, see their top donors, filter by employer or zip code, export for analysis. The data updates from the FEC bulk files on a regular cycle.

The more interesting use case is cross-referencing. If a contact in the system has made federal contributions, those donations surface on their contact record automatically — matching on name and address. This gives a field organizer or development director immediate context about someone's giving history without leaving the application.

AI-generated communications

The communications module uses Claude to draft outreach for campaigns and legislative offices. A staff member selects a topic, adds key points, chooses a format (press release, constituent letter, social post, talking points), and gets a draft that reflects the organization's voice.

The implementation is straightforward — a well-structured prompt with context about the organization and the topic — but the workflow integration matters as much as the generation quality. The drafts are editable inline, the generation history is preserved, and the output can be refined through a follow-up prompt without losing context. The goal isn't to replace a communications director; it's to give a one-person legislative office the drafting throughput of a larger team.

What made this project different

Most political software is built by people who understand software. Engage was built by someone who has also managed canvassers in the rain, argued about walk list formats at 7am, and had to explain to a field organizer why the turf didn't work.

That context shows up in decisions that are hard to justify in a product spec but obvious to anyone who has done the work. The voter search returns results in under 300ms because a canvass director doesn't have time to wait. The turf map is touch-friendly because the person using it might be on a phone. The FEC data is cross-referenced on contact records because that's information a development director actually needs.

The best software for a domain comes from people who understand the problem from the inside. That's not a universal principle — sometimes outsider perspective is exactly what a domain needs. But for operational political work, the gap between what tools claim to do and what campaigns actually need has always been wide. Engage is an attempt to close it.


Running a campaign or legislative office and need better tools? Get in touch.