PROJECT NOTES / EARLY DEVELOPMENT
A local privacy layer.
A project you can inspect.
Bowden-PII detects and replaces personal identifiers before text reaches another service. These notes distinguish the working foundation from the longer-term design.
Working code. Early development.
The deterministic Python core, CLI, stable typed placeholders, local placeholder map, and public audit metadata are implemented. An optional hybrid runtime combines rules with a local neural token classifier.
Public version 0.0.1 includes the local runtime, focused tests and a small synthetic benchmark. Training datasets, model weights and research tools are not part of this download.
This is an early development project. A working implementation and successful synthetic evaluations do not establish production reliability. Evaluate your own data and workflow before relying on the results.
What the rules detect
| Category | Implemented scope |
|---|---|
| Swiss identifiers | AHV/AVS/NSS, UID/CHE, Swiss VAT suffixes |
| Financial identifiers | IBAN, Swiss QR-IBAN, credit cards |
| Contact details | Email, conservative Swiss phone patterns |
| Network identifiers | URLs, IP addresses, MAC addresses |
Checksums and validation rules are used where appropriate. Broader European phone and tax-identifier coverage remains future work. Names and address components belong to the experimental neural scope.
Start with the local runtime
Public developer preview 0.0.1 is available on GitHub. Use Python 3.11 or newer. The default engine requires no model weights. Downloads and release notes.
git clone --branch v0.0.1 --depth 1 https://github.com/48Nauts-Operator/bowden-pii.git
cd bowden-pii
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Use the API in your application:
from bowden_pii import redact
result = redact(
"Contact mia@example.ch",
policy="strict",
)
print(result.redacted)
# Contact [EMAIL_1]
# Retain this only inside your local privacy boundary.
local_map = result.placeholder_map
# Audit metadata excludes the raw detected values.
audit = result.audit
Or use the CLI:
bowden-pii --policy strict "Contact mia@example.ch"
Typed placeholders are consistent within one redaction result. Applications are responsible for managing maps across documents, sessions, and tenants. The deterministic core has no runtime dependencies; neural and OCR paths require additional setup and assets.
Choose what to redact
| Preset | Deterministic behavior | Hybrid threshold |
|---|---|---|
| Strict | All supported classes | 0.5 |
| Balanced | Keeps URLs | 0.7 |
| Permissive | AHV, IBAN, QR-IBAN, VAT, cards, email, phone | 0.9 |
For hybrid detection, the threshold controls which neural candidates are retained. Validated deterministic spans take priority on overlap. Lower thresholds can increase recall and false positives; measure that tradeoff on your own material.
Beyond well-formed identifiers
The experimental neural layer explores names, address components, and OCR-style noise. MiniLM smoke training and a larger 12,000-row synthetic training run have been completed. These are research baselines, not a validated general-purpose model release.
The next priorities are broader public-document and OCR evaluation, stronger negative examples, expanded phone coverage, and a multilingual checkpoint comparison. German, French, Italian, and English appear in the synthetic data strategy; real-world multilingual performance still needs broader evaluation.
Browser execution, sidecar services, managed map storage, and controlled local restoration are longer-term directions. The website’s animated visual is an illustration; the interactive examples are precomputed using the deterministic Python engine.
Privacy is an integration responsibility
Run detection inside your intended privacy boundary and send only the redacted text onward. Keep placeholder maps local, isolate them between tenants, protect their storage, and control who can restore original values.
Redaction can miss identifiers, and apparently ordinary context may still identify a person. This project does not guarantee anonymity or regulatory compliance. It does not replace access control, encryption, retention policies, or review of what leaves your system.
Review the whole workflow: prompt logs, exception traces, analytics, embeddings, document extraction, screenshots, and cloud fallbacks can expose source material even if the final prompt is redacted.
About this website
This static website uses analytics served from wave.21nauts.com. Fonts and styles are local, and there is no text-upload form. The hosting provider receives ordinary web requests and may maintain access logs. The animation and examples do not upload text. External reference links only open when you follow them.
The project is named in honor of Caspar Bowden. It is independent and unaffiliated with his estate or any organization.