Module 08 / Documents

Ten thousand pages, read by lunch.

Live Part of Atlas

Documents is a document intelligence surface for the unstructured PDFs, scans, and contracts that everyone has and no one reads. Compare, summarize, redact, and extract at scale, with citations and an audit trail built in.

What it does

Five capabilities, on any document.

Documents handles PDFs, scans, DOCX, PPTX, and XLSX, with OCR across Latin, Cyrillic, Greek, Arabic, Hebrew, CJK, and Devanagari scripts. Every operation comes with citations and an audit trail.

Read and summarize

Returns a 2-page summary of a 500-page filing, with page-and-paragraph citations on every sentence.

Compare across versions

Stable diff between a v2 and v3 contract, with semantic alignment when paragraphs have moved or been renumbered.

Extract structured tables

Obligations, dates, amounts, SLAs, parties, addresses. Returns JSON with cited source spans. Validates against a schema you provide.

Redact at scale

14 PII classes, custom dictionaries, regex, and a per-document review queue. Burned into the rendered PDF, with reversible originals in audit.

Answer questions with provenance

"Where does the agreement let us terminate for convenience?" Returns the clause, the section number, and a one-paragraph plain-English answer.

How it works

Three passes, in series.

Every document runs through three passes before it lands in your workspace. Each pass is cached, so reprocessing is free.

PASS 01layoutheading detecttable findcolumn flow

OCR and layout

Pages are parsed for layout: headers, columns, footnotes, tables, signature blocks. OCR runs only where text is rasterized.

PASS 02PERSONAMOUNTOBLIGATION

Tag entities and structures

Named entities, dates, monetary amounts, obligations, clauses, and parties are tagged. Each tag carries page, paragraph, and bounding-box coordinates.

PASS 03Q: terminate?A: Sec 9.1 lets youterminate for causewith 30 days notice.cite: p.42 §9.1cite: p.43 ¶3groundedpage-acc 0.98para-acc 0.96char-acc 0.91never invented

Reason over the corpus

Q&A, summarization, compare, and extract run over the tagged corpus. Every answer ships with citations down to the paragraph and is verified before display.

Key features

Nine more, all in production.

Each capability below ships in the product today. None requires a separate product, integration, or per-page upcharge.

Bulk ingest

Drop a folder, an S3 prefix, or a SharePoint library. Hundreds of thousands of files index in hours.

Encrypted throughout

TLS 1.3 in transit and encryption at rest from our managed host. Your content is never used to train a model.

Semantic search

"Find the clause that lets us audit their subprocessors." Returns ranked results across your whole corpus.

Multi-script OCR

Latin, Cyrillic, Greek, Arabic, Hebrew, CJK, Devanagari. Mixed-script pages handled.

Schema-bound extract

Define your JSON schema. We extract and validate. Failures route to a human-in-loop queue with the page in view.

Webhooks

Every upload, every page parsed, every entity tagged. Fire a webhook with a stable schema.

Reversible redaction

Burned-in for the recipient, originals stay in audit with role-gated reveal. Watermarked per recipient.

Page quality scoring

Every page gets a quality score. Low-quality scans route to a higher-cost OCR pass, and pages below your threshold enter a manual queue.

BYO model

Bring an Anthropic key, an OpenAI key, or a self-hosted inference endpoint. Documents calls through unchanged.

Connected

Documents flows back in.

A document is rarely a destination. The output usually needs to land as a task, a contract, a row in CRM, or a doc.

Five destinations for parsed output

A vendor MSA you uploaded becomes a Contract record. A claim file extracts to Tasks. A customer-supplied data dictionary becomes an indexed source for Search. A board pack drops into Docs. A signed proposal updates the deal in CRM.

Contracts → MSA, DPASearch → indexed corpusTasks → claim itemsDocs → reading notesCRM → proposal status
API

Programmatic documents.

Upload, ask, redact, or extract. Same surface, batch or interactive.

documents.py
# Ingest 1,400 vendor MSAs, extract obligations into a typed schema.
from wrxstack import Wrx

wrx = Wrx(token=os.environ["WRX_TOKEN"])

job = await wrx.documents.ingest(
    source="s3://acme-legal/msas/2024/*.pdf",
    redact_pii=True,
    extract={
        "obligations": { "section": "str", "text": "str", "days_to_breach": "int?" },
        "liability_cap_multiplier": "float",
        "governing_law": "str",
        "renewal_terms": "str"
    }
)

await job.wait()  # runs in parallel across the corpus

for doc in job.results:
    if doc.extract.liability_cap_multiplier > 2.0:
        await wrx.tasks.create(
            title=f"Review liability cap on {doc.title}",
            links=[{ "kind": "document", "ref": doc.id }],
            owner="legal-ops"
        )
Comparison

Documents vs. Google Document AI.

Google's Document AI is a layer of cloud services you assemble. wrxstack Documents is the end-to-end product.

wrxstack Documents vs. Google Document AI

CapabilityGoogle Document AIwrxstack Documents
End-to-end productSDK + servicesUI + API, ready out of box
Q&A with citationsBring your own RAGBuilt in, cited to the paragraph
Compare across versionsNot providedSemantic diff with renumbering
Reversible redactionDLP API onlyUI + reversible audit trail
Email container ingestNot providedMSG, EML, MBOX, recursive
Pricing predictabilityPer-page tieredPredictable, no per-page fees
FAQ

Common questions.

Six things legal, claims, and procurement teams ask before adopting Documents.

How do you guarantee the AI does not hallucinate when summarizing?

Every claim in a summary is bound to a span in the source document. Spans are verified by a second model that returns a yes/no entailment score. Sentences below the threshold are dropped before display, so what you read traces back to the page it came from.

How is our document data secured?

Documents runs over TLS 1.3 in transit, and content is encrypted at rest by our managed hosting provider. When you configure redaction to run before storage, the sensitive spans never persist. Your content is not used to train any model, which is enforced by the model provider's API terms.

What happens to a 2,000-page filing with mixed scan quality?

Layout detection handles per-page variation. Low-quality scans route to a higher-cost OCR pass automatically. The job dashboard shows page-level quality scores. You can configure a minimum threshold below which pages enter a manual queue.

How does ingest scale for a large library?

Ingest runs in parallel across your corpus, and the job dashboard shows live progress per document. Larger workloads scale on dedicated capacity, and reprocessing is cached, so re-running an extract does not re-parse the pages.

What about unstructured emails and attachments with embedded documents?

The ingest pipeline unwraps email containers (MSG, EML, MBOX), extracts every attachment, and processes recursively. Relationships between the cover email and the attachments are preserved as edges in the graph.

Can extraction match a custom schema for our forms?

Yes. You define the schema with types and validation rules. The extractor returns rows with cited spans. Failures route to a human-in-loop queue with the page in view. Schema versions are tracked, so a v2 of your form does not break a v1 extraction pipeline.

Related

Pairs well with.

Documents is the upstream surface for Contracts and Search. Tasks owns the exceptions queue.

Honest limits

Who this is not for.

Documents reads, redacts, and extracts from PDFs at volume. If you are a law firm or records team that needs a full document-management system with matter-centric filing, retention schedules, and legal hold, a dedicated DMS will fit better. Documents processes and understands files, it is not a system of record for regulated retention.

Get started

Upload a 500-page PDF right now.

Free to start, no credit card. Redaction and schema extraction are included. The first redacted set lands the same day.