
Daily Email Digest from a Corpus
Produce an email-ready digest that summarizes a corpus of content (docs, feeds, notes) for a recurring send. Scopes what matters and the format first, drafts the digest in a consistent voice, then builds the email-ready output and evaluates for accuracy and scannability.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the digestplannerentry
what to include, sections, format, length
Show working prompt
Decide what a good digest of this corpus looks like: which sources/sections to include, the section structure (e.g. headline, top items, one-line each), target length, and tone. Write an **acceptance-criteria checklist** ("≤ N items per section", "every item links/cites its source", "scannable in under a minute", "no item older than the window"). `write_task_note` the structure + checklist. - Draft the digestcopywriter
write the digest from the corpus, with citations
Show working prompt
Read the corpus and write the digest to the scoped structure. One tight line per item, each citing its source. Lead with what matters. Consistent voice. Do not invent items not in the corpus. `write_task_note` the draft.
- Build the email outputdeveloper
render to an email-ready format
Show working prompt
Render the approved draft to the email-ready deliverable (HTML email or the requested format), with working links and a subject line. Keep it inline-styled and client-safe (no external CSS). On a loop-back, fix only the named gaps. `write_task_note` the output path.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Check accuracy (every item traces to the corpus, nothing invented), citations (each item links its source), scannability (skimmable in under a minute, within length), and freshness (within the window). Write PASS/FAIL per criterion. Then route — this is the whole point of the loop: - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "build" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. If you advance without a target, the loop sends you back by design. After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- daily summary
- email digest
- summarize this corpus
- briefing
Source
View this craftbook on GitHub · MIT license