Skip to content
Exodus Consulting Exodus Consulting
Book a free audit

Industries / Political parties and campaign organisations

A campaign runs on lists, and the lists disagree.

Supporter records arrive from sign-up forms, door knocks, donation pages, phone banks and the voters list, each in its own shape. We read every source into one, match the records, resolve the duplicates and score each match so the campaign knows what it can rely on. Outreach and reporting then run off one reconciled set instead of five arguing spreadsheets.

Who this is for

How it actually runs

Before anything is built, this is the week we are describing.

No software can be scoped from a category name. These are the specifics of political parties and campaign organisations that decide what is worth building and what is not.

  1. 01

    The same supporter exists three times.

    A person signs a petition on the website, gives twenty dollars on a donation page and answers a door knock two months later. Each tool stores its own record: one with a middle initial, one with an old apartment number, one with a phone number typed as text. Nobody merges them, so the campaign counts three supporters, mails three envelopes and never knows the person already gave.

  2. 02

    Volunteers type fast and go home.

    Canvass sheets, phone notes and sign-up cards get keyed in by whoever is free at nine at night. Street names are abbreviated three ways, postal codes are guessed, and a lean is marked as a 3 by one volunteer and a Y by another. The field director trusts the totals because there is nothing else to trust, and the errors compound quietly until a list is cut from them.

  3. 03

    Money has rules, and the rules have a clock.

    In BC an individual may give $1,429.70 per candidate or elector organisation in 2026, contributors must be BC residents and citizens or permanent residents, and the disclosure statement is due 90 days after voting day. Contributions arrive through a card page, e-transfers and cheques at events, so someone reconciles them by hand, checks the limit per person and hopes the same donor was not entered under two spellings.

  4. 04

    The voters list comes with conditions.

    Candidates and elector organisations receive a list of electors for election purposes and nothing else. It cannot be folded into a fundraising database or sold on, and it goes stale the moment people move. Matching a supporter file against it to find who is registered and where they vote is real work, and it has to be done in a way that keeps the list separate and traceable when the regulator asks.

  5. 05

    Voting day is a phone tree.

    Vancouver's 2022 election drew 36.3 percent of registered voters, so the whole day is spent finding your own supporters and getting them to a voting place. Strike lists come in from scrutineers on paper, callers work from a morning export, and the same household gets called twice while another gets missed. Every hour the list is behind, volunteers ring people who have already voted.

  6. 06

    Nobody has a clean count of supporters.

    Ask a campaign manager how many distinct people back the party and the answer is a range: the email list says one number, the donor file another, the canvass app a third. Those figures overlap and nobody knows by how much. Budgets for mail, calls and doors get set off the largest number, and the campaign pays to reach the same people again and again.

Where it leaks

Every one of these is measurable. Most are not measured.

The free audit prices these in your own numbers before anything is scoped. You keep the map whether or not you hire us.

Where the money and the hours go in political parties and campaign organisations, how it is measured today, and what closes it.
The leak How it is measured today What closes it
Duplicate mail, calls and emails to one person Rarely measured; noticed when a donor complains about three envelopes One reconciled record per person with a scored match across every source
Contributions refunded or disclosed late because the donor was entered twice Discovered at filing time while reconciling the ledger against the card platform Per-person totals against the limit, checked at the moment the gift lands
Volunteer hours spent re-keying and cleaning spreadsheets Not measured; absorbed into late nights before a cut Sources parsed into one shape on load, with fixes applied once and remembered
Callers ringing people who already voted Anecdotes from the phone bank at 6pm Strike lists keyed in through the day and the call list refreshed from one set
Budget set off the largest list rather than the real distinct count Never known; three lists, three numbers, no overlap figure A distinct supporter count with its overlap and confidence band printed beside it

What we build

8 builds that pay for themselves here.

Each one states what it reads, what it does, and what a person still approves. Scope is agreed after the audit, one build at a time, against a baseline you sign.

Every source read into one shape

