Aletura Β· Transparency
How contract analysis works β and what is validated today
The end-to-end pipeline from upload validation to the report, and the honest evaluation status: what is measured, and what is not.
Analysis pipeline
- Upload and validation: file type, size and page count are checked against configured limits; admission rules depend on the deployment mode.
- Deterministic text extraction: existing PDF text layers are used directly; page coverage and readability are verified.
- Selective local OCR: only image-based pages are read locally (Tesseract, in memory, no files written) with readability and coverage checks and bounded retries. Conflicting readings stay unresolved β nothing is silently truncated. Provider vision recovery is currently not enabled (documented gap).
- Masking: detected personal identifiers are replaced by request-scoped placeholders before indexing and before any model call; an outbound guard checks every prompt.
- Index and retrieval: the masked text goes into a per-request bounded Lucene/BM25 index; questions run as bounded batches in parallel through a central rate-aware scheduler (concurrency caps, token admission, 429 backoff, bounded retries).
- Classification and analysis: contract type and review questions come from versioned frameworks; every question gets an explicit status.
- Evidence verification and absence: βnot foundβ is only claimed after document-wide absence validation; contradictory or missing evidence stays marked unresolved.
- Canonical facts and report: facts and issues are deduplicated and reconciled; the report is generated in one resolved report language while quotations stay in the original language. Follow-up questions run only on the validated result.
Validation status (current, honest)
Measured (deterministic CI run without a live model, 2026-08-28): language detection 1.000; classification EN 0.846 and DE 0.846 (gate β₯ 0.95 β FAIL); retrieval evidence recall EN 1.000, DE 0.818; evidence span overlap 1.000; known PII leakage 0; silent truncation 0. Local OCR (real, 2026-10-28): Unicode word recall at 150/300 DPI 0.78/0.76 (gate β₯ 0.75), character accuracy β 0.92β0.93.
Test corpus: synthetic primary corpus (20 fixture groups, 134 objective facts), independent synthetic corpus (49 groups, 412 facts/questions, 66 expected absences), plus shareable real contracts (CUAD v1, external, test-only, license respected) and a combined multilingual corpus (EN/DE as native datasets; FR/IT as enabled, not yet validated report languages; RO as a configured target).
Benchmarked languages: EN and DE have native benchmark datasets. FR and IT report output was enabled on 2026-11-03 via the versioned per-language prompt templates (language.native.3/language.native.4 in the pinned catalog) and is pending benchmark validation; RO remains a configured target without validation. Report language never overrides the governing law of the contract.
NOT VALIDATED All model-generated metrics (critical-fact accuracy, NOT_FOUND precision/recall, negation handling, evidence grounding, follow-up quality) are NOT_EVALUATED in deterministic CI; live Mistral quality is not certified. End-to-end language certification is UNVALIDATED for all languages including EN and DE. Deterministic benchmarks do not establish live-model accuracy, severity calibration or provider latency.
Validation changelog
| Date | Change | Effect on validation |
|---|---|---|
| 2026-08-28 | Multilingual benchmark run (deterministic tier, no live model) | Metrics above; certification UNVALIDATED |
| 2026-10-26 | Full-page OCR recovery review (alternate layouts within the same budget) | Stricter candidates rejected; coverage remains authoritative |
| 2026-10-28 | Real local OCR verification (15 multilingual variants) | RO scan recall 0.78/0.76 above gate; certification still UNVALIDATED |
| 2026-11-02 | Prompt-injection benchmark extended to 8 fixture pairs (zero-width, boundary forgery) | Security gates pass; no quality claim |
| 2026-11-03 | Optional BYOK providers (OpenAI, Azure OpenAI, Azure Claude) behind endpoint allowlists | No change to model-quality claims; default stays Mistral EU |
| 2026-11-03 | FR/IT report output enabled via the versioned per-language prompt templates | FR/IT pending benchmark validation; certification remains UNVALIDATED |
As results improve, this table is extended with dated entries. Nothing on this page claims a certification, compliance or live accuracy that was not measured.

