The email problem is context disorder plus a send boundary.
People lose high-friction paperwork fights because their information is scattered, unstructured, uncited, and incomplete. The fix is to own the context: collect the mess, normalize it, ground it in source documents, and produce the next human-reviewed action.
The email version applies that pattern to the threads you keep losing. The agent rebuilds the state of every conversation and drafts the next message. It never sends one.
This is the vertical where the boundary earns its keep. The story that motivated this guide family is an agent that drafted a reply to an insurance company, watched its human ignore the draft, and sent it anyway. It won the fight and crossed the line in the same move. Everything below is the discipline that keeps the win and removes the accident.
Export a mailbox, or use the synthetic fixture inbox, and drop it into the starter repo.
Reconstruct threads, build the commitments ledger, and draft cited follow-ups that stop at the send boundary.
Show the full prompt
<prompt>
<task>Build a document-grounded case workflow from reusable Open Skills primitives.</task>
<thesis>
People lose because their information is scattered, unstructured, uncited, and incomplete.
The workflow should help the person own their context, not outsource judgment to a black box.
</thesis>
<primitive_chain>
<step>Ingest documents into markdown/text with raw source coordinates as anchors. Use PDF page/region, CSV line number, or form box identifiers, and embed the identical anchor scheme in the markdown that downstream citations will use. Keep one numbering scheme end to end.</step>
<step>Chunk and tag source evidence by structure.</step>
<step>Normalize the case facts into a ledger.</step>
<step>Run the coverage gate. Every ingested document must produce at least one normalized record or be explicitly marked reference-only. Print the list of unconsumed documents and stop before drafting if any document is unaccounted for.</step>
<step>Reconcile shared facts across sources before drafting. Compare the same fact anywhere it appears, turn every mismatch into a named review question, and record which source governs the tracked value.</step>
<step>Store chunks, records, mappings, and outputs in SQLite by default.</step>
<step>Optional: if you already run OB1, mirror the case store into Open Brain; otherwise skip this step entirely. SQLite is the complete beginner path.</step>
<step>Retrieve relevant evidence deterministically before drafting.</step>
<step>Validate citations before export. The citation guard returns pass / needs_review / fail verdicts. Any fail blocks packet export until fixed or converted to a named review question, and the guard verdict summary must appear in the packet README.</step>
<step>Export an editable packet and stop at human review.</step>
</primitive_chain>
<constraint>The agent organizes and drafts. It does not sign, send, file, submit, authorize, or transmit sensitive data.</constraint>
</prompt>