What we build
We build for your problem, not from a catalogue.
Every campaign and organization is stuck on something slightly different, so the work starts with a call: you describe what is actually in the way, and the developer who would build it works out what would move your numbers. What follows are examples of the shapes that tends to take, not a menu.
Examples of what that has looked like
Illustrative, not a portfolio, and not a list to choose from. There is no shipped campaign work to point at yet. Yours would be built for your situation.
Voter analysis and classification
Scoring and segmenting your file so outreach goes to the people most likely to move, not the whole list.
Ingest the state file alongside your own supporter, donor and event records, resolve the duplicates between them, and produce the priority cuts your field plan actually needs. Delivered as lists you can load straight into the tools your organizers already use.
Footage into social clips
A debate, town hall or livestream becomes a folder of vertical, captioned clips ready to post, plus an editable timeline for whoever wants to tune them.
Campaigns record hours of usable footage and post almost none of it, because cutting it is a person-day nobody has. Automatic transcription finds the moments, reframes to vertical, burns captions, and hands back both a post-ready file and a real editor project so your media person keeps control rather than being handed something they cannot change.
The creators who matter in your district
Give it a district, get back a ranked list of the local social accounts that actually reach the people who live there.
National influencer lists are useless downballot. This looks at who is posting about local issues, who the local audience follows, and who is geographically real rather than nationally famous, then ranks them so your comms person has twenty names to work instead of a guess.
Social listening with routing
Every mention of your campaign, classified by urgency and sentiment, with the ones that need a human sent to the right person.
Collection across platforms, classification that separates a reporter asking a real question from background noise, and routing into whatever your team already watches. The point is that nothing urgent sits unread for six hours.
AI-driven SMS for donor data
A texting tool that holds a real conversation, collects what you need, and writes it back to your CRM.
Compliant from the start: 10DLC registration, opt-out handling that actually works, and consent records you can produce later. The conversation is scripted where it has to be and flexible where it helps.
Real-time donation thermometer
A live fundraising total you can drop into a site, a stream overlay, or an event screen.
Reads from your existing processor, updates as money lands, and stays up when a thousand people load it at once because somebody just tweeted the link.
One place for members, events and volunteers
Contacts, events, shifts and community membership in a single system instead of four spreadsheets and a group chat.
The tool most organizations actually need and no vendor will build, because every organization needs a slightly different one. Includes the unglamorous half: who showed up, who lapsed, who is on which chapter roster, and a number the director can trust on Monday morning.
Community platform automation
The Discord or Slack where your volunteers actually live, wired to the systems that track them.
Role assignment when somebody signs up, onboarding that does not require a human, event reminders where people will see them, and a bridge so activity in chat reaches your CRM instead of evaporating.
Sign-in that bridges the tools you already use
A supporter clicks an email, signs in once, and lands on the right form with their details already filled in.
Most organizations do not need an account system. They need three existing tools to agree about who somebody is. A thin identity bridge between email, your action platform and your community does that without a migration.
Shared boards instead of one person’s spreadsheet
Priorities, assignments and status somewhere the whole team can see, rather than on the laptop of whoever built it.
Small teams run on a spreadsheet that one person maintains and everyone else guesses about. A shared board with real accounts and real history is a two-week build and removes a standing point of failure.
Opponent and ad monitoring
What your opponent is spending, saying and running, collected daily instead of when somebody remembers to look.
The Meta and Google ad libraries are public, and so are FEC and state campaign finance filings. Watching all of it on a schedule and alerting on change turns opposition research from an occasional scramble into something that happens whether anyone is paying attention.
Reproducible social data collection
Gather platform data for research, archive the raw responses, and hand a clean dataset to whoever is doing the analysis.
Built for the case where an academic or in-house analyst needs the data and you need the collection to be defensible. Raw API responses are kept alongside the parsed output so the dataset stays faithful and somebody can check your work later.
Documents into data
Filings, agendas, disclosures and public comment turned into rows you can query, with a link back to the source page.
Campaign finance filings, lobbying disclosures, council agendas, assessor records and zoning notices, much of it scanned. Extraction ships with a labelled evaluation set so you know the accuracy rather than being told it.
Multilingual content pipeline
Your material in the languages your district actually speaks, without waiting on a vendor for each piece.
Translation with a human review step, glossary control so candidate names and policy terms stay consistent, and output in the formats your existing tools expect. In a lot of districts this is the difference between reaching a community and gesturing at it.
Applied AI
This is the part that changed. Work that needed a team of five, or a vendor invoice, is now a pipeline a good engineer builds in a fortnight.
- Extraction from documents nobody wants to read. Campaign finance filings, lobbying disclosures, council agendas, assessor records, zoning notices. Much of it scanned. Out the other end: structured rows you can query, with a link back to the page it came from.
- Classification and triage at volume. Ten thousand public comments, constituent messages, or press mentions sorted, clustered, and routed. The work an intern army used to do badly.
- Legislative tracking that is actually useful. Bill text diffed across versions, classified by topic, with alerts that say what changed rather than that something changed.
- Hearings made findable. Transcription with speaker diarization, indexed and searchable. A fifteen-hour hearing becomes a five-minute question.
- Retrieval over your own corpus. Statute, bill text, testimony, and two decades of institutional memory in a shared drive. With citations.
The part that separates this from the sales pitch
Every one of these ships with an evaluation set. Hand-labeled examples, precision and recall reported separately, and a number that tells you when the pipeline has degraded. Anyone who quotes you an accuracy figure without showing how it was measured is guessing, and on this kind of work a confident wrong answer is worse than no answer.
What we will not do with AI: write your fundraising copy, generate persuasion content, synthesize a voice or a likeness, or produce anything built to look like a person wrote it. Not a legal position, just where the line is.
Data infrastructure
The unglamorous half, and the half that is usually broken.
- Voter file ingestion. A different schema in every state, refreshed monthly, five to twenty million rows apiece. Normalizing that into one queryable model, and re-normalizing when a state silently renames a column.
- Entity matching. Petition signers, donors, event RSVPs, and a spreadsheet somebody has kept since 2022, matched against the file. Address standardization, household rollup, blocking strategy, and honest precision and recall instead of a single flattering number.
- Reconciling systems that disagree. Your CRM, fundraising platform, event tool, and texting vendor each believe something different about the same person. That is a pipeline, not a cleanup project.
- Incremental everything. Reprocessing nightly is how a data stack becomes too expensive to run in October.
- Geography. Turf cut from street geometry, not rectangles drawn on a map. Precinct aggregation, and disaggregation onto new lines after redistricting.
- Election night results. Every clerk publishes differently: an HTML table, a nightly CSV, a scanned PDF. Collecting and reconciling that against a hard deadline.
On voter file licences: we hold none and resell nothing. The licence is yours, the data stays in infrastructure you own, and we work inside terms you already signed.
Software people actually use
Where the hard part is people and permissions, not throughput.
- Relational organizing. Supporters reaching their own networks. The data model is a graph, the privacy questions are real, and getting either wrong is the difference between a tool people use and a tool people warn each other about.
- Volunteer logistics. Recruitment, shifts, reminders, no-shows, and a number the field director can trust at 8am.
- Multi-tenant permissions. State org, county chairs, precinct captains, a coordinated campaign, and a partner who should see three fields and nothing else. Enforced in the database, not the frontend. Audited.
- Field tools that work offline. Canvassers lose signal exactly where you need them. Local-first storage with real conflict resolution, because two people will knock the same door.
- Moderation and abuse surfaces. Anything public and political gets attacked. That is a day-one requirement, not a later feature.
- Texting that stays compliant. 10DLC registration, carrier filtering, opt-outs that actually work, and consent records you can produce later.
Systems that cannot fail on one specific day
Most software gets to have a bad afternoon. Election infrastructure does not. Static fallbacks on read-heavy surfaces, load tested against a real GOTV curve, caching that fails open, and a named human on call for the last seventy-two hours.
We would rather ship something smaller that holds than something ambitious still being debugged the weekend before.
Two commitments about the code
- You own it. Your repositories, your cloud accounts, your data. Nothing depends on us continuing to exist.
- Open source by default. Anything general enough to help another organization gets published. Every campaign needs the same ten things, and rebuilding them privately each cycle is how the sector stays poor.
