RidingDesk
Canadian Voter CRM & Campaign Platform
Mar 2026
A voter CRM and campaign-management platform for Canadian federal, provincial, and municipal elections — with Canadian data residency, CASL-compliant outreach, and riding-level electoral data.
Visit RidingDeskOverview
RidingDesk is a campaign-management platform built specifically for Canadian politics. It handles everything a riding-level campaign actually needs — voter contact records, canvassing, lawn signs, volunteer coordination, fundraising, and bulk email — across federal, provincial, and municipal races, with proper electoral-district data baked in.
It’s hosted 100% in Canada on a CACloud Toronto server, with Cloudflare sitting in front for DNS, CDN, and DDoS.
Technical Challenges
Canadian political software has to clear a specific bar that most generic CRMs miss:
- Data residency. Donor lists and voter records need to stay in Canada end-to-end.
- CASL compliance. Bulk email can’t be a free-for-all — consent, unsubscribe, and audit trails are legal requirements.
- Electoral accuracy. Boundaries, postal-code lookups, and riding names differ across federal, provincial, and 8+ municipal systems.
- Operational resilience. Campaigns spike on nomination day and election day — the platform needs to hold up under bursty load with a small team running it.
Solution
- Next.js 16 App Router + React 19 + Prisma 7 on PostgreSQL 16, deployed to a CACloud Toronto VM behind Nginx + PM2 with Cloudflare in front.
- In-house bulk email via AWS SES (ca-central-1) with a CASL consent model (express, implied donor, implied volunteer, political exemption), per-recipient delivery tracking, HMAC-signed unsubscribe tokens, RFC 8058 List-Unsubscribe headers, and auto-pause on >5% bounce or >0.1% complaint rate.
- Electoral-data pipeline ingesting federal, provincial, and municipal boundaries from shapefiles + GeoJSON into Postgres, with postal-code-to-riding lookup and province-aware ward disambiguation (no more Cambridge ON ↔ Cambridge NB collisions).
- Turf management for canvassing — draw walk-list polygons on a Leaflet map against a riding boundary, or list street-number ranges, then assign to volunteers.
- Trust tiers on every campaign (NEW / TRUSTED / RESTRICTED) with daily send caps and platform-admin approval for first or large (≥1000) sends.
- RBAC (Campaign Manager, Communications Lead, Volunteer Coordinator, etc.) with client-side route gating plus server-side role checks.
- Full EN/FR i18n via next-intl, onboarding tour via driver.js, and a Playwright E2E suite.
Key Features
- Voter records, canvassing walk lists, turf maps
- Lawn-sign tracking with geocoded Leaflet map (install/collect workflow)
- Volunteer management with signed agreements
- Fundraising dashboard with monthly trend charts and Stripe-backed donations
- CASL-compliant bulk email with merge tags, recipient filters, test sends
- Nomination endorsement tracker (e.g. Ontario’s 25-signature requirement)
- Election-day live dashboard over Server-Sent Events
- Canadian-hosted, Canadian-owned infrastructure end-to-end