← All craftbooks

Daily Email Digest from a Corpus

Comms and ops automationevalv1.0.0released 2026-06-05workflow: build-loop

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Source

View this craftbook on GitHub · MIT license