feat(lifecycle): fulfillment mail in the campaign register - #1018
Merged
Conversation
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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
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.Hey <first name>,greeting as campaign steps. The fulfill branch readsdisplayNamefrom the job context it already loads, and unusable names fall back toHey there,.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 theHey there,fallback for a display name carrying a URL. Both fail against the previoussend.ts.npx vitest run --config apps/lifecycle/vitest.config.ts: 402 passed / 11 files.npx nx run lifecycle:checkpasses. eslint clean.🤖 Generated with Claude Code