Email-to-page promise match ("the email said 30 seconds")

Trigger: the project lead, 12:33 GMT on 27 Oct 2026. The parcels outreach email promised a "30 second video". The page it linked to played a 10-minute film. Each concrete promise in an email (a length, a price, "free", a date, a named document) is a contract the landing page has to honour in its first screen.

What practitioners measured

How to do it

  1. List the promises. Before any send, pull every concrete claim from the email: numbers with units (30 seconds, 36 parcels, £4.99), "free", dates, named attachments or pages.
  2. Check the first screen. Each promise must be visible at 390 px without scrolling, in the same words. The email states "30 second video", so the page states "(30 seconds)" beside the player.
  3. One ask, mirrored. If the email's ask is "watch the video and reply", the page's first action is that video, not a menu.
  4. Keep the long version one tap away. The short asset is what was promised. The full one sits under it as "Watch the full video (10 minutes)", labelled with its length so nobody gets a surprise.
  5. Freeze promised pages. Once an email has gone out with a link, treat the page's first screen as locked to the email copy. Any later edit (corrections included) keeps the promised elements, or the follow-up email names the change.
  6. Run the lint. `python3 tools/promise_check.py email.txt … lists each number+unit/price/"free" phrase from the email and whether the live page shows it. Exit code 1 means a mismatch, so fix the page (or the draft) before sending.

How we apply it to Cedwyn

Sources

Raw Markdown: email-to-page-promise-match-message-match.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all