learning-ab-split-keylisted
Install: claude install-skill dostrovcev/outbound-agent-skills
# Split by lead, lock the arm, keep the key smaller than a batch
Assign the arm per lead, derived from the lead id, and lock it for the whole thread: first touch, follow-ups and live replies all stay in the same arm. The key's period must be smaller than a batch, so every batch is split across all arms. Measure on the first text touch, whatever form it takes. Size the test before you start.
## Why
Our first key for a three-arm test was `id % 100` cut into bands of 33. Batches were 10 to 15 consecutive ids, so one band was wider than a batch. Whole batches went out in a single voice: one batch was all arm B, another all arm V, two in a row all arm A. Batches are built per country and signal, so the arm got glued to the market. The test was measuring the market, not the text.
Sizing was the other lesson. Our base reply rate was 2.2%. With three arms, 677 first touches per arm over six weeks is enough to see a difference only from 5.6% against that base. Anything smaller would take longer than the test is worth.
## How to apply
1. Compute the arm from the lead id with a short period, for example `id % 3` for three arms. Check that the period is smaller than your smallest batch.
2. Store the arm as a label on the lead or thread when the first text is written.
3. For every later message in the thread (follow-up, reply to a reply), read the arm from the stored label. Never recompute it with the key: if the key ever changes, running threads keep their voice.
4. Define the unit a