//Who it's for
Campaign software for consultants running multiple races
Facts checked against official sources · September 9, 2026
A local-race consultant runs eight or twelve clients at once, most of them with no staff, on budgets that cannot absorb enterprise software. The tooling problem is not features; it is switching. Twelve logins, twelve spreadsheets, twelve places a volunteer's opt-out has to be honored, and a licensing agreement for every client's file that says the data cannot be pooled.
This page explains how a consultant uses Culper: one account with a membership on each client campaign, data isolation enforced in the database, the walking app handed to each client's volunteers, reporting the client can read, what to set up on day one, and where the product stops and the consultant's work begins.
Several clients, one login
A Culper account is a person. One consultant can hold a campaign-manager membership on every client campaign and switch between them from the sidebar; there is no shared login, no per-client seat, and no reason for a client to know another client's slug. Each campaign is its own workspace with its own file, lists, walks, texting registration, and team. The candidate account on each campaign owns billing; a campaign manager has everything else.
The Committee tier is the fit for a consultancy: everything in the Campaign tier, unlimited campaigns from one workspace, cross-campaign reporting, dedicated onboarding, and SLA-backed uptime. A single client with a real field team is a Campaign-tier race; a first-time candidate with three volunteers is Challenger. Pricing for all three is set after an onboarding call rather than published, so the number matches the scope of the race.
When a race ends, the campaign is archived: every member keeps read access to the history, and writes are blocked. A campaign with no activity for 180 days is archived automatically after a warning at 150, which keeps a consultancy's account from accumulating live workspaces for races that ended two cycles ago.
Per-client data isolation
Commercial voter extracts from L2, i360, and Aristotle are licensed to one client. That rule shapes the architecture: each client's file is uploaded into that client's workspace and nowhere else, and every campaign-scoped table carries a campaign id with a PostgreSQL row-level security policy that checks membership before a row is read or written. Application code filters too, but the database is the boundary. A consultant's membership on client A gives no read on client B, and a bug in a page cannot cross the line.
The plain-English query layer follows the same rule. The model never sees voter rows; it emits a constrained query that a server-side validator checks against an allowlist, and the query runs as a read-only database role scoped to the requesting campaign, with the prompt and result count logged. Sign-in is by magic link, sessions are refreshed against protected routes, and platform administrators have an explicit role gate with their actions audit-logged. The full posture is at /security.
There is one supported way to work across two clients' data, and it is deliberately narrow: a walk can be shared from one campaign to another so the other campaign's volunteers can knock it. Knocks land on the host's walk, results mirror back to the guest only for voters it is independently entitled to see, and no vendor data or personal details are copied.
What a consultant sets up on day one
Setup for a new client is an afternoon if the file is ready. The order below is the one that keeps texting approval, the long pole, from blocking anything else.
- Request access for the client and take the onboarding call. The workspace is created with the office, district, and election date, and you and the candidate have dashboard access on day one.
- Start 10DLC brand and campaign registration and Campaign Verify vetting immediately. Sending stays disabled until the carriers approve, and approval runs in days to weeks.
- Import the file: an NGP VAN export, the state or county file, or an L2, i360, or Aristotle subset. Column mapping is automatic for those formats; confirm the vote history columns before building any list.
- Set the jurisdiction and voter universe in settings so counts and walk generation stay inside the district.
- Build the first three lists (habitual voters, presidential-year-only voters, supporters) and save them in a folder.
- Load the door script and the survey. Every survey answer lands on the voter record, so ask only what the plan will act on.
- Set the campaign's brand (colors and logo) in settings.
- Invite the candidate at the candidate role, the treasurer or field lead as staff with specific permissions, and volunteers by share link with the app links attached.
- Generate the first batch of walks from the habitual-voter list and drop the first yard-sign pins.
Handing clients the walking app
The walking app is the part of the product a client's volunteers touch, and it needs no consultant in the loop once it is set up. Volunteers accept an invite by email or share link, install the iOS or Android app from the links in the invite, and see their assignments; a walker who has not installed the app can use a browser link for a specific walk instead. Visits are GPS-verified, survey answers sync to the dashboard as they are captured, and the app captures offline and syncs when it reconnects.
Walk generation is a four-step wizard the client's field lead can run alone: pick a list, split by proximity into blocks of a chosen size (default about 150 doors, range 30 to 500) or by precinct, choose knock-and-talk or door-hanger-only, preview, create. Walks are hand-assigned, open for any volunteer to claim, or restricted to a named list; two walkers on one walk split the doors. Assignment sends a push notification to the app and nothing else, so a new walker needs a text the first time.
Give the client's field lead the staff role with the walks and volunteers permission buckets and nothing in outreach or fundraising. They can generate, assign, and watch the live map without being able to send a text or export a list, which is usually exactly the split a consultant wants.
Reporting to clients
The reporting a client reads is built in rather than assembled in a spreadsheet. The voters-reached report shows every voter touched, by channel (walk, text, email, mail) and by day, with a per-voter touch count. Each walk has a results page with visit outcomes and survey answers. The leaderboard scores each volunteer's doors, surveys, signs, and events. The peer-to-peer texting monitor shows how many contacts need a first message, need a reply, are in conversation, or opted out. Polls by text report invites, opt-ins, and completions, and export.
Because the candidate has their own login, the client can watch the same dashboards you do; there is nothing to send them on Friday. Every write is audit-logged, and every plain-English query is logged with its prompt and result count, which is useful when a client asks what happened to a list. Cross-campaign reporting across all of a consultancy's races is part of the Committee tier.
When a client needs analysis the dashboards do not cover, the Get Help menu in the dashboard files a support ticket; a data-analysis request is answered within 24 to 48 hours. Priority support is included on the Campaign and Committee tiers.
Where Culper does not replace the consultant
The product does the operational work a client cannot afford staff for. It does not do the work they are paying you for, and it is worth being clear with clients about the line.
- Strategy, message, and budget. The tool builds the list you specify; deciding which list to build is the job.
- Targeting judgment. Vote-history filters and the query layer return what you ask for; knowing what to ask for is yours.
- Mail strategy and creative. The product can print and mail a piece you design to a saved list, with a quote before anything is charged, and it logs mail produced elsewhere so the touch counts in reporting. The plan and the design are yours.
- Paid media. Television, radio, and digital ad strategy and buying stay with you or a media consultant.
- Press, debate prep, and opposition research.
- Scientific polling. Text polls rank messages and find supporters; a benchmark survey with a real sample is a pollster's job.
- Compliance filing and legal advice. Campaign finance reports, ballot access paperwork, and TCPA counsel are outside the product; /learn/campaign-finance-basics-for-local-candidates covers the basics and the state guides list the agencies.
- The voter file itself. Each client obtains and uploads the file they are licensed for; the product does not supply it.
- Online donation processing. Stripe Connect payouts and embeddable donation widgets are in development; confirm timing on the onboarding call, and set each client up on Anedot, ActBlue, or WinRed for online contributions in the meantime.
Fitting the tool to the race
Not every client needs every feature, and turning features off is part of the setup. A school board client in a single trustee area needs the file, walks, and the sign map, and should skip text polls and email to strangers. A council client in a single-member district adds outreach once 10DLC clears. A mayoral or legislative client uses walk groups and priorities, peer-to-peer texting at volume, text polls for message ranking, and events with check-in. A county party or slate uses the Committee tier's precinct-chair role, which scopes a chair to one precinct's voters and walks and exists only on party, PAC, and coalition workspaces.
The audience pages for each of those races (/for/school-board-candidates, /for/city-council-candidates, /for/mayoral-candidates, /for/state-legislative-candidates, /for/county-party-organizations) spell out the setup and the skip list for each, and /compare/ngp-van-alternative sets out where the product sits relative to the enterprise vendors a consultant already knows.
Frequently asked questions
Can I run all my clients from one Culper account?
Yes. One account holds a membership on each client campaign with its own role, and you switch campaigns from the sidebar. Each campaign is a separate workspace with its own file, lists, walks, texting registration, and team, isolated at the database layer. The candidate owns billing on each; a campaign manager has everything else.
Can one client's data ever be seen by another client?
No. Every campaign-scoped table carries a campaign id with a row-level security policy that checks membership before a row is read or written, and the plain-English query layer runs as a read-only role scoped to one campaign. The only cross-campaign feature is walk sharing, which mirrors results back only for voters the receiving campaign is independently entitled to see and copies no personal data.
Who pays, the consultant or the client?
The candidate account on each campaign owns billing. A consultancy running several races is typically on the Committee tier, which covers unlimited campaigns from one workspace with cross-campaign reporting and dedicated onboarding; the pricing conversation happens on the onboarding call and can be structured for the consultancy or per client.
Does Culper sync with VAN or other vendor systems?
No. NGP VAN exports, state files, and L2, i360, and Aristotle subsets import with automatic column mapping, but there is no live sync in either direction; treat an export as a snapshot and refresh it when a new one is issued. The annotations, tags, and survey answers your team creates live in the client's workspace.
What happens to a client's workspace after the election?
The campaign is archived. Every member keeps read access to the history, including walk results and reports, and every write is blocked. A campaign with no activity for 180 days is archived automatically after a warning email at 150 days, so old races do not stay live by accident.
Bring the whole client list
Keep reading
More from Who it's for