Skip to content
contract-ops CLI suite

5-minute tour

The whole suite in five minutes.

Every CLI ships a zero-config demo — no setup, no config, no network. Run them top to bottom to see each step of the pipeline, then chain them on your own files.

TL;DR — Nine commands, nothing to configure. Try any one with no installnpx <tool> demo or pipx run <tool> demo — or install the suite for speed. Each demo runs against bundled fixtures and cleans up after itself.

The speed run

Paste these one at a time. Each is self-contained and shows that tool's job in a few seconds.

nine demos, zero config
extract demo            # 1. ingest — extract a bundled NDA into structured JSON
template-vault demo     # 2. store — compose a template + swap a clause, with provenance
draft --demo            # 3. draft — fill [Party A], [Effective Date], … in a template
nda-review-cli demo     # 4. review — score a sample NDA against a house policy
contract-lint demo      # 5. lint — flag internal defects in a deliberately-flawed sample
compare --demo          # 6. compare — clause-aware drift gate (exits 2 on the fixture)
docx2pdf demo           # 7. convert — render a sample DOCX to PDF
npx @drbaher/sign-cli demo   # 8. sign — offline PAdES sign + verify + receipt
contract-vault demo     # 9. manage — register signed deals + project a renewals calendar

What just happened

  • extract — ingested a bundled NDA and emitted structured JSON: parties, clauses, dates, and governing law, each with a confidence + source.
  • template-vault — forked a base NDA, swapped one clause from another, and recorded the provenance in meta.json.
  • draft — substituted typed placeholders into a template and printed the filled draft.
  • nda-review-cli — scored the sample NDA and emitted a structured verdict (decision + risk + findings).
  • contract-lint — linted a deliberately-flawed sample and reported its internal defects (leftover placeholders, broken cross-references, defined-term and numbering issues) as findings.
  • compare — diffed two versions clause-by-clause and flagged the substantive drift (exit 2).
  • docx2pdf — converted a DOCX to PDF with whatever backend is installed.
  • sign — created, sent, signed, verified, and bundled a receipt for a PDF — fully offline.
  • contract-vault — registered two signed contracts and projected their renewals/notice deadlines as an .ics calendar.

Now chain them on your own files

The tools read - from stdin and write to stdout, so the pre-signature flow composes as a real pipeline. Bring your own template ref, deal params, and policy:

end-to-end on real files
# resolve a template from the vault → fill it → review it → gate drift → render → sign
template-vault get nda/house-mutual \
  | draft - --params deal.json \
  | tee filled.md \
  | nda-review-cli review --file - --playbook config/org-policy.json --out-md review.md

# gate the ready-to-sign artifact against what you agreed to
compare filled.md ready-to-sign.docx        # exit 0 = safe · 2 = substantive drift

# render the agreed .docx to PDF (docx2pdf takes a .docx, not markdown)
docx2pdf ready-to-sign.docx ready-to-sign.pdf

# sign — DOCX or PDF in, sealed PAdES PDF out, fully offline (one shot)
sign document ready-to-sign.pdf \
  --signer "Alice Founder" --signer-email alice@acme.com \
  --name-signature true --auto-place first --out signed.pdf

Review and compare are gates, not transforms — they branch the flow (escalate, redline, or block) rather than rewrite the document, which is why they read the draft but don't sit mid-pipe. For the full step-by-step with every flag, see the workflow.

Next — Install the suite · read the workflow · wire it into an agent via built for agents.

Edit this page on GitHub