Skip to content

feat(lifecycle): fulfillment mail in the campaign register - #1018

Merged
blove merged 1 commit into
mainfrom
blove/ecstatic-nobel-2683f7
Sep 5, 2026
Merged

feat(lifecycle): fulfillment mail in the campaign register#1018
blove merged 1 commit into
mainfrom
blove/ecstatic-nobel-2683f7

Conversation

@blove

@blove blove commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Rewrite the five fulfillment templates (whitepaper guide, newsletter welcome, contact and pricing acknowledgments, project-connect) in Brian's register per docs/gtm/voice.md: no contractions, no "thanks for" openers, one thought per line, no marketing tone. Every factual element is kept: the four PDF links, the newsletter promise, the reply commitment, and the claimed project signals with the follow-up scope.
  • Fulfillment mail now opens with the same Hey <first name>, greeting as campaign steps. The fulfill branch reads displayName from the job context it already loads, and unusable names fall back to Hey there,.
  • The four whitepaper PDF URLs join the approved recipient-copy link set so every fulfillment body passes campaignDraftViolations (one link, approved links only, no calendar links, at most one question, no HTML).

Tests

  • fulfillment/templates.spec.ts: new register suite (no contractions, no greeting or "thanks" opener in the body, no "let's", short lines) and a suite that runs every fulfillment message including all four papers through the shared draft checks.
  • campaign/send.spec.ts: the fulfill test asserts the greeting in both the text and HTML parts and the PDF rendered as an anchor; a new test covers the Hey there, fallback for a display name carrying a URL. Both fail against the previous send.ts.
  • npx vitest run --config apps/lifecycle/vitest.config.ts: 402 passed / 11 files. npx nx run lifecycle:check passes. eslint clean.

🤖 Generated with Claude Code

Rewrite the whitepaper, newsletter, contact, pricing, and project-connect
fulfillment templates in Brian's voice: no contractions, no "thanks for"
openers, one thought per line, no marketing tone. Every factual element
stays: the four PDF links, the newsletter promise, the reply commitment,
and the claimed project signals.

Fulfillment mail now opens with the same "Hey <first name>," greeting as
campaign steps, read from the job context the fulfill branch already
loads. The four whitepaper PDFs join the approved recipient-copy links so
every fulfillment body passes campaignDraftViolations.

Specs assert the register (no contractions, no greeting baked into the
body, short lines), run every fulfillment message through the shared
draft checks, and cover the greeting plus its "Hey there," fallback on
the fulfill path.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
threadplane Ready Ready Preview Sep 5, 2026 9:18pm UTC

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit 3f941d4 into main Sep 5, 2026
33 checks passed
@blove
blove deleted the blove/ecstatic-nobel-2683f7 branch September 5, 2026 21:35
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