An agent that reads, and knows what it does not know.

Six parts make up a Tessera workflow. Each one is small, visible and yours to configure: a schema, calibrated scores, a review lane, routing rules, an audit log and the connections around them.

01

Describe what you need, in a schema.

A schema lists the fields, their types and the checks that matter. There are no template zones to draw and no layouts to maintain: the same schema reads an invoice from a supplier you have never seen.

  • Types for text, dates, money, accounts, addresses, tables and lists.
  • Checks against your own data: purchase orders, vendor master, policy tables.
  • A hold threshold per field, or a rule that holds regardless of score.
  • Versioned. Re-run last month's documents against a new version before you switch.
schema: invoice6 fields
FieldTypeCheckHold below
suppliertextrequired0.90
invoice_notextrequired0.90
issueddaterequired0.90
potextmatches orders.po0.90
totalmoneyrequired0.90
bank_accountaccountmust match vendor1.00

Bank details are held whatever the score, because the check against your vendor master decides.

02

Scores that keep their promise.

A confidence score is only useful if 0.90 means nine out of ten. Tessera recalibrates each workflow nightly from the corrections your reviewers make, and shows you the chart.

  • Calibration chart in every workflow's settings.
  • New workflows start conservative and loosen as evidence accumulates.
  • Review rate, time to resolve and escaped errors on the dashboard, not a single accuracy figure.
calibrationap-invoices, last 30 days
0.50.70.9 0.50.70.9 stated confidence

Each square is a score band. Sitting on the dashed diagonal means a 0.90 really is right nine times in ten.

03

A review lane built for tired people.

Held fields wait in a queue with deadlines. A reviewer sees one question at a time: the field, the value we read, why we held it, and the page region beside it. Enter confirms, E edits.

  • Deadlines, escalation to a backup reviewer, and notifications by email or webhook.
  • Reasons in plain language: "the 15th digit is smudged", not just a number.
  • Fully keyboard-driven, with autosave on every keystroke.
  • Restrict the lane to a named group for sensitive workflows.
review queue4 waiting
  • INV-20418 bank_account 15th digit smudged
    1h 40m 0.62
  • CLM-88213 cause_narrative Two possible causes described
    3h 05m 0.71
  • MSA-0412 liability_cap Differs from playbook
    5h 20m 0.84
  • INV-20407 po No matching purchase order
    6h 10m 0.93

04

Routing rules in plain conditions.

Say what should happen to a document and Tessera does it, in order, and records why. Test rules against your last 500 documents in dry-run mode before they go live.

  • Actions: route to a queue, post to an integration, request a document, hold for review, reject.
  • Conditions read any extracted field, any check result and any review outcome.
  • Every decision is written to the audit log with the rule that made it.
routing rules4 rules, evaluated in order
  1. 1

    if po.matches and total within 2%

    then post to ledger

  2. 2

    if bank_account differs from vendor master

    then hold for review

  3. 3

    if total above 25,000 USD

    then route to director queue

  4. 4

    if same supplier, number, total in 90 days

    then reject as duplicate

05

An audit log you can hand to an auditor.

Every received document, extracted value, hold, human decision and routing choice is an event with a timestamp and an actor. Export it, stream it to your own storage, or query it by API.

  • Each value links to the page region it was read from.
  • Overrides record who changed what, and the reason they gave.
  • Retention for the log is set separately from retention for documents.
audit logrun_8f31c
  • 14:02:11document.receivedinv-20418.pdf via ap@inbox, 1 page
  • 14:02:14extract.completed6 fields, 5 above threshold
  • 14:02:15review.heldbank_account 0.62, reason: one digit smudged
  • 14:03:02review.resolvedconfirmed by reviewer, 47 s
  • 14:03:02route.decidedap.approvals, rule 1 matched

Reads the messy parts, too.

  • Pages in any state

    Scans, phone photos, skewed pages and PDFs with a text layer. Tables, stamps and handwriting are read, and scored lower when they are hard.

  • Many languages

    Major European and Asian languages, and mixed-language documents, with no language setting to maintain.

  • Long documents

    Contracts of hundreds of pages are read in parts and stitched back together, with every value pointing at its page.

  • Your data as ground truth

    Vendor masters, purchase orders and policy tables are used to check values, not just to read them.

06

An API first, with the connections around it.

Send a document with one request and subscribe to signed webhooks for what happens next. Everything in the interface is available over the API.

Read the quickstart

submit a document
curl https://api.tessera.example/v1/documents \
  -H "Authorization: Bearer $TESSERA_KEY" \
  -F workflow=ap-invoices \
  -F [email protected]
  • ERP and accountingGeneral ledger, purchase orders, vendor master
  • Email and inboxesShared mailboxes, forwarding rules
  • Cloud storageObject storage, shared drives, SFTP
  • Databases and warehousesSQL databases, columnar warehouses
  • Case and ticketingClaims systems, helpdesks, CRMs
  • E-signature and contractsSignature platforms, clause libraries
  • WebhooksAny HTTPS endpoint
  • Queues and automationMessage brokers, workflow runners

See it on your documents.

Send ten of your hardest documents. We will configure a workflow with you and show you the review rate before you commit to anything.