Skip to content

newsletter-abtest: daily A/B digest for a running newsletter campaign - #15

Merged
ralyodio merged 1 commit into
mainfrom
feat/newsletter-abtest
Sep 24, 2026
Merged

ralyodio merged 1 commit into
mainfrom
feat/newsletter-abtest

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

One email a day while a newsletter A/B test runs.

  • Reads myna newsletter stats <id> --json for every issue matching a prefix, records a daily snapshot, and reports what moved since the last reading.
  • Pools the arms across every issue of the campaign and runs a two-proportion z test on clicks, because one issue's arms are far too small alone.
  • When a gap is not separable it prints the recipients per arm that would settle it. That is the number that decides the next issue's design: on the 5,140 list, 0.57% against 1.41% needs ~2,200 an arm and is decidable in one send; 0.93% against 1.18% needs ~26,000 and never will be.
  • The month's sends live in a plan file, and the digest prints the myna newsletter blast command for whichever issue is next.

Installed on dev at 05:25 UTC daily for the Profullstack campaign; the cron line carries a note to delete it when the month is done. First digest sent and received.

🤖 Generated with Claude Code

Reads myna newsletter stats for every issue of a campaign, records one
snapshot a day, and mails what moved plus the arms pooled across issues with
a two-proportion z test on clicks. When a gap is not separable it prints the
per-arm n that would settle it, which is the number that actually decides how
to design the next issue.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ralyodio
ralyodio merged commit 01dc0b1 into main Sep 24, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant