A standalone e-signature module: upload a PDF, place fields on the page, send to recipients — on-platform or by email — and collect legally credible e-signatures with a full evidence trail. Parallel or sequential e-sign flows, templates, clone lineage.
API workflow reference →Three concepts carry the whole module. A document gets fields placed on it, recipients get tokenized links to e-sign it, and every signing act writes an evidence record. Status is never set by hand — it derives from what the recipients have actually done.
A PDF in blob storage plus placed fields — twelve types, each with geometry, a recipient, and required / read-only flags.
A platform party, or just a name and an email — outside counsel signs without ever creating an account.
The act of e-signing, recorded as evidence rather than form data — and kept immutable once the contract executes.
The structural point: status rolls up, never down. Each recipient's state advances as they act; the contract reads Partially Signed at three-of-four and flips Fully Executed on the last mark — and the moment it does, every consumer watching reacts. An M19 engagement goes Active the same instant.
Upload the source document and the canvas lays out its pages, ready for fields. Name it, describe it, and decide whether it's a one-off or a reusable template — templates power the picker that consumers like M19 Work resolve at hire time.
The builder is a drag-and-drop canvas: place a signature box, initials, dates, text areas, checkboxes — twelve field types in all — size and position them per page, and assign each one to the recipient who must fill it.
Add recipients — a platform party, or just a name and an email for signers who have no account — then choose the order. Leave it empty and everyone signs at once; number the recipients and they unlock in sequence; share a number and those sign together.
The signing view walks a recipient through their assigned fields — and only theirs. Required fields gate the finish button; read-only fields show context without inviting edits; tab order keeps the walk linear.
The signer adopts an e-signature — drawn on the canvas, typed in a script face, or uploaded as an image — applies it, and finishes. The final e-signature flips the contract to Fully Executed, and every consumer watching it reacts: an M19 engagement goes Active the same moment.
Everything a contract asks for is one of twelve placed boxes. Each carries its geometry, its recipient, required and read-only flags, tab order, and an optional format mask.
Contracts turns any PDF into an e-signature document. Upload the source file, drag fields onto the page canvas — twelve field types from signature and initials down to checkboxes — assign each field to a recipient, and send. Recipients sign in parallel or in an enforced sequence; each one gets a tokenized signing link, so signers don't need a platform account. The contract's status derives from its recipients: Draft, Sent, Partially Signed, Fully Executed, with Voided and Expired kept distinct because a cancelled contract and a timed-out one are different events. The module is deliberately standalone — nothing in it depends on any consumer. M19 Work is its first: an engagement's contract is cloned from a template, pre-filled from the posting and proposal, and the engagement activates only when the contract comes back fully executed. Every signing act is evidence, not just data: e-signature type (drawn, typed, or uploaded), IP address, user agent, the exact consent text version the signer accepted, and a SHA-256 hash pinning exactly which bytes were signed. E-signatures are never deleted.
Internal code areas in the licensed Full-Stack codebase that back this module.
ApiContractContract — CRUD, clone, send, void, inactivate, downloadApiContractField — builder geometry, assignment, valuesApiContractRecipient — recipients, sign order, resend, expiryApiContractSigning — tokenized signing session, adopt + finishSignature evidence writer (hash, IP, consent version)A signature row is separate from the field values it sits beside, because it is evidence of an act, not form data. Each one records how the mark was made — drawn, typed, or uploaded — the IP address and user agent it came from, which version of the consent text the signer accepted, and a SHA-256 hash of the exact document bytes signed. There is no delete path for an executed signature, by design.
A quick visual of how Contracts & E-Signature participates across the CleenUI stack, alongside the named operations it adds to the API surface.
Each operation maps to an endpoint in the licensed C# Web API surface.