I made the same AI play
a Korean voter and an American voter
Synthetic panels · a Korean local-election backtest × a live US midterm run · AI-prediction methodology
A CRM message has five gates. Sent → opened → read → clicked → bought. Each gate has its own hurdle, but in my experience the tallest wall is in the middle — getting it opened is the subject line's job, and getting it bought is the product's job. Getting it read and clicked is the message's job, and it is the hardest one.
"Who to send to" turned out to be a solvable problem. When I built an RFM model for a retail brand's CRM, click rates and revenue lined up in the exact order the segments were cut — not because the model was clever, but because the criterion — what counts as one purchase — was cut properly. One question stayed unsolved: "so what message do we write?" Nobody knows before sending. After sending, it is too late.
Chasing that question led me to synthetic audiences — showing a message to a population of AI personas first and reading the response distribution. In the US it is already being commercialized, starting with political campaigns. I decided to test before believing, and picked elections as the test bench — the vote count is published, making it the most transparent behavioral data on earth. So I made the same AI play Korean voters and American voters. The short version: the Korean AI went silent, and the American AI wouldn't budge.
01Korea — the AI refuses to answer
Korea came first. We built personas from real census and voting statistics and asked them political questions. A 35-year-old Seoul man: asked his party preference, he answered "no party" twelve times out of twelve — at temperature 1.0, with randomness wide open, the variance was zero. A 45-year-old Gwangju woman rated the president positively zero times out of ten — in a city where actual approval runs 79%. Swapping in past presidents changed nothing. It isn't ignorance; the model avoids the topic of Korean politics itself.
Handing the persona regional statistics didn't help either. Mid-level aggregates like "Gangnam 30.1%" never opened its mouth — an AI does not translate aggregate numbers into an individual's voice.
02The breakthrough — history, not statistics
One line opened the door: "In the last presidential election, you voted for candidate ○○." Given a personal past action instead of an aggregate, the same persona immediately produced a natural distribution — eight same-party voters splitting into approve 4 / disapprove 2 / undecided 2, the texture you see in real surveys.
Past votes were allocated by each district's actual counted ratios (election commission, exhaustive). District ordering fell into place (Gangnam 15% < Nowon 24%), and against the newest survey the model could not have memorized, the Seoul error came down to +0.6%p.
One rule came out of this. Reading statistics to an AI is useless. You must translate the statistics into a personal history. That translation is the heart of the method — remember it; we will use it again below.
03America — the opposite failure
We ported the same engine to the US, and the opposite problem appeared. The American personas split perfectly with no evidence at all — a 58-year-old white Texan man picked the same side eight times out of eight. In Maine, the personas reproduced the state's famous crossover pattern — Democratic leaners backing a Republican senator — without it ever being put in the prompt. The model has read so much English-language politics that it is less a persona than a pundit.
The problem is that this knowledge carries its own lean. Even in states the Republicans win comfortably, the model kept producing Democratic leads, and plugging in components — news, candidate profiles — barely moved it. The Korean AI failed because it was empty; the American AI fails because it is full.
04The discovery is that the failure modes are opposites
Figure 2 · The same persona, the same question, repeated — the failures point in opposite directions
| Korean personas | American personas | |
|---|---|---|
| Failure mode | Reticence — avoids answering | Overconfidence — insists on its own view |
| Cause | Too little Korean political data | Too much English political data |
| What you do | Design and inject evidence (past behavior) | Pin it down with statistical anchors (calibration) |
What the table says: either way, this is not a problem of "prompting the AI well." It is a problem of designing what to give as evidence and what to pin as statistics.
Back in graduate school, one line from a guest lecture by a Google data scientist stuck with me. The gist: "You'll use an off-the-shelf model anyway. What matters is which data you feed it, how you process it, and how you deliver it." That was before anyone said "LLM," and today not a word of it needs changing. Everyone uses the same models — what differs is the design of the data you inject. The Korean persona's silence and the American persona's stubbornness were proving that old sentence all over again.
05The scorecard — honestly
Where the method stands should be written in numbers. We backtested Korea's June 3 local elections (the model's knowledge cutoff precedes the election, so it cannot have memorized the answer). One yardstick throughout — error (MAE, %p) = Σ|predicted vote share − actual counted share| ÷ number of regions. Lower is better.
| Stage | Overall error (MAE) | 4 battlegrounds |
|---|---|---|
| Allocation + AI only | 12.45%p | 4.74 |
| + incumbency premium & margin compression | 6.89 | 2.65 |
| + hometown cross-voting | 4.08 | 2.65 |
| Domestic rival AI, published | 2.99 | 4.04 |
| Broadcast exit poll | 2.68 | — |
Figure 1 · June 3 local-election backtest — error falls as each measured coefficient is added. Assembled with the answer known
On overall error we still trail the rival AI (4.08 vs 2.99). But in the battlegrounds where races are actually decided, we lead (2.65 vs 4.04) — exit-poll territory. And this is a backtest: parts assembled with the answer known. The real proof of performance does not exist yet — that is §07.
One experiment is missing from the table — before those coefficients, we tried injecting each candidate's micro-profile (incumbency, hometown, career) directly into the personas. The error fell from 12.45 to 10.35. The lever is real. But inspection showed the model was adding a flat +5–9%p to the word "incumbent" — regions where that happened to be the right direction improved, and the others got worse. The measured incumbency premium is +2.95%p. So the experiment was not discarded but replaced — the AI knows the direction, but you must never let it set the size. The lever the micro-data revealed, rebuilt as a statistical coefficient, is the table's second row.
Hometown cross-voting works the same way: +22.3%p measured in Daegu in 2014 repeated twelve years later as +22.5%p for the same candidate — every coefficient comes from exhaustive counts of past elections.
06So what does this engine sell
Back to the opening question — "what message do we write?" The engine sells two things. To politics: AI predictions with exit-poll-grade precision in battlegrounds — exactly matching a campaign's need to be right only where races are decided. To commerce: a synthetic customer panel that tests the message before you send it.
Carry over the rule from §02 verbatim. Just as a voter persona would not open its mouth for "Gangnam 30.1%," a customer persona cannot act on "our repeat rate is 24%." Just as we gave the voter "you voted for ○○," you give the customer your company's order history — "over the past year you bought this brand three times, most recently on discount." At that moment the persona starts answering: about the new concept, the price increase, copy A versus copy B.
The next step is that each gate can be asked separately. The five gates are five different questions — does this subject line make you open, does this first sentence make you read, does this offer make you click? A real send has to clear all five at once; a synthetic panel can test them one at a time. That is what we are designing now — not yet measured, so this paragraph is a design, not a performance claim.
And the lesson of §03 attaches as a warning. The model has read plenty of consumer trends too — left alone, it voices its own opinions. That is why a calibration layer pinned to measured statistics is mandatory, and that layer is the product. Everyone uses the same models. Turning your company's data into a history a persona can act from is what almost nobody does.
07If the method is wrong, we publish that too
A prediction for the US midterms (November 3) is in progress. The methodology and the pass bar (error ≤4%p) were sealed before the count — the document's fingerprint (hash) is public in advance, so nothing can be revised afterward, and if it fails, the failure is published as is. The backtest was practice; this is the first live round.
To be precise — the sealed numbers are not what this post's AI personas produced directly. They are a statistical anchor built from approval ratings. Just before sealing, feeding the AI news and candidate information moved one state (Georgia) by 17 points, and the cause could not be controlled, so the AI's direct output was removed from the sealed figures. The AI engine is scored alongside as a diagnostic on the same day, and its result is published separately. It is exactly what §06 says — the AI alone does not get there; it needs a layer pinned down by measured statistics.
Two more elections were locked before the count — Brazil's presidential runoff (October 25) and Taiwan's local elections (November 28). Those two are structural models built from past returns and polls, not personas. Each is scored in its own follow-up post as results come in, with the sealed numbers next to the actual count.
Preparing the seal taught us two things. One — the prediction industry's default business is selection bias. Hits get framed after the fact; misses disappear quietly. Sealing before the count makes that business impossible. We seal not to look honest, but because only a prediction that cannot be cherry-picked afterward can serve as the basis for the next contract. Two — the hardest part was not predicting but writing the pass bar in advance. "How many points of error counts as success" had to be nailed down before seeing the result — and the moment that bar was set, every backtest number turned from an excuse into a basis.
Nothing confines this structure to elections. It works for CRM campaigns too — seal the panel's prediction (which segment responds to which message) before the send, then score it together against measured clicks and revenue. It turns "let's verify our AI against outcomes" into a contract structure, and that is what we are designing next.
If you want the November 3 scorecard, leave your email below. When the count is in, we will write the follow-up scoring piece and send it when it publishes — whether we were right or wrong.
Method — synthetic panel: response distributions from a population of LLM personas grounded in published aggregate data (election commission counts, census). Every predictive figure in this piece is an AI prediction, not a poll. Backtests use only elections after the model's knowledge cutoff (no answer leakage). No individual-level voter profiling — personas are syntheses of published statistics. This is a record of methodology, not commentary on any party or candidate.
Same method, different industry. The bottleneck differs every time — finding that difference is what this series does.
One industry, one bottleneck, public data only — straight to your inbox. Nothing else, ever.
This is as far as public data can see. Repurchase, incrementality, attribution — the numbers that change decisions live inside your own data, and making them countable is what Lambency does.
caffrey.w.lee@gmail.com