AI SYSTEMS — ACTIVE DEVELOPMENT —
Assay
Messy documents in, graded data out: read on local GPUs, every field confidence-scored, on a verifiable record.
≈ 2 min read
AT A GLANCE
- STATUS
- ACTIVE DEVELOPMENT
- TIMELINE
- 2026-07 — 2026-07 · 6 DAYS
- LANGUAGES
- TypeScript / Python / SQL
- CATEGORY
- AI SYSTEMS
FIELD ACCURACY
OUTCOME
98.73% field accuracy over 1,361 ground-truth-reconciled documents; a 1,001-document batch on two consumer GPUs with zero failures at cents per thousand pages.
METRICS
M.01 — FIELD ACCURACY
Over 1,361 ground-truth-reconciled documents, computed from the ledger, not asserted. The count is the corrected one: a 2026-07-27 audit in the product repo found 16 leftover test-account documents had been counted as public corpus. The accuracy figure never moved, because it derives from ground-truth verdicts and no account-owned document ever carried one.
M.02 — SCALE BATCH
One recorded batch across both GPUs and all 50 FATURA templates (20 unseen before the run).
M.03 — THROUGHPUT
Two 12 GB consumer GPUs reading in parallel.
M.04 — ENERGY PER DOCUMENT
Local-GPU electricity at $0.11/kWh. Cents per thousand pages.
M.05 — LEDGER EVENTS
Append-only, hash-chained; the chain verifies unbroken.
CH.01
The problem
Businesses that run on documents retype them by hand. A small importer keys in around 200 supplier invoices a month: scans and phone photos, several languages, dozens of supplier layouts. The generic document-AI tools do not fix this for her. They are cloud-only and rented. They assert an accuracy number with no method behind it, hide or charge extra for per-field confidence, and keep the data on someone else's servers. A business that wants its own fields, its own languages, and its documents kept on its own machine has nowhere to go.
CH.02
What I built
Assay turns messy documents into checked rows. It reads each document twice, independently, on local graphics hardware, once from the picture of the document and once from the recognized text, and compares the two reads. Every field gets a computed confidence grade. Fields it is sure of pass straight through. Fields that score low, or fail a check like a total that does not add up or a date that will not parse, are held back and sent to a keyboard-first review bench where a person fixes them in one keystroke. Every read, check, correction, and export is written to an append-only, hash-chained record that cannot be quietly edited. The documents never leave the machine.
CH.03
How it works
The reading runs on two 12 GB consumer GPUs (an RTX 3080 Ti and an RTX 4070) through a queue-polling worker. The web app and its thin API sit on Vercel and never call out to the PC. The worker polls for jobs. Extraction is a local Qwen3-VL model under llama.cpp, constrained to the field schema, with RapidOCR grounding the second read and supplying per-line confidence. The grade on each field is a logistic model calibrated on the ledger's own ground-truth corrections, not a raw model score. Hard gates fail closed: a field that fails grounding or a business rule cannot reach an export. One JSON schema is the single source of truth for both the web validators and the worker prompt, so the two halves cannot drift apart.
CH.04
Results
One recorded batch put 1,001 documents across both GPUs with zero failures, covering every one of the 50 FATURA templates, 20 of them never seen before the run. Field accuracy was 98.73% over 1,361 ground-truth-reconciled documents, computed from the register rather than asserted. The two cards read 413 and 459 documents an hour. Each document cost between $0.0000139 and $0.0000304 of local electricity, cents per thousand pages. The record now holds 22,744 hash-chained events and the chain verifies unbroken. Auto-accepted fields ran 99.9% accurate against 96.3% for the flagged ones, so the confidence grade earns the routing it drives.
FROM THE OPERATOR'S SCREEN



STACK
SKILLS DEMONSTRATED
Local-GPU model serving (llama.cpp + Qwen3-VL) · Schema-constrained LLM extraction · Per-field confidence calibration from ground-truth data · Fail-closed validation and human-in-the-loop routing · Append-only, hash-chained audit ledger · Full-stack Next.js on Vercel with a polling GPU worker · Measured accuracy and cost methodology