v1.0.0 has shipped. Every roadmap milestone through v0.3 is implemented, and v1.0.0 turned the API
into a promise: no breaking change without a v2. What is left is not mainly a list of features. It is
evidence.
Shipped
- v0.1 — prove the idea. Format detection by content, in-tree PDF text extraction, resource limits,
schema reflection, the three provider seams, validation, grounding, confidence scoring, hooks, and themodel/skylandocr/googleadapters. - v0.2 — real documents.
render/pdfiumandocr/tesseractwithout cgo,ocr/textractandocr/azureon the standard library, provenance with bounding boxes, provider fallback chains, and theotelmodule. - v0.3 — harder documents. DOCX, XLSX and CSV; two readings with cross-validation; layout
preservation; one retry on malformed model output; suspicious-content detection. - v1.0 — the API promise. All nine modules tagged
v1.0.0. Batch extraction and circuit breaking
landed along the way.
Still open — the evidence
These four conditions were the original gate for v1.0. They no longer gate the version number, but three
of them are still the conditions for calling Ovrin accurate:
- A corpus of real documents in every category, with committed reports across at least two
provider generations. The 25 documents committed today are synthetic. - Calibrated confidence — a published expected calibration error, and accuracy within confidence
bands. Until then, confidence is documented as a ranking signal, not a probability. - At least one production deployment that is not the maintainer's, with its feedback
incorporated. - No known API change the project would want to make. This is the one condition v1.0.0 rests on.
Still wanted
- Three additive API changes — cache-read and cache-write fields on
Usage, a handwriting kind onWord, and renderingLayout.Pairsinto the prompt. Key-value pairs already cross the OCR seam; they
are not yet shown to the model. None of the three breaks a caller, so each is a minor release. - Streaming for documents that do not fit in memory — deferred. It re-architects the places where
resource limits are enforced, which is not work to do before there is a real corpus to show whether
behaviour moved. - Per-stage benchmarks, published.
Beyond v1
Wanted, unscheduled, and each needing an architecture decision record before any code: a CLI, an optional
HTTP service, runtime schemas for customer-defined forms, a Validator interface for user-defined rules,
three or more readings with majority voting, encrypted PDF support, and a trained confidence calibrator.
Deferred, deliberately
Things that look like obvious features and are not being built:
- A review interface. Ovrin produces everything a review workflow needs, and builds none of it —
every organisation's workflow differs. - A hosted API. Ovrin is a library you run.
- A better OCR engine. Ovrin orchestrates OCR; it does not compete with it.
- Automatic resolution of disagreements. When two readings differ, both are recorded and the field
is flagged. Silently preferring one is the failure the feature exists to prevent. - Silent sanitising of suspicious content. It is detected and reported, never stripped.
- A model self-confidence field. Well-formed numbers, uncorrelated with correctness.