Campaigns, movements & advocacy

A 50-state advocacy platform that routes each supporter to their state.

A national umbrella app: 50 data-driven state pages, double opt-in signup, a referral system, and live momentum maps.

national advocacy app
Sector
National advocacy movement
Engagement
Product build
Stack
Next.js · Postgres · D3
Status
Built · near-live

Context

A national advocacy movement needed one umbrella presence that could speak to supporters in all fifty states at once and route each person to their own state's effort, without spinning up and maintaining fifty separate websites.

What we built

We built a data-driven national web app: fifty per-state pages generated from a single dataset, each state classified by movement maturity (established, building, dormant, greenfield); interactive momentum and support maps (D3-geo/TopoJSON); a full email signup flow with double opt-in, confirmation, and unsubscribe via Mailgun; a referral and share-code system with per-supporter tracking; an admin dashboard with CSV export; live supporter counters; and donations gated behind a placeholder so nothing broken ships before a campaign exists.

The value

  • One national platform stands in for what would have been dozens of disconnected state sites. Every state present and on-brand from day one.
  • Supporters are captured compliantly with double opt-in and routed to the right state effort automatically, so no lead is lost to the wrong place.
  • Growth is measurable and viral by design: referral and share-code tracking plus live momentum maps turn supporters into a growth engine.
  • The movement owns its list and its infrastructure, with admin export. It can never be locked out of its own audience.
50

state pages from one dataset

Double opt-in

compliant signup + referral system

Owned list

admin CSV export, never locked out

~$4k/yr

site + email SaaS it replaces (est.)

Client name and identifying details withheld by design. Every figure here is drawn from the system we actually delivered.

Your work would get the same discretion.

Tell us what's breaking. We'll tell you whether we've solved something like it. And if we take it on, your name stays yours.

Start with a diagnostic