Standard
Regex floor, zero model
must-mask F1 · instant · none
Privacy-first AI infrastructure.
A privacy tool is only as good as the data it misses. So we scored the engine against 1,800 labelled spans across nine languages, using the exact models the apps ship, and published the leak, including the part that still gets past us.
Comparecen ⟦PERSON_1⟧, mayor de edad, con NIF ⟦NIF_1⟧, y ⟦PERSON_2⟧, para formalizar la transmisión del inmueble sito en ⟦ADDRESS_1⟧. El pago se domicilia en la cuenta ⟦IBAN_1⟧ a nombre de M. Arregui, por importe de 200.000 €.
Everything under a bar is restored only on your machine. The one span left exposed is a miss. At the Maximum tier, about one must-mask span in 1,500 slips past. That number is the point of this page.
Every figure is the must-mask F1 and residual leak, averaged across all nine languages. Must-mask F1 scores only the data the policy is meant to hide. Organisations and places it deliberately keeps are left out, so the number reflects the privacy job and nothing else.
Regex floor, zero model
must-mask F1 · instant · none
Regex + on-device NER
must-mask F1 · ~140 ms per document · bundled, offline
Regex + GLiNER on documents, Privacy Filter on source files
must-mask F1 · ~350 ms per document · ~2.9 GB local models
Standard is the free regex floor: instant and exact where it fires, but blind to the names and places only context reveals. High is the default the apps ship with. Maximum adds the full model for the lowest leak we measured.
The residual leak is always in the fuzzy, contextual types, like a name the model scored just under threshold. The structured identifiers never leak: they are matched deterministically from their published checksums. Across the whole gold set these scored 100% precision and 100% recall:
Maximum tier (regex + full NER). Leak = share of must-mask spans missed; lower is safer.
The table above is measured on nine languages we build country packs for, in the document shapes those packs target. That is the number that applies if your documents look like the ones Velum was tuned for, and it is the one the app is held to. It is not the whole picture, so we also score 900 contracts and statements in 6 languages from gretelai/synthetic_pii_finance_multilingual, published under Apache-2.0, which nobody here had a hand in. Unfamiliar formats are harder, and the tiers separate sharply:
Which number applies to you depends on your documents, and we cannot tell from here. If they resemble the corpora our country packs target, expect the first table. If they are formats nobody has tuned for, expect closer to the second. The licence is permissive and the build script ships in the repository, so both are yours to reproduce.
The gold data is seeded and version-controlled, the models are pinned by hash, and the run is one command. If you are evaluating Velum and want to grade it yourself, ask us for the gold set and we will send it.
Both are fetched from public HuggingFace repositories and verified against these hashes; the run uses the exact files the apps ship.
pnpm --filter @velumprivacy/core bench:leak --chains regex,regex+lite,regex+full,regex+pfThe two pinned models are fetched, then the engine’s own bench harness scores them against the gold set. The engine makes no network calls at runtime. A static scan and a runtime network-block test enforce that in the build.
Tell us what you are working with and we will walk you through it on your own data. Nothing leaves your hands.
We respect your privacy. Your details are only used to reach you.