Skip to main content
Nodes used: Parse, Extract, Validate This example reads a contract, extracts its key terms and the clauses it contains, and then runs a set of rules over those terms. Deterministic rules catch a missing date or a short notice period for free; one AI rule judges whether the indemnification clause protects you.

The workflow

Upload now, run later, poll

Contracts often arrive in batches and get reviewed later. Upload each one as a document packet as it arrives, and start the run when you are ready. Then poll GET /v3/runs/{run_id}/ until status is processed. error and cancelled are terminal too, so stop on those.

Response

The results envelope of a processed run, trimmed. Every value is a string on the wire: a multi_select is one comma-separated string of option names, with one evidence snippet per clause, and a boolean is "True" or "False".
Rule outcomes (pass, fail, inconclusive) appear in the Validation tab of the run in Studio, next to the extracted values. On this contract notice-at-least-90-days fails, because the notice period is 60 days. To act on a failure automatically, route the run with an If/Else node and send a Slack alert or an email alert.

Tips

  • Use a deterministic rule for anything a calculator can check. It is instant, free and never flakes. Keep AI rules for judgement calls.
  • A required check on liability_cap is the cheapest way to flag an uncapped contract.
  • severity is a label. A failed error rule never blocks the run; it tells the reviewer where to look first.
  • Declare termination_notice_days as integer. A range rule and calendar math both work on it directly.
  • The multi_select for key_clauses gives you presence checks. Split its value on ", " to get the option names. Add string fields for the clauses whose wording you need to read.

Next steps

Validate node

Every check type, expressions and severities

Run document packet

Run or re-run a packet you uploaded earlier