Reads exports from the CRM, canvass app, email tool, payment platforms and old spreadsheets. Splits names into parts, standardises addresses to Canada Post format, normalises phone numbers and lean codes, and stamps every field with the source it came from and the date it was captured. The campaign's data lead approves the field mapping for each new source before it is loaded.

Measured by: Number of source files loaded without a manual fix

Records matched and every join scored

Compares records across sources on name, address, email, phone and date of birth where held, and assigns each candidate match a confidence score. High scores link on their own and are logged. Middling scores go to a review queue. Low scores stay apart. A person sets the thresholds and can move them, and every link records who or what made it.

Measured by: Duplicate rate remaining in the master file after each load

A review queue for the near-misses

Presents uncertain pairs side by side: same surname and street but different unit, same email and a changed surname, two donors with one phone number. The reviewer confirms, rejects or asks for more information, and the decision is stored so the same pair never comes back. Confirmed decisions feed the thresholds, but no merge happens without the click.

Measured by: Pairs reviewed per volunteer hour

A consent and contact-preference ledger

Holds, per person, what they consented to, from which form, on which date, and every unsubscribe, do-not-call or do-not-knock request from any channel. Unsubscribes from the email tool and do-not-call flags from the phone tool land here within the hour. Any list cut for outreach is filtered through the ledger. Nobody can override a stop request, including the campaign manager.

Measured by: Messages sent to people with a stop request on file: target zero

Contribution limits checked before the receipt

Reads every contribution from the payment platforms, the bank notices and the ledger, matches the donor to one reconciled record, and totals gifts per person against the annual limit for the year. Flags anything over the limit, any anonymous gift over $50, and any donor whose address is outside BC. The finance lead decides on refunds and issues the receipt; software only raises the flag.

Measured by: Over-limit or ineligible contributions caught before receipting

Walk and call lists cut from one set

Takes the reconciled supporter file, applies the consent ledger, and cuts turf by street and voting division so a household appears on one sheet only. Voting-day strike lists from scrutineers are keyed in and the call list refreshes so callers stop ringing people who have voted. The field director reviews and releases each cut; nothing is pushed to volunteers unreviewed.

Measured by: Duplicate contacts per household on voting day

Reports where every number cites its source

Assembles the weekly numbers the campaign manager asks for: distinct supporters, new sign-ups, contributions to date against budget, doors knocked and calls completed, all from the reconciled store. Each figure carries the source file, load date and confidence band it was built from, so a disputed number can be traced back in one click rather than argued about in a meeting.

Measured by: Hours spent rebuilding the weekly numbers by hand

Segments for targeted outreach from first-party data

Builds audiences from what the campaign itself holds and has consent for: donors who gave once and not again, sign-ups who never answered a door, volunteers who worked last election, households in a division with a low return rate. Segments are named and documented, drawn only from consented fields, and every send list is signed off by the communications lead before it leaves the building.

Measured by: Response rate per segment versus the untargeted list

The numbers

Borrowed statistics, with their sources and their limits printed.

None of these are our results. They are the published state of political parties and campaign organisations, linked so you can check them, with the caveat attached where the number is a survey, a forecast or a vendor's own figure.

88.0%

Even the national register kept by Elections Canada holds only 88 percent of eligible electors at their current address, so any supporter file older than a cycle is carrying stale addresses

Elections Canada, 2025

Currency figure for the November 2025 annual lists; coverage on the same page is 96.1 percent of 29.3 million eligible electors. A federal register, not a campaign's own file.

1.5%

Elections Canada estimates about 1.5 percent of active register records are overcoverage: duplicates, deceased electors and non-citizens, on a file of 27.4 million records

Elections Canada, 2023

Estimate from a record-linkage study of the 2021 register extract with Statistics Canada. A professionally maintained register; campaign files built from many tools typically carry far more duplication.

36.3%

Vancouver's 2022 general local election recorded 171,494 ballots from 472,665 registered voters, a turnout of 36.3 percent, which is why finding and moving your own supporters is the whole of voting day

City of Vancouver, 2022

One municipality, one election. Turnout varies by year and jurisdiction.

