Back to landing
Product · A/B Testing

Split the traffic.
Measure what replies.
Let the math move the weight.

Drop a split node into any workflow and every branch becomes a variant: different message, different timing, different sequence. A nightly pass scores each branch on real outcomes, replies, accepted invites, booked meetings, and shifts traffic toward what works. Underperformers get cut. Every change is logged.

01 · The split node

One node. Any experiment.

Set weighted branches on the canvas and each lead entering the node is routed once, deterministically. Everything downstream of a branch is fair game: swap the opener, delay the follow-up, route one branch to email and the other to LinkedIn.

847 leads entering
Splitdeterministic
Direct ask34%
Own message, own timing, own follow-up chain.
Case study first33%
Own message, own timing, own follow-up chain.
Soft opener33%
Own message, own timing, own follow-up chain.
Assignment is hashed per lead and node. The same lead always lands on the same branch, so a re-run never flips anyone mid-conversation.
02 · Auto-optimize

Scored on outcomes,
not opens.

Flip on Auto-Optimize and a nightly pass measures each branch on positive exits downstream: someone replied, accepted, booked a meeting. The engine runs Thompson Sampling, a bandit algorithm banks and ad platforms use for the same problem. No LLM in the loop, just probability.

NIGHTLY PASS · 01:00 UTC
Direct ask
240 leads31 positive exits12.9%
34%
Case study first
236 leads9 positive exits3.8%
33%
Soft opener
231 leads26 positive exits11.3%
33%
Waiting for tonight's pass. Every branch already cleared the 20-lead volume gate.
03 · Guardrails

Aggressive on losers.
Paranoid about noise.

An optimizer that reacts to every blip will wreck a campaign faster than no optimizer at all. Four rules keep it honest.

Volume gate
No branch gets judged before it has at least 20 leads through it (you can raise the bar). Small samples produce loud, wrong answers. The optimizer waits.
Noise filter
If no weight would move by at least 3 percentage points, nothing changes. Your config doesn't churn every night because of sampling noise.
Kill rule with a floor
A branch is only killed after 30+ leads AND converting below half of the best branch's rate. The best branch can never be killed. Nothing is deleted, weight just goes to zero.
Sticky assignment
Leads already assigned to a branch stay on it, whatever the new weights say. Nobody gets yanked out of a conversation mid-sequence.
04 · Audit trail

Every decision, written down.

Each applied change lands in the optimization log with old weights, new weights, per-branch stats, and the reasoning in plain language. Skipped nights are logged too, with the gate that stopped them. Nothing moves silently.

OPTIMIZATION LOG · COLD OUTREACH Q3 · SPLIT #1
Jul 7, 01:00 UTC
34 / 33 / 33 → 52 / 0 / 48
Killed 'Case study first' (3.8% vs best 12.9%, 236 leads). Weight redistributed to survivors.
Jul 6, 01:00 UTC
No change
Largest weight move was 1.8pp, below the 3pp significance gate.
Jul 5, 01:00 UTC
38 / 30 / 32 → 34 / 33 / 33
1,000 Monte Carlo rounds on Beta(successes+1, failures+1) per branch. Win share became the new weights.
Jul 2, 01:00 UTC
Skipped
Branch 'Soft opener' at 14 leads, below the 20-lead volume gate.

Stop guessing which message works.

Add a split node to your next campaign, flip on Auto-Optimize, and check the log in a week.

Start free trial