Built around real identifiers
Checksum-aware rules for Swiss AHV/AVS, UID/CHE, IBAN, and credit cards, alongside contact and network identifiers.
Deterministic core availableLOCAL PRIVACY. EUROPEAN CONTEXT.
Useful AI shouldn’t need your sensitive data. Bowden-PII detects and redacts personal identifiers locally, before your text reaches the cloud.
Swiss / EU focus · Open-source project · Early development
THE BOUNDARY, IN MOTION
Identifiers become placeholders.
The original values stay on
your side.
Illustration using fictional contact details. The animation does not run the detector.
THE APPROACH
Personally identifiable information (PII) turns everyday text into sensitive data. Bowden-PII is a local guard for the emails, documents, and records you want to work with.
Checksum-aware rules for Swiss AHV/AVS, UID/CHE, IBAN, and credit cards, alongside contact and network identifiers.
Deterministic core availableReplace detected values with consistent, typed placeholders. A local map retains the originals for your application to manage.
Stable placeholders + audit metadataAn optional neural detector explores names, address components, and noisy text. Validated rules take priority when detections overlap.
Experimental hybrid runtimeIN PRACTICE
See what the deterministic Python engine does with a few sample records. These are precomputed examples using fictional contact details and test identifiers.
Please update the account contact to mia@example.ch. AHV: 756.9217.0769.85 IBAN: CH93 0076 2011 6238 5295 7 Send confirmation to mia@example.ch.
Please update the account contact to [EMAIL_1]. AHV: [AHV_1] IBAN: [IBAN_1] Send confirmation to [EMAIL_1].
4 spans redacted · 3 unique placeholders
Precomputed locally · No text uploadStrict includes all supported deterministic identifier classes, including URLs.
WHERE IT FITS
Add redaction where text crosses your application's privacy boundary. The Python API and CLI are the starting points today.
Email, extracted documents,
support notes, or logs
Detect identifiers.
Replace them with placeholders.
Send redacted text to an LLM,
an API, or downstream tooling.
The placeholder map stays with your application. Tenant isolation, encrypted storage, and controlled restoration are integration responsibilities today.
BUILT IN THE OPEN
A practical foundation first, then broader coverage and stronger evaluation. This is an early development project; the roadmap describes direction, not release commitments.
Read the project notesDeterministic detection, typed placeholders, three policy presets, Python API, CLI, and audit metadata without raw values.
Optional hybrid detection, MiniLM training runs, synthetic multilingual data, and local tools for reviewing public-document extraction.
Broaden public-document and OCR evaluation, strengthen hard negatives, expand phone coverage, and compare a multilingual model.
Explore browser and sidecar deployments, managed placeholder storage, and explicit controls for local restoration.
THE PERSON BEHIND THE NAME
Privacy advocate. Independent thinker.
A voice for rights
across borders.
Caspar Bowden was a British privacy advocate who helped establish the Foundation for Information Policy Research and later served as Microsoft’s chief privacy adviser for Europe, the Middle East and Africa. [1]
Before the Snowden disclosures, he warned that cloud computing could expose European data to foreign surveillance. He brought technical detail and human rights into the same conversation. [2]
Bowden-PII takes inspiration from that concern. It aims to make local data minimization a practical step before using cloud AI: detect sensitive identifiers, replace them locally, and keep the original values under your control.
Named in his honor. This project is independent and unaffiliated with Caspar Bowden’s estate or any organization. This is our interpretation of his influence, not an endorsement.
A BETTER STARTING POINT FOR AI
Explore the implementation, understand the tradeoffs, and help shape a privacy layer built for Swiss and European workflows.
Get the source on GitHubfrom bowden_pii import redact
result = redact(
"Contact mia@example.ch",
policy="strict",
)
print(result.redacted)
# Contact [EMAIL_1]
Installation & usage
A FEW GOOD QUESTIONS
It is a local detection and redaction layer that can sit in front of an LLM or another service. Its deterministic core works without a neural model. The optional hybrid runtime adds a small token-classification model.
The examples are fixed, precomputed fixtures, with no text-upload form. This website uses analytics served from wave.21nauts.com. Hosting providers also receive ordinary web requests. Running Bowden-PII on your own data requires the local Python runtime.
Bowden-PII is in early development. A working core and experimental model runs are available, but synthetic benchmark results do not establish real-world reliability. Evaluate your own data, review missed detections and false positives, and build the surrounding privacy controls before relying on it.
The project is named in honor of Caspar Bowden and his work on privacy and cloud surveillance. It is independent and unaffiliated with his estate or any organization.