3,400+

Elections BC reviewed and audited more than 3,400 campaign financing disclosure statements after the 2022 general local elections and issued monetary penalties for non-compliance

Elections BC, 2024

News release accompanying the report on the October 15, 2022 elections. Covers all BC local jurisdictions, not Vancouver alone.

Where the data comes from

Your systems of record stay exactly where they are.

We read them, we do not replace them. Each one below says what we connect to, how, and the line the build does not cross.

Supporter database and CRM

Usually: NationBuilder, Salesforce Nonprofit Cloud, HubSpot, Google Sheets and Excel exports from earlier campaigns

What it holds. Supporter profiles, tags, email and phone consent flags, donation history, volunteer status, event RSVPs, website sign-ups

How we connect. API where the vendor offers one, otherwise a scheduled CSV export read into our own store. We read profiles, tags and consent fields and write back a match key and a confidence score to a custom field.

Where it stops. We never merge or delete records inside the vendor system on our own. Merges below the agreed confidence threshold sit in a queue until a named person approves them.

Field and phone tools

Usually: Ecanvasser, CallHub, Knockbase, MiniVAN style canvass apps, plus paper walk sheets scanned at the end of the night

What it holds. Turf assignments, door results, lean codes, call outcomes, do-not-call requests, volunteer shift logs

How we connect. Nightly export or webhook on each completed canvass or call session. We normalise lean codes and outcomes into one vocabulary and attach them to the reconciled supporter record.

Where it stops. We do not push new walk lists or dial lists into the field tool without the field director signing off on the cut. Do-not-call requests flow one way: into the ledger, immediately, with no override.

Email, donations and payments

Usually: Mailchimp, Constant Contact, NationBuilder email, Stripe, Square, PayPal, e-transfer notices from the bank

What it holds. Send history, opens and unsubscribes, donation amounts and dates, card receipts, recurring gifts, refunds

How we connect. Read-only API access to the email and payment platforms, plus a mailbox rule that files e-transfer notices for parsing. Unsubscribes and bounces are read every hour and written to the consent ledger.

Where it stops. We never send a message or move money. Sends are scheduled by a person after the audience is reviewed. Refunds of over-limit contributions are raised as a task for the finance lead, not processed by software.

Finance, filing and electoral lists

Usually: QuickBooks Online, Xero, Elections BC's electronic filing system for disclosure statements, the list of electors supplied for the election

What it holds. The general ledger, receipted contributions, campaign expenses, the disclosure statement itself, elector names and addresses

How we connect. Scheduled export from the accounting system so contributions in the ledger can be reconciled against the payment platforms. The electors list is loaded into a separate store with its own access log and matched against, never copied into, the supporter set.

Where it stops. Nothing is filed with Elections BC or the City of Vancouver by software. The disclosure statement is prepared as a draft with every line traceable, and a person reviews, signs and files it.

Built around your rules

The regimes that govern this work, and how the build answers each one.

Constraints come first, because they decide the architecture. Bring us your hosting, residency and regulatory rules at the start and we design to them rather than around them.

