
Corpus Synthesis
Read a provided corpus of documents and synthesize it into a single coherent overview: a planner sets the synthesis question and the extraction schema, a researcher reads every document and extracts structured notes keyed back to each source, and a copywriter synthesizes the extracts into a unified narrative organized by idea rather than by document. The ordering matters because synthesizing before reading everything privileges the first few documents, and a write-up keyed to documents instead of ideas just summarizes each file; locking a synthesis question and per-document extraction first guarantees full coverage and a real cross-document synthesis. Use this for synthesizing a folder of docs/notes/papers, 'pull together everything we know about X', cross-document summaries, knowledge consolidation, and meeting/research-note synthesis.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the synthesisplannerentry
synthesis question + per-document extraction schema
Show working prompt
1. List the corpus (every document/file in scope) and state the synthesis question in one sentence — what unified understanding the output must deliver. 2. Define a per-document extraction schema: for each doc capture source id, key claims/findings, relevant data points, and any stance or contradiction. 3. Decide the output structure: organize by theme/idea (3-6 themes), not by document, plus an open-questions/contradictions section. 4. Write an acceptance-criteria checklist (e.g. 'every document in the corpus is read and extracted', 'output is organized by theme not by file', 'each synthesized point cites the document(s) it came from', 'contradictions across documents are surfaced', 'nothing is asserted that is not in the corpus'). 5. Record decisions. Call write_task_note with the corpus list, schema, themes, and checklist; write the same to notes/scope.md.
- Read & extractresearcher
structured extract per document, keyed to the source
Show working prompt
1. Open and read EVERY document in the corpus — do not skip or sample. 2. For each, append an extract block to notes/extracts.md following the schema: source id [n], its key claims/findings, supporting data points (with the figure), and any stance or point where it conflicts with another document. 3. Tag each extract with which output theme(s) it speaks to. 4. As you read, note explicit cross-document agreements and contradictions. 5. Stay faithful to the source — capture what the document says, not your opinion, and quote load-bearing passages. Good looks like an extract file complete enough that the writer never reopens the originals. Do not write the synthesis yet.
- Synthesizecopywriter
unified narrative organized by idea, citing sources
Show working prompt
1. Write synthesis.md organized by the locked themes (one section each), weaving together what the documents collectively say. 2. Each synthesized point cites the document(s) [n] it draws from so a reader can trace it. 3. Open with a 1-paragraph answer to the synthesis question, then the thematic body, then an 'Open questions & contradictions' section that surfaces where the corpus disagrees or leaves gaps. 4. Synthesize across documents — do NOT produce a per-file summary list. 5. Assert only what the corpus supports (from notes/extracts.md). 6. Add a source key so every [n] maps to a document. 7. On a loop-back, fix only the named gaps. 8. Call write_task_note with the synthesis path and which criteria now pass.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Open synthesis.md and check EACH criterion PASS/FAIL: (1) every document in notes/scope.md appears in notes/extracts.md (full coverage) and is cited somewhere in the synthesis; (2) the output is organized by theme, not file-by-file; (3) each synthesized point cites its source document(s); (4) an open-questions/contradictions section surfaces real cross-document disagreement; (5) spot-check 3 points against notes/extracts.md to confirm nothing was asserted beyond the corpus. A per-file summary list, or a synthesis missing documents, FAILS. 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: "synthesize" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). 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.
- synthesize these documents
- pull together everything on
- summarize this corpus
- consolidate these notes
- cross-document summary
Source
View this craftbook on GitHub · MIT license