alma reads any document with a multi-agent pipeline — typed, handwritten, tables, maps, stamps, signatures — then verifies every field against cited evidence before it ships. Nothing is fabricated.
Trusted by archivists, registries and enterprise data teams
“Ezekiel A. Holder”
est 0.71
“Ezekiel Braithwaite”
est 0.69
both reads below threshold → escalated to a reviewer
amber + ✓ = a human confirmed it — not the machine
Verified, not generated
Left, a 1911 conveyance in fading copperplate. Right, the same page after alma — every field boxed, scored, and linked to the exact pixels it came from.
Know all men by these Presents that I, Ezekiel A. Holder of the parish of Saint Michael, planter, in consideration of the sum of…
A document is handed to a process, not an API — detected, read on two tracks, reconciled, and shipped only with the evidence behind it.
Locate every field, table, stamp and margin note.
Text and vision models read each field on their own.
Reconcile both reads into one scored, cited value.
Confirmed values ship as csv, json or API.
The doubtful ~3% goes to a human reviewer.
How it shows its work
field · passenger.surname · ship's manifest, 1907
Neither track is trusted alone.
est = alma's estimate — only a human sign-off turns it amber + ✓
What's under the hood
Any document, any century
Centuries of formats, one process — built for the archive, not the demo.
The product, not a pitch
Real screens from the verifying app — every value scored, evidenced, and yours to check.
Reviewers see the scan and every reading side by side.

Only the doubtful residue reaches a person.

Every reading checked against your own vocabulary.

Each value carries a score, evidence, and a reason.

Every correction your reviewers make is captured as training data. alma fine-tunes and distills a model specific to your archive — one you own, host how you choose, and call via API.
The Flywheel
Each lap, fewer fields need a human — and the model gets cheaper to run.
↺ reads better — next cycle
rising est = the machine reading better; only ✓ means a human confirmed it.
Call it from anywhere
Invoke your own model over REST or MCP. Every field returns scored and evidence-linked.

Issue scoped keys; watch every call land.
$ curl -sX POST https://api.alma.intergen.app/v1/digitize \ -H "Authorization: Bearer $ALMA_KEY" \ -d '{ "document": "s3://intake/manifest-1907A.tif", "schema": "ship_manifest.v3" }' # 200 OK{ "doc_id": "doc_3f9a2c", "status": "unreviewed", "fields": [ { "key": "passenger.surname", "value": "Kowalczyk", "confidence": 0.91, "evidence": { "page": 3, "line": 12, "bbox": [0.18, 0.42, 0.39, 0.46] }, "status": "unreviewed" } ]}est = machine score; a ✓ appears only after a reviewer accepts.
webhooks on escalation · RBAC scopes on every key
Built for archives that matter
Who can read, correct, and export — enforced on every action and every key.
A tamper-evident trail on every field: who, when, what changed, and why.
Open-weight models you run in your own environment. Your data and model stay yours.
In production
“40,000 pages of handwriting we'd written off as un-digitizable — alma gave us a queue of 900 to actually check.”
“The confidence scores are why our auditors signed off.”
“We own the model now. That changed the procurement conversation.”
Bring alma your hardest archive — the faded, the handwritten, the irregular. We'll verify it, field by field, and leave you a model you own.