Regulatory and professional obligations that shape a build in political parties and campaign organisations.
Regime What it demands here How the build complies
Local Elections Campaign Financing Act (LECFA), administered by Elections BC Elector organisations register, run all money through the person responsible under the Act, accept contributions only from BC residents who are citizens or permanent residents, stay under the annual per-person limit ($1,429.70 in 2026), refuse anonymous gifts over $50, put sponsorship information on all election advertising, file a disclosure statement within 90 days of voting day, file annual financial reports by March 31, and keep records for five years. Every contribution is matched to one reconciled donor record and totalled against the limit as it lands. Ineligible or over-limit gifts are flagged for the finance lead. The disclosure statement is assembled as a draft with each line traceable to its source, and a person reviews, signs and files it. Records and their sources are retained for the full statutory period.
Vancouver Charter, Part I (elections in the City of Vancouver) Vancouver runs its elections under its own Charter rather than the Local Government Act. The City's Chief Election Officer administers registration, the list of electors and the declaration of results, and reports candidates who fail to file disclosure statements to an open meeting of Council. The list of electors is provided for election purposes only. The list of electors is loaded into a separate store with its own access log, used only for matching registered status and voting division, and never copied into the supporter database or used for fundraising. It is deleted at the end of the period the campaign is permitted to hold it, and the deletion is recorded.
Personal Information Protection Act (BC PIPA) PIPA applies to political parties in BC, including federal parties operating in the province, as the Information and Privacy Commissioner ordered in 2022 and the BC Supreme Court upheld in 2024. It requires consent for collection, use and disclosure, limits collection to what a reasonable person would consider appropriate, gives people a right to see and correct their information, and requires retention periods. The Commissioner's 2019 Full Disclosure report found parties collecting too much about voters without consent. Every field records where it came from and the consent that covers it. We do not collect or infer ethnicity, religion, income or other sensitive characteristics. Access requests can be answered from one reconciled record. Retention periods are set per source and enforced, and disclosure to platforms for profiling does not happen.
Personal Information Protection and Electronic Documents Act (PIPEDA) PIPEDA does not directly govern political parties, but it does govern the commercial vendors that hold campaign data: the CRM, email, payment and hosting providers. It requires those organisations to protect the information, limit its use to the purpose collected, and report breaches. Vendor contracts are reviewed for where data is stored and who can see it. Our own store is hosted in Canada. Access is per person and logged, exports are recorded, and the campaign owns the code and the data outright so nothing depends on a vendor's retention policy.
Canada's Anti-Spam Legislation (CASL), enforced by the CRTC Messages from a party or candidate whose primary purpose is to solicit a financial or non-monetary contribution are excluded from CASL. Any other commercial electronic message, and any message that promotes a product, service or person, needs consent, sender identification and a working unsubscribe. Penalties run to $10 million per violation for an organisation. The consent ledger records the basis for contacting each person, and every send list is filtered through it. Unsubscribes from every channel are honoured within the hour. Because the exclusion turns on the primary purpose of a message, the communications lead classifies each send before it goes and the classification is stored with it.
CRTC Unsolicited Telecommunications Rules for political entities Parties and candidates are exempt from the National Do Not Call List but must keep an internal do-not-call list, process requests immediately, keep numbers on it for three years and identify themselves and the purpose of the call. Recorded-message calls may not solicit donations without express consent, and may only run 9am to 9:30pm on weekdays and 10am to 6pm on weekends. Do-not-call requests from the phone tool flow into the ledger the same day and cannot be overridden. Dial lists are filtered against it before release. Call scripts and identification lines are stored with each list, and recorded-message campaigns are scheduled by a person inside the permitted hours.

Where we stop

  • We will not let software merge two records on its own below the agreed confidence threshold. A wrong merge turns two supporters into one and a real person into a stranger, so every uncertain match waits for a named reviewer.
  • We will not let software send a message to anyone whose consent status is unknown or who has asked to be left alone, and we will not build an override for it, not even for the campaign manager on voting day.
  • We will not score or profile voters on ethnicity, religion, income or other sensitive characteristics. BC's regulator found parties collecting this without consent, and it is not needed to run a clean list.

A person stays in the loop

Anything that spends money, sends something irreversible, or carries a legal obligation arrives as a draft with a named reviewer. The system prepares the work. A person decides whether it ships.

You own the code and the data at the end of the engagement.

Our work here

What we have built in this industry, at its real status.

Live means running now. In build means under construction, with some phases delivered and some not. Shipped means delivered and closed. Where there is no number yet, we say so instead of borrowing one.

ABC, Vancouver: records parsed and reconciled

ABC is a municipal political party in Vancouver, and the engagement is live. The organisation grew in stages, so the same person could exist three times across different tools with a different spelling and a stale address on each. We read every source into a common shape, match the records across them, resolve the duplicates and near-duplicates, and attach a confidence score to every match so a weak join stays visible instead of being quietly trusted.

ABC, Vancouver: campaigns planned off one set

