Document intake for transaction back offices. Clerk reads an unstructured agreement, pulls out the fields that matter, tells you what's missing or doesn't add up, and writes the derived paperwork — the work a back office would otherwise type by hand.
The extraction path is pattern-based and keyless: same document, same
fields, every time, with no model call and no per-document inference cost. An LLM pass can fill fields the
patterns miss, but it is never required and never overrides a pattern match — so the pipeline still runs,
and still tests, with no API key at all. Every field reports its source
(pattern, llm, or none) and a confidence, so you always know which
values a model guessed at.
/extract is open and stateless — it runs the full
extract → validate → generate pass and returns everything, without storing your document or metering it.
curl -s https://clerk.forthecommongood.ai/extract \
-H 'content-type: application/json' -d '{
"doctype": "real_estate_purchase_agreement",
"text": "Buyer: Dana Reyes\nSeller: Morgan Webb\nProperty Address: 118 Larimer St, Denver CO\nPurchase Price: $485,000\nEarnest Money: $10,000\nClosing Date: 2026-09-15\nContingencies: financing, inspection\nFinancing: conventional 30-year"
}'
Returns every field with its confidence and source, the open issues, whether the document is complete, and both generated documents in Markdown.
A document type is a list of field specs — name, patterns, whether it's required, how to normalize it. Adding a vertical is adding a schema, not editing the engine. Shipping today:
real_estate_purchase_agreement9 fields · 6 requiredReal estate first, deliberately — it's the
highest-volume transaction document with the lowest regulatory complexity.
GET /doctypes/{name} returns the whole schema as data.
POST /extractfull pipeline, statelessGET /doctypesavailable document typesGET /doctypes/{name}the schema, as dataGET /pricingunit price and doctype weightsGET /usage?client_id=documents, units, amount duePOST /processrun + store + meter · keyGET /extractions/{doc_id}a stored extraction