How it works
Gramavec's forensic engine is a calibrated computer-vision stack. Every claim it surfaces is backed by a reproducible measurement, a benchmark number, and visual evidence a reviewer can audit.
Eight families of deterministic features are extracted from each ink trace. No external model, no network call — same input, same output, every time.
Thresholds are derived from the public CEDAR signature dataset. The numbers below are what the engine reports — no marketing inflation, no hidden tuning.
0.72
Forensic AUC
0.37
Equal error rate
0.77
FRR at FAR 1%
60+40
Genuine + impostor
CEDAR is the public Center of Excellence for Document Analysis benchmark; 60 genuine + 40 impostor (n=100) is a small sample. We report all four metrics including the worst-case (FRR at FAR=1% = 0.77) so reviewers can audit the gap between best- and worst-case performance. Source: gramavec/forensics/calibration_cedar.json. Pinned by automated tests so a calibration regression cannot ship without a code change.
Where we use Google's Gemini in the analysis flow, it acts strictly as a language-and-vision scribe: it transcribes context and explains a measurement, never produces the underlying numeric score. The score is computed by the deterministic CV engine above. That separation is structural — it's what lets us say 'measured, not predicted' and mean it.
Gramavec's lane separation is not decoration; it's a compliance posture. We treat the discovery lane and the forensic lane under different regulatory classifications, and our copy, tier gating, and disclaimers reflect that explicitly.
If you are evaluating Gramavec for a regulated procurement, ask us for the assurance pack: model card, sample-size disclosure, retention configuration per tier, and the audit log schema.
Every forensic comparison renders the same four artefacts. A reviewer (or a certified Forensic Document Examiner) can regenerate them locally from the original images and audit each claim.

Every claim on this page is grounded in code or a public benchmark. The engine is in gramavec/forensics/, the CEDAR numbers are in calibration_cedar.json, and the visualisation artefacts come from visualize.py. For security, retention, and data-handling, see the surfaces below.