An AI Agent That Wins Opens and Loses Revenue
Lumen Beauty uses an AI agent in Dotdigital to write subject lines and select the hero product block for a weekly newsletter sent to 240,000 contacts. After eight weeks, the AI variant's open rate was 31.4% against 26.2% for a human-written control, but revenue per recipient was £0.41 versus £0.44, and unsubscribe rate rose from 0.11% to 0.19%. AI-selected product blocks get 2.9x the click-through of human-selected blocks, but the selection skews to three best-sellers already promoted in every other campaign. The accessory category, which carries 38% gross margin against 22% for hero SKUs, appears in under 2% of AI sends. Some AI subject lines reference a specific past purchase, for example 'Still thinking about that serum?' to contacts whose last order was 11 months ago. Legal has flagged this as implying ongoing monitoring. Per-segment-per-block sample sizes after eight weeks are mostly under 300 contacts. The agent was trained on 14 months of click data with no revenue or margin signal.
1. Decide whether to keep or stop the AI agent, and set the guardrails you would put around it.
Read the worked answer
Open rate is the wrong metric and it is moving the wrong way. Revenue per recipient fell 7% (£0.44 to £0.41) while opens rose 5.2pp. The subject lines are winning opens the content cannot repay - a curiosity gap. Unsubscribes rising from 0.11% to 0.19% is a 73% increase, which at 240,000 weekly contacts is roughly 190 extra unsubscribes per week.
Verdict: keep the agent, change its objective and constrain it. The underlying capability - matching product to contact - is real, as the 2.9x CTR shows. What is broken is the target it optimises.
Guardrails:
- Move the objective from click to margin-weighted revenue. The agent was trained on click data, so it learned what gets clicked, which is best-sellers. Feed it gross margin per SKU and revenue per recipient, then retrain or re-weight. Without this, business rules will fight the incentive forever.
- Constrain the assortment. Cap each best-seller's share of sends and force accessory inclusion in a set proportion, then check whether accessory attach rate rises without hurting revenue per recipient. If it does not, margin-weighted training is the real fix.
- Keep a permanent 10% human-written holdout, every week, so you can detect drift and justify the agent's existence each quarter.
- Human review for new subject-line patterns plus a blocklist of phrasings implying surveillance.
Do not judge on eight weeks alone. That is one seasonal cycle, and the training data contained no revenue signal at all.
2. Legal has flagged the subject line 'Still thinking about that serum?'. How do you fix this at the system level rather than editing one line?
Read the worked answer
Why it fails. Sent to someone whose last order was 11 months ago, the line implies the brand is tracking current attention, and it is factually flimsy: an 11-month gap is not 'still thinking'. Legal is right. The risk is not only regulatory but reputational, and recipients who feel watched unsubscribe - which is plausibly part of the 0.19% you are seeing.
Fix the pattern, not the copy. Banning this one line leaves the generator free to produce variants.
- Restrict the personalization tokens the agent may use in subject lines to: first name, category affinity, loyalty tier, and recency band expressed positively ('a year with us', 'back for more'). Remove specific past-purchase references and any construction implying ongoing observation.
- Add a time threshold: purchase-referencing language is allowed only within 90 days, and only as a factual statement such as 'Your October order'.
- Add an automated pre-send check against a blocklist of verbs and constructions ('still', 'watching', 'noticed you', 'we saw'). Anything that trips it goes to a human for the first four weeks.
- Keep the review log. If a regulator or journalist asks, you can show the control existed.
Then measure the cost. Compare revenue per recipient for constrained against unconstrained subject lines on the 10% holdout. If constrained lines give up 1–2pp of open rate but recover revenue per recipient, the constraint is free. Expect it to be, because the open-rate gain was not converting anyway.
Do not rely on a prompt instruction alone. Model behaviour drifts; token allowlists and pre-send checks do not.
3. Given that segment-level sample sizes are mostly under 300 contacts, how would you test the revised agent so the result is trustworthy?
Read the worked answer
The current cells are too small to read. Under 300 contacts per segment per block means a 2.9x CTR difference could easily be noise at segment level, and any per-segment winner you pick will be partly luck. Multiplicity makes it worse: testing 20 segments at 95% confidence yields roughly one false winner by chance.
Three changes.
- Test where you have power. Aggregate to category (hair, skincare, accessories, fragrance) rather than segment by block. Four categories by two arms at 240,000 weekly sends gives tens of thousands per cell.
- Fix the arms and the horizon. One control (human-selected) and one treatment (AI with the margin-weighted objective), each with a 10% holdout, evaluated over a minimum of eight weeks and preferably twelve. Declare the primary metric in advance as revenue per recipient. Pre-registering it stops you choosing whichever metric looks best afterwards.
- Use sequential testing or a fixed sample, not weekly peeking. Checking significance each week and stopping when it crosses a threshold means you will stop on noise. Decide the sample size up front or use a method built for continuous monitoring.
What to do with the eight weeks you already have. Treat it as directional. Revenue per recipient of £0.41 against £0.44 across 240,000 sends may well be large enough to be meaningful in aggregate - check that first - but discard the segment-level claims entirely.
Report the uncertainty. Give the board a range and the test horizon rather than a single uplift number. An agent that is honestly 3% better is more useful than one claimed to be 40% better on a 280-contact cell.