The workflow
From blank page to signed agreement, on your machine.
Five steps. Each is a single CLI invocation. The output of one step is the input of the next. Stop at any point — the artifacts you have are useful on their own.
draft → review → negotiate →
docx2pdf → sign. Three tools, five commands, no SaaS,
no shared database. Files in, files out.
1 — Draft
Start with nda-review-cli. Pick a template (the bundled mutual or one-way templates,
or the Common Paper Mutual NDA Version 1.0 that ships with the tool), fill in the parties and purpose,
and render the document. You get markdown plus a .docx ready to send.
nda-review-cli draft \
--template common-paper-mutual \
--party-a "Acme Inc." --party-a-address "123 Main St" \
--party-b "Beta LLC" --party-b-address "10 Market Way" \
--purpose "evaluating a partnership" \
--governing-law "California" \
--out output/nda.md \
--out-docx output/nda.docx 2 — Review
Whether the document was drafted by you or arrived from the other side, run it through
review to score it against your house policy. Findings come with severity,
matched rule patterns, and clause-level evidence. Optionally add --llm
to layer in a second-pass adjudication from your model of choice.
nda-review-cli review --file output/nda.md --why \
--out-md output/review.md 3 — Negotiate
If the counterparty has the CLI installed too, you can run a structured back-and-forth on a single state file that bounces between you (email, Drive, Git — whatever channel you prefer). Each round is signed and hash-chained; tampering is detected on load. Stance, clause priorities, and non-negotiable redlines all live in your local policy.
# Party A starts the negotiation
nda-review-cli negotiate init --template common-paper-mutual ... --out neg.json
# Party B counters using their own policy and stance
nda-review-cli negotiate counter --state neg.json --as b --auto
# Party A reviews the diff and accepts
nda-review-cli negotiate diff --state neg.json --out-md round-2.md
nda-review-cli negotiate accept --state neg.json --as a
# Both sign off; finalize emits the agreed text
nda-review-cli negotiate sign-off --state neg.json --as a --yes
nda-review-cli negotiate sign-off --state neg.json --as b --yes
nda-review-cli negotiate finalize --state neg.json \
--out-md output/agreed.md --out-docx output/agreed.docx
No counterparty CLI install? Send them the .docx directly and skip ahead.
Negotiation is opt-in; the workflow doesn't depend on it.
4 — Convert to PDF
Once you have an agreed .docx, hand it to docx2pdf-cli.
Single-file or batch, parallel processing, font validation, and a hybrid backend strategy that picks
the right converter for what's on your machine. No silent fallbacks — failures are loud, fonts are
checked, the output is honest.
docx2pdf output/agreed.docx output/agreed.pdf
# or for a folder full of contracts:
docx2pdf --concurrency 4 --out-dir ./pdfs ./drafts/*.docx 5 — Sign
Hand the PDF to sign-cli. Pick a provider (Dropbox Sign, DocuSign, SignWell,
or the local provider for testing). Each signer gets a per-recipient approval token with a TTL.
Every signing event lands in a hash-chained audit log, and the final receipt bundle includes
RFC 3161 timestamps so you can prove what was signed and when, even years later.
sign-cli send \
--file output/agreed.pdf \
--signer "alice@acme.com:Alice Founder" \
--signer "bob@beta.com:Bob Counsel" \
--provider sign-well
# verify a signed PDF later
sign-cli verify output/agreed.signed.pdf What you end up with
output/agreed.md— the human-readable agreed textoutput/agreed.docx— the same content as a Word documentoutput/agreed.pdf— the rendered PDFoutput/agreed.signed.pdf— the signed PDF, with embedded signatures- A negotiation state file with every round, every amendment, every signature, hash-chained
- A signing receipt bundle with all audit events and timestamps
All of these live on your machine. Nothing is held by a vendor. You can archive them, version-control them, or hand them to opposing counsel as evidence of what was agreed and when. That's the whole point.
Skipping or substituting steps
Each tool stands alone. If you already have a Word template, skip step 1. If you sign with a notary or a different e-signature provider, skip step 5 — you'll still have a clean PDF from step 4. The point isn't that you must use all three; it's that they compose cleanly when you do.