Release notes are the most automatable document a PM owns — and the most publicly embarrassing to get wrong. This playbook turns the merged-PR ship list into per-audience release notes and FAQ updates, with every factual claim checked against what actually shipped before anyone outside the team reads a word.
Workflow area: Specs & Docs · Tier: Foundation · Hands-on time: ~20 minutes
The raw material is unambiguous: a list of merged PRs and closed tickets. The transformation is pure writing: engineer-speak into user value, per audience. That's ideal AI territory. The two failure modes are just as specific: the model inflating "groundwork for bulk actions" into "bulk actions are here," and it describing the feature that got reverted on Thursday. Both are caught the same way — checking claims against what actually shipped, not what was planned to ship.
Pull the real ship list, not the plan. Export merged PRs / closed tickets for the release window — titles, one-line descriptions, labels. Explicitly remove anything reverted, feature-flagged off, or dark-launched. This pre-filter is the single highest-value minute in the playbook: the model cannot know what got rolled back; only the list you feed it can.
Run the translation prompt, per audience.
Turn this ship list into release notes for three audiences.
Product context: [ONE LINE]
Release: [VERSION / DATE]
Audiences:
1. CUSTOMER CHANGELOG — value language, no internal jargon,
grouped as New / Improved / Fixed. One line each.
2. INTERNAL (sales & support) — what changed, who it affects,
what to say if a customer asks, links to docs.
3. APP-STORE NOTES — under 500 characters, plain language.
Rules:
- Use ONLY the items in the list. Do not infer unshipped
capabilities from partial work — "part 1 of bulk actions" is
NOT "bulk actions."
- Skip internal-only changes (refactors, CI, telemetry) in
customer-facing outputs; keep them in the internal notes.
- Mark any item you couldn't confidently translate with [UNCLEAR]
instead of guessing what it does.
Ship list:
[PASTE PR/TICKET LIST]
Verify every customer-facing claim against reality. Good output looks like:
NEW
- Approve up to 50 expense requests at once from the queue view.
IMPROVED
- Reminder emails now respect each approver's timezone.
FIXED
- CSV exports no longer drop rows when filters are applied.
[UNCLEAR] "feat: shadow-write approvals to v2 store" — customer
visible? (Flagged, not included.)
For each New/Improved line, open the feature in staging or prod and confirm it does what the note says, at the limits the note states (is it actually 50?). Numbers, limits, and platform availability are where translation quietly invents precision.
Resolve the [UNCLEAR] items with engineering. Thirty seconds per item in the team channel: "customer-visible or not?" An [UNCLEAR] that ships as a guess is how "we announced a feature that doesn't exist" happens.
Update the FAQ against the same list. Second prompt, same conversation: "Here are our current FAQ entries [PASTE]. Given the ship list, which answers are now wrong or incomplete? Draft the updated text for each, marking what changed." Review the diffs — stale docs generate support tickets at a rate no release note offsets.
Read the customer changelog once as a customer, then ship it. Tone check: does it sound like your product, or like every AI changelog ("We're thrilled to announce...")? Cut the thrill, keep the facts, publish through your normal channels.
Ship lists reveal unannounced features and security-relevant fixes — generate notes in your approved AI workspace, and never paste details of an unpatched vulnerability into any external tool.
Keep the verification step visible: the release owner ticks a "claims verified against prod" box before publishing. It's one checkbox of ceremony — and eighteen months of never having to retract a release note.