Why we built message personalization
Non-basic, easy-to-use, personalized advocacy messages
Ada's TL;DR digest
Legislative offices count identical form emails instead of reading them, and the facts that would make a message land sit unused in the organization's spreadsheets. We built personalization on three data layers: personas for who is writing, tracks for where each lawmaker stands, and the organization's own data about every district. Five hundred advocates click once and five hundred different emails arrive, each anchored in the sender's district and the lawmaker's record, with setup that takes a spreadsheet rather than a project.
Legislative offices don't read form emails. They count them. When five hundred identical messages land in an inbox, staff tally them as "500 in favor" and move on. Advocates can feel it too. There's not much conviction in hitting send on a message that feels generic.
Our clients kept describing the same problem from the other side. A trade association knows each member's industry segment. A state coalition knows the economic impact in each district, or how many jobs are in each region. All of that knowledge sits in spreadsheets while the platform sent everyone the same message.
Every feature we've built started as a customer suggestion. They all pointed at the same two gaps: advocate personalization is lost, and the knowledge organizations already hold never reaches the inbox. So we designed our personalization system around closing them.
"AdvocacyAI’s use of artificial intelligence to analyze and develop profiles of our audience, as well as the ability to segment and engage advocates in the future, are some of the most exciting features in grassroots today."
Kevin Coroneos
Director, Digital Strategy
Investment Company Institute
The two obvious answers, and why they aren't enough
The industry default is an edit box: hand the advocate a form email and hope they change it. Most don't. They're busy, and the entire point of a form action is that it takes thirty seconds. Editing has its place, and advocates with real expertise should take that time. But even the advocate who rewrites every line cannot add what they do not know. No advocate walks around knowing how many jobs their industry supports in their senator's district. The facts that make an email land live with the organization, and an edit box cannot reach them.
The other tempting answer is to let AI write a unique email for every advocate. We use AI, but for where it helps advocacy professionals do their jobs. It does not ghostwrite on an advocate's behalf. Watching a machine compose your message is a poor introduction to advocating for something you care about, and the output still contains nothing your organization knows. Generated variety is not relevance.
So we built personalization around real data from the advocate, the organization, and the elected representative.
1. Who's writing: Personas
2. Who's receiving: Tracks
The same message should not go to your bill's sponsor and to the chair who's blocking it. Tracks group a campaign's targets by where they stand, whether champion, persuadable, or opposed, using knowledge your government affairs team already carries around in their heads.
You then write the messaging for each track, with as many versions as you want behind each one. The sponsor's track says thank you and asks them to hold firm. The persuadable track makes the constituent case. The opposition track counts heads in the district. Selection happens per recipient at send time, which matters more than it sounds: an advocate matched to three lawmakers sends three different personalized emails with one click.
3. Relevance: Your data
Organizations track things about lawmakers that no platform should presume to model for them. The jobs their industry supports in each district. The economic impact of a policy there. The plants and members in each lawmaker's backyard. That knowledge is what makes an argument land, and whatever your team tracks about a lawmaker becomes part of the message.
Here is the same campaign, the same thirty-second click, landing in two different offices. One senator introduced the bill. The other has not taken a position. The senders are different people, in different districts, with different stakes. Nobody wrote a word by hand.
Paul Kessler
to Office of Senator Alvarez
Please Protect 1,900 Manufacturing Jobs in District 52
Dear Senator Alvarez,
As a precision metal fabrication business owner in Owego, I am writing to ask you to support SB 214. Tioga Tool & Stamping depends on the incentives this bill preserves, and manufacturing supports 1,900 jobs across District 52.
Losing the equipment exemption would hit plants like ours first. Please stand up for the people doing this work in New York when SB 214 reaches committee.
Sincerely,
Paul Herrera
Dana Okafor
to Office of Senator Whitfield
Please Protect 4,100 Manufacturing Jobs in District 26
Dear Senator Whitfield,
As a food processing business owner in Marion, I am writing to ask you to support SB 214. Marion Packing Co. depends on the incentives this bill preserves, and manufacturing supports 4,100 jobs across District 26.
Losing the equipment exemption would hit plants like ours first. Please stand up for the people doing this work in Ohio when SB 214 reaches committee.
Sincerely,
Dana Okafor
A staffer can tally five hundred identical emails in a spreadsheet without reading past the subject line. Five hundred different emails, each anchored in the sender's district and the lawmaker's own record, don't tally. They have to be read. Getting read is the entire job.
Why we obsessed over setup
- Personas: the advocate list you were uploading anyway, with one extra column, or a simple custom dropdown on a form.
- Tracks: assigned from a dropdown next to each lawmaker while you're picking targets. Stance data that used to live in one person's head now decides which message each office receives.
- Data: a CSV of what your team already knows, added as variables in the content you were already writing. You never need to write a generic "protect jobs in your district" again.
See one-to-one messaging running on your own data.