# Redact (PII) page sources

## Recorded model output

- Featured model: `urchade/gliner_multi_pii-v1` (the registry fast lane)
- Compared model: `numind/NuNER_Zero` (the registry quality lane), same inputs and labels
- Model cards: <https://huggingface.co/urchade/gliner_multi_pii-v1> and <https://huggingface.co/numind/NuNER_Zero>
- Paper: <https://arxiv.org/abs/2311.08526>
- Endpoint: SIE Cloud, `https://api.superlinked.com`, `POST /v1/extract/{model}`
- Run window: 2026-09-15, from `19:59:47Z` to `20:05:05Z`, 24 requests (12 inputs, 2 models)
- Server: SIE `0.7.3`, from the `x-sie-server-version` response header
- The `x-sie-model-revision` header returned the same value
  (`10333b84de80b402376b626eb25366fb081d3faeb893eb4b01cf32e8c27e4aff`) for
  both models, so the page does not treat it as a weights revision.
- Runner: `apps/site/tests/fixtures/reference/redact/run.py` (Python standard library)

The page shows the exact input text, labels, spans, offsets and scores the
model returned, with the default threshold and no request options. The model
returns spans, never masked text: the page and the playground mask by replacing
each returned offset range with its upper-cased label, as the visitor's code
would.

The website does not serve the raw model files. Site CI compares the page data
in `apps/site/src/data/reference/tasks/redact-evidence.json` with the saved
requests, responses and `manifest.json` under
`apps/site/tests/fixtures/reference/redact/`.

## Measured results

### Government sample forms

On the four CFPB and CMS excerpts, neither model masked a dollar amount, an
interest rate, a procedure code, a date or a lender, insurer or supplier name.
`gliner_multi_pii-v1` returned no span for the Closing Disclosure `MIC #`
value `000654321` although the request named `mortgage insurance case number`.
When a request names `address`, both models also mask the practice address in
the Part B notice and the supplier's PO box in the DME notice. The page labels
those masks instead of counting them as personal data.

### Benchmark rows

Six rows come from two public PII benchmarks with published gold spans. A gold
span counts when its label maps to a label the request named (for example
`first_name` and `last_name` to `person`) and returned spans cover every one of
its characters. A returned span counts as agreeing when it overlaps such a gold
span.

| Model | Gold spans found | Returned spans on gold |
|---|---|---|
| `urchade/gliner_multi_pii-v1` | 26 of 45 | 23 of 25 |
| `numind/NuNER_Zero` | 27 of 45 | 27 of 30 |

The two `gliner_multi_pii-v1` spans outside the gold set are a card's last four
digits in the claims log, which the benchmark does not annotate, and a doctor's
practice address in the German claim. Spans with labels the benchmarks do not
cover, such as `claim number` and `medical condition`, are excluded from the
second column.

Correction, 2026-09-16. The page printed this second column as "masks land on
published PII in the six benchmark documents", which reads as two of the masks
landing on something that is not PII. A gold set can confirm a mask, but its
silence cannot condemn one. Both benchmarks annotate a chosen subset of each
document, so a returned span outside their gold spans is unjudged, not wrong. The claims log carries no `credit_debit_card` gold label at all, so no
card mask in that document could ever have counted, and the German claim
annotates only the patient's address while the model also masked the treating
doctor's practice address, which the proof card beside the statistic displays
approvingly. The ratio is unchanged at 23 of 25, because 23 is the number of
masks the gold spans confirm; the label now says that, and a line under the
statistic names the other two. Nothing about the recall rule changed, and the
other two published figures are recomputed from the recorded responses on every
test run and did not move: 26 of 45 gold spans found, and 0 of 29 currency
amounts masked.

### Input window

GLiNER splits text into words and punctuation marks and keeps the first 384;
SIE does not chunk. The support chat has 564 such words, and its window ends at
character 813. A single request returned no span past that point, and the
response gives no truncation signal. A second request on the text from
character 812 onward, the paragraph break before the cutoff, returned 6 of the
7 gold spans past the window. Across the whole chat, `gliner_multi_pii-v1`
found 2 of 11 gold spans in one request and 8 of 11 in two. The IT support
ticket shows the same cutoff at character 1534.

## Primary sources

### CFPB Closing Disclosure sample

- Consumer Financial Protection Bureau, H-25(B) Mortgage Loan Transaction Closing
  Disclosure, Fixed Rate Loan Sample:
  <https://files.consumerfinance.gov/f/201403_cfpb_closing-disclosure_cover-H25B.pdf>
- Rights basis: work of the U.S. federal government under 17 U.S.C. § 105. The
  borrowers, seller, contacts and IDs are fictional sample values published by
  the CFPB.
- Downloaded file SHA-256: `606a93c8baaca815439822df5cf8c78cbb2dcf6cc4af5aa291a459c7917e4173`
- Excerpts: PDF page 2 (form page 1, closing, transaction and loan information)
  and PDF page 6 (form page 5, contact information)
- Derivation: table cells linearized into `Label: value` lines; every value is
  verbatim from the PDF text layer. The hero shows ten of the nineteen lines,
  including every line with a returned span.

### CMS Part B Medicare Summary Notice sample

- Centers for Medicare & Medicaid Services, sample Part B Medicare Summary Notice:
  <https://www.cms.gov/medicare/medicare-general-information/msn/downloads/sample-part-b-medicare-summary-notice.pdf>
- Rights basis: work of the U.S. federal government under 17 U.S.C. § 105.
- Downloaded file SHA-256: `75b62e9f19411aafd2f6161a8543d066b877e16f1b84825193b2eee006a1a9b9`
- Excerpt: PDF page 2, sample notice pages 1 and 3
- Derivation: dashboard fields and claim table linearized in reading order;
  every value verbatim. The proof card shows five of eleven lines and lists
  every returned span.

### CMS DME Medicare Summary Notice sample

- Centers for Medicare & Medicaid Services, sample DME Medicare Summary Notice:
  <https://www.cms.gov/medicare/medicare-general-information/msn/downloads/sample-dme-medicare-summary-notice.pdf>
- Rights basis: work of the U.S. federal government under 17 U.S.C. § 105.
- Downloaded file SHA-256: `d1c7ad58f71717ef82756e661bac7ff51eebf69d6002e5ce5b97725411a3243d`
- Excerpt: PDF page 2, sample notice pages 1 and 3
- Derivation: dashboard fields and the claim row linearized in reading order;
  every value verbatim. The playground plays back this run.

## Benchmark samples

These documents are synthetic. Their personal data is fictional, and each row
carries gold PII spans.

### NVIDIA Nemotron-PII

- Dataset: <https://huggingface.co/datasets/nvidia/Nemotron-PII>
- License: CC BY 4.0
- Rows: test split, Insurance domain, datasets-server `row_idx` 910
  (uid `a9d068e1876a4e5ca590a963d11dd3ef`) and 1481
  (uid `e54e9615229b407395c13cf62d353da3`)

### Gretel synthetic PII finance (multilingual)

- Dataset: <https://huggingface.co/datasets/gretelai/synthetic_pii_finance_multilingual>
- License: Apache 2.0
- Rows: test split, datasets-server `row_idx` 14, 28 and 32 (English) and 33 (German)
- The `_tail` cases are suffixes of rows 28 and 32 that start at the paragraph
  break before GLiNER's 384-word window ends; nothing else changes.

Per-case text SHA-256 values live in `cases.json` beside the runner.
