Proof
A released bundle you can open.
This is the whole output of one case, an employee asking for everything her employer holds on her, run through the product end to end and released the way an operator releases one. Download it, open the manifest, read the documents. Everybody in it is invented, and the archive says so in its own first file.
ZIP, 264 kB, 9 documents, 9 pages. No sign-up.Skip to the download
Every source document, and what became of it.
Read out of the archive's own manifest: 9 documents, 8 released and 1 withheld, 9 pages in all. Detector 1.13.1, verifier 1.7.0, redactions found by mistral-large-latest.
What you are downloading
- The real output of a real run. Ingest, extraction, detection, entity resolution, policy, render, an independent verification pass, packaging, a spot check, and release through the same door an operator uses.
- Redaction decisions made by a real model, replayed from recorded completions rather than derived from an answer key.
- An HR file the size a company actually holds: an email thread with a cc list, a quoted reply and a forwarded customer complaint, a personnel record, an investigation note naming a complainant and two witnesses, an absence register, and a payroll summary.
- One output document per source document, numbered so the containers are visible: an email and its attachment, and an uploaded archive with the two documents inside it.
- The manifest, as machine readable JSON and as a document, and the quality report.
What it is not
- Not a customer case. Veil has no customers, so there is no real disclosure to publish.
- Not anonymised real material. There was nothing real to anonymise: the people are invented, the email domain is reserved and cannot resolve, and the identifiers are generated to satisfy their own checksums.
- Not a scan. The one component this run could not replay from a real model is optical character recognition, so the case deliberately contains no scanned document.
What the run did, document by document.
The report the product wrote for this case, read off its own pages. One row per document: how it was read, how many entities the pass found, how many it could not place, and whether the independent check cleared it for release.
Source coverage, from the report
How much of each source reached detection, counted in the unit that format has: pages for a PDF, rows for a spreadsheet, paragraphs for everything else. A file the product could not open carries no figures at all, and the report says why rather than leaving it open.
Case summary, from the report
- Source documents
- 9 8 included, 1 withheld
- Entity registry
- 2 subject, 63 kept as not personal data, 15 third party, 0 unresolved
- Residual pass rounds
- 3
One page, exactly as it left the product.
The requester's personnel record, the first document the archive's README points a reader at. The requester's own bank account is removed from the requester's own file, because the system would not disclose an identifier it could not prove was the requester's, while the date of birth three lines up survives because a person attested it. Every placeholder below is the product's, and there is nothing under it.
Read from the archive's own PDF, text and page stamp alike. Nothing here was typed.
The marked values are this page's substitution, not the product's: the archive holds the released values of the person the request is about, and this site prints none of them, only what kind each one is.
The downloadCase VC-2026-0001
A released bundle you can open.
ZIP, 264 kB, 9 documents, 9 pages. No sign-up.
SHA-256 f26574238291fa591f7f0fe00342763d39472cec06ec03689fdaa19ae0969caa
000_README_SYNTHETIC.txt is the one file the product did not write. Everybody in it is invented, and the archive says so in its own first file, which also states the digest the bundle had before that file was added.
What to look for
The subject stays
The person the request is about is named in full throughout, including in the things her colleagues wrote about her when they did not expect her to read them. Nothing of hers is removed except where the machinery could not prove it was hers, which is the next card.
One decision, every document
The requester's manager is named in every document in this bundle that carries text of its own: an email thread, a timeline, a personnel record, an investigation note, a spreadsheet, a payroll summary and a letter from an occupational health physician. She carries one placeholder across all seven, which you can check by searching the files for it rather than taking our word. That is one decision about one person, not one decision per mention.
Two people with the same surname
A colleague shares the requester's surname and appears alongside her throughout. He is removed and she is not. The email thread happens to say in so many words that they are unrelated, so you can read the sentence and check the output against it without knowing anything about how entity resolution works.
An over-redaction, and which way it points
Two kinds of it, and both err the same way. Open the personnel record: the requester's own bank account number is gone from her own file, as is her direct line in the email thread, because the system will not disclose an identifier it cannot prove is hers until a person says so. Higher up the same block her date of birth survives, because a person did say so and that decision is in the audit record.
Where it declined to guess
Count the placeholders and you will find thirteen letters for eight people. Two of the extras are bare first names in email greetings, kept apart from the same person's full name in the header because merging them on a first name alone is how one person inherits another's decision when two colleagues share a name, which this case has two of. Two more are the words standing in for the complainant and the witnesses, which in a workplace this size point at particular people. In all four the system removed more than it strictly had to rather than assume, and nobody is disclosed by it.
And once where it simply missed
The thirteenth letter is not any of that. In the investigation note a phrase describing what the requester did on the radio channel was read as a name and removed as one. There is no safety argument behind it: the model was wrong. It costs a reader one clumsy sentence and it took nothing out that should have stayed, but it is a miss and we would rather you found it here, named, than found it yourself.
A document nobody received, and why
One file in the case is an exported chat log in a format the product cannot read, so it was withheld rather than quietly dropped, and it did not hold up the other eight. The manifest lists it under Documents withheld, with the reason, which is what the requester is entitled to be told. Every real export has a file like this in it.
Structured identifiers, by type
A Norwegian national identity number, a German tax number and social insurance number, bank accounts in two countries and phone numbers in two formats. Each one is replaced by a placeholder that names what it was, so the reader of a redacted document can still tell a bank account from a birth date. The invalid look alike values sitting beside them in the record template are untouched. Staff numbers are a harder case and the bundle shows the edge of it: two colleagues' numbers are removed from the personnel record, where each stands as the value of a labelled field under its owner's name, and a third colleague's survives in the email thread, in a clause that attributes it to him with a possessive. The rule that ties a number to a person reaches the name beside it, not the name three words back.
Every page is traceable
Each page carries the case reference, the document id and the page number, so a page detached from the bundle can still be placed in it.
What is not in the archive
There is no decision log here. Every entity decision, every download and every state change is written to an append-only audit record, and a customer exports that alongside their bundles rather than receiving it inside one. The audit record holds identifiers, counts and dates and never a document excerpt, which is what makes it something we can hand over rather than something we would have to redact first.