PII Detector Demo
Card numbers, emails, phone numbers and API keys are found before text leaves the device. The language model only ever sees placeholders.
Try it
Detected
What the model receives
Card numbers must pass a Luhn check, so the rules never call an order number a card (the model may still mask it as an account number, erring on the side of caution). Where both disagree, a check-digit match wins. Repeated values keep the same placeholder, so the model can still reason about them. Rules alone miss names, addresses and dates; the local model below finds them.
Run the model on this device
The same open model the full service uses, openai/privacy-filter (Apache-2.0), running in your browser on WebGPU. The weights download once from Hugging Face and are cached. Your text is never sent anywhere.
What is inside the model: architecture card. 1.40B parameters in a 128-expert mixture-of-experts with 4 experts active per token, grouped-query attention (14 heads, 2 KV heads), a 128-token sliding window and 128K context; that is why it runs in a browser at all. Generated from the config alone, no weights downloaded.
blob: script created inside the browser.Needs a desktop browser with WebGPU (Chrome or Edge) and about 3 GB of free memory.
Why local
- Data stays inside. Customer records are checked on the device or on your own GPU; nothing reaches a third-party API before it is masked.
- Predictable cost. No per-token fees, so every message can be checked, not a sample.
- Reproducible. A pinned model version means the same input gives the same result, so evals and audits can be rerun.
- Fast enough to sit in the path. On a local NVIDIA GB10 GPU, rules plus model ran at p50 95 ms / p95 136 ms over 5,466 synthetic records; the rules layer alone at p95 0.5 ms.