Skip to content
contract.cli

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.

TL;DR — draftreviewnegotiatedocx2pdfsign. Three tools, five commands, no SaaS, no shared database. Files in, files out.
YOUR MACHINE · NO SAAS · NO TELEMETRY nda-review-cli draft nda-review-cli review nda-review-cli negotiate docx2pdf-cli convert sign-cli sign .md / .docx findings + score agreed text .pdf signed.pdf + audit house policy your rules two-party hybrid backend hash-chained

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.

step 1 · draft
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.

step 2 · review
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.

step 3 · negotiate
# 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.

step 4 · convert
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.

step 5 · sign
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 text
  • output/agreed.docx — the same content as a Word document
  • output/agreed.pdf — the rendered PDF
  • output/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.

Edit this page on GitHub