How it works
From a scanned page to a confirmed record
Every document follows the same eight steps, whether it arrives through the web application or the API.
The eight steps
- Step 1 of 8
Upload
One file, many files, or a ZIP archive — in the browser or through the API.
Files are checked for type, size and archive safety, stored per organisation and workspace, and scanned for malware when the scanner is enabled. Each document gets an ID straight away.
- Step 2 of 8
Classify
The document type and subtype are identified, with a confidence score.
A classification agent reads the first pages and picks a type from your taxonomy. Below the confidence threshold the document is marked for a person to confirm.
- Step 3 of 8
Extract
Fields and tables are read with the engine you configured.
OCR with layout and table reconstruction, a vision language model, or a multimodal LLM. All model calls go through the platform's LLM Gateway, with guardrails and token accounting.
- Step 4 of 8
Validate
The result is checked against the document type's schema and business rules.
Types, required fields, totals and tax arithmetic are checked. Problems become field-level findings rather than silent corrections.
- Step 5 of 8
Structure
Values become clean JSON and CSV, as printed on the document.
Numbers keep their printed decimals and identifiers keep their printed form. A value a model rewrote is flagged with what the page actually says.
- Step 6 of 8
Review
A person checks anything uncertain, corrects it and approves.
Low-confidence fields are highlighted on the page. Corrections create a new revision; the history of every run is kept.
- Step 7 of 8
Export
Download JSON, CSV or a ZIP of a whole batch, or fetch it through the API.
Downloads include a manifest. Documents that are not finished are listed with the reason instead of being left out silently.
- Step 8 of 8
Publish
Send the data to your accounting software after you confirm the exact payload.
The publishing agent matches suppliers, accounts and tax rates, shows a preview, and only after your confirmation makes exactly those calls through the platform's MCP layer.
Where your document is, at every moment
The Status endpoint and the Documents page show one of these states. Only the transitions of the processing state machine are possible, and each is recorded.
- UPLOADED
- The file was accepted and stored.
- VALIDATING
- Type, size and archive safety are checked.
- QUEUED
- Waiting for a worker, fairly shared between organisations.
- CLASSIFYING
- The document type is being identified.
- EXTRACTING
- Fields and tables are being read.
- VALIDATING_OUTPUT
- The result is checked against its schema.
- REVIEW_REQUIRED
- A person needs to confirm or correct something.
- COMPLETED
- The structured result is ready to download or publish.
- FAILED
- Processing stopped; the reason is recorded and the document can be rerun.
What runs underneath
Clients
Web application
Upload, review, export and publish in the browser
API consumers
Upload, Status, Download, Health and Rerun with an API key
Platform
API service
Authentication, tenancy, quotas, rate limits, audit
Async pipeline
Celery queues for ingest, OCR, AI and publishing
AI layer
Agent Harness
Runs every agent with limits, retries and human approval
Multi-agent workflow
LangGraph: classification, extraction, validation, QA, publishing
Guardrails
Input, output and tool-call checks on every model step
LLM Gateway
One OpenAI-compatible entry to five providers, with fallback
Data
PostgreSQL
Records, results and audit, with row-level security
Object storage
Originals and outputs per organisation and workspace
Vector store
Chroma, pgvector or Qdrant for retrieval context
Around it
Observability
OpenTelemetry traces and metrics, Langfuse for every model call
MCP integrations
Accounting software, reached only after confirmation
Process your first documents today.
Create an organisation, try the bundled sample documents, and call the API with your own key — in a few minutes.