Their targeted marketing campaigns are planned against the reconciled set rather than several disagreeing lists. That is the point of the reconciliation work: outreach built on unreconciled records spends its budget arguing with the data instead of reaching people. We claim no electoral or polling outcome, take no position on the party or its policies, and nothing here should be read as the party endorsing us.


What the work taught us

  1. 01

    Campaign data is never one file. It is whatever tool each part of the operation adopted in the year it started, and the reconciliation is most of the value.

  2. 02

    A confidence score matters more than a merge. A weak join that is visible can be checked; a weak join that was trusted quietly turns into wrong mail and wrong totals.

  3. 03

    Near-duplicates are the hard part. Exact duplicates are easy; the same person with a middle initial, a new flat and a new surname is where the review queue earns its place.

  4. 04

    Consent has to travel with the record. If the source form and the date are not stored beside the email address, the campaign cannot prove why it is allowed to send.

  5. 05

    The voters list must stay separate from the supporter file. Matching against it is fine and useful; folding it in is the mistake that cannot be undone.

The objections

The reasons an owner here says no, answered straight.

Keep it. The problem is not the tool, it is that the canvass app, the payment page and three old spreadsheets never agreed with it. We read all of them into one shape, match the records, score each match and write the result back into the system you already use. You keep your workflow and get one supporter per person.

The parsing and matching are built against your actual files, and the first reconciled set usually exists before a walk list would have been cut anyway. Elector organisations run between elections too: annual filings, donor renewals, membership. The set is more useful the earlier it starts, and it carries into the next cycle.

Messy is the normal case and the reason confidence scoring exists. Clean pairs link on their own, uncertain pairs go to a queue with the evidence side by side, and hopeless records stay apart and are listed. You see exactly how much of the file is trustworthy rather than being told it is fine.

They are clearer than they were: BC's Commissioner and the BC Supreme Court have both said PIPA applies to parties in the province. A reconciled set with a source and a consent basis on every field is the least risky way to hold supporter data, because you can answer an access request or a regulator from one record.

They do not have to. Volunteers keep using the canvass app and the phone tool they know. The reconciliation runs underneath, on exports and connections, and the only new screen is the review queue for uncertain matches, which one or two data volunteers work through in short sessions.

Questions

The questions we get asked in political parties and campaign organisations.

It is a number that says how strongly two records point to the same person, based on how many fields agree and how reliable each field is. An exact email match scores high. A shared surname and street with different units scores low. You set the thresholds: above one line records link on their own, between the lines a person reviews, below the other they stay apart.

We can match against it to confirm who is registered and which voting division they are in, which is what it is provided for. We do not copy it into the supporter database, use it for fundraising, or keep it past the period you are allowed to hold it. It sits in its own store with an access log so you can show exactly how it was used.

Messages from a party or candidate whose primary purpose is asking for a contribution are excluded. Almost everything else sent to an email address or by text, including messages promoting a candidate, needs consent, sender identification and an unsubscribe. The CRTC publishes this and we build to it: the communications lead classifies each send and the consent ledger filters the list.

The matching links the two records, and the per-person total is recalculated against the annual limit for that year. If the combined total is over, or the donor turns out to be outside BC, the finance lead gets a flag with both records and the evidence for the link. The refund or the receipt is their decision; software only makes sure the question is asked before filing.

You do. The reconciled set, the match decisions, the consent ledger and the code are yours, written into the agreement before anything is built. That matters for a campaign more than most, because the organisation outlives any one cycle and the next team should inherit a clean set rather than start from exports again.

What happens next

Start with the audit, and know the number before you commit.

Three to five days. We map where the hours and the money go in your political parties and campaign organisations operation and hand you a ranked plan with the payback attached.

We map where time and money leak, and show the arithmetic before you commit to anything. You keep the map whether or not you hire us. If we do build, we agree the baseline in writing first, the clock starts at deployment rather than signature, and you own the code.

Who you talk to
Shiv and Vishal. No account managers, no slide decks.
Direct
shiv@exdsconsulting.com
Read next
What we build, then Our work.