Features
The privacy sidecar for your AI and RAG flows. What it does, explained simply: technical details live in the Docs.
Two ways to protect data
Choose how to replace sensitive data. Switch the mode and watch the result.
Tag mode: data becomes stable placeholders like [NOME_1]. Perfect to find and restore them when needed.
Surrogate mode: data becomes fake but realistic and format-preserving. The text stays natural and the AI performs better.
You get clean text back, tags in the JSON
The API returns the already-protected text and, separately, a map of what was replaced. Your software always knows what was there, without exposing data in the text.
{
"text": "Sono [NOME_1], scrivimi a [EMAIL_1].",
"entities": [
{ "tag": "[NOME_1]", "type": "PERSON", "value": "Marco Rossi" },
{ "tag": "[EMAIL_1]", "type": "EMAIL", "value": "[email protected]" }
],
"reversible": true
}
One word configures everything
You send a single field, context_type, and the system sets policy, mode and what to protect by itself. No rules to rewrite on every call.
Fake data, in the right format
Faker generates realistic values; for Italian formats such as the fiscal code, the core uses a dedicated encoder instead of treating it as a random string.
DB regex wins over ML layers on overlaps
4-layer detection
The engine combines Presidio + spaCy, privacy-filter, AI4Privacy and DB-configurable regex. When detections overlap, the most reliable layer wins: DB regex has the highest priority for certain formats such as fiscal codes, IBANs, emails, phones and plates.
Reversible tag mode
Personal data becomes stable context-bound tokens such as [PERSON_1] or [FISCAL_CODE_1]. The token-value mapping is stored encrypted and can restore the text through /v1/deanonymize.
Same value + same context_id = same token
Generated deterministically from value, context_id and language
Deterministic surrogate mode
For RAG, embeddings and testing, real data is replaced with fake but realistic, format-preserving values. The text remains useful for AI while real PII stays out of the model path.
Format-preserving Italian fiscal code
Italian Faker can generate valid fiscal codes, but it does not automatically bind them to a separately generated name. The core therefore includes a dedicated CF encoder: when a CF surrogate is needed, it is built as a valid code, not as a random string.
This is not guaranteed by vanilla Faker: it requires application logic
Precedence: inline request > domain policy > registry
Context types and domain policies
One field, context_type, selects policy, mode and rules. A fine appeal can keep date and plate because they matter to the case, while a contract workflow can protect plates, companies and financial references.
Registry of about 33 PII types
The registry covers identity, contact, financial, legal, vehicle, network and credential data. Each type has category, default action, faker strategy, reversibility and enabled state.
Governable from the Admin UI with no code change
Hot-reloaded from database, no restart
Runtime tuning: regex, denylist and reclassification
Operators can fix false positives, add patterns and reclassify entities from surrounding context. A date near "born in ... on", for example, can become DATE_BORN.
Audit log, API keys and roles
Each call can be tracked with action, entity count, context type and the key used. API keys support admin, service and auditor roles, with optional expiry.
Separate app integration from administrative access
Models and default language managed from UI
Multi-language and Admin UI
The core supports spaCy NER for IT, EN, DE, FR, ES and PT; surrogates use a locale consistent with the requested language. The Admin UI manages runtime language, policies, regex, denylist, context types and keys.
Mask mode — irreversible redaction
POST /v1/mask replaces sensitive data without storing any mapping. Fill style preserves text length (████); label style inserts the type in brackets ([PERSON]). The mask character is configurable per request.
No mapping stored — cannot be reversed
Configurable per type via domain policy or inline request
Remove mode — erase the value
Configure remove_types in the domain policy or inline to replace PII spans with an empty string. The resulting text is shorter at the removed positions. No mapping is saved.
Block mode — reject the request
Types in block_types cause an HTTP 422 if detected in the text, before any processing. The check runs on all detected entities, even those not in protect_types. CREDIT_CARD and SECRET are blocked by default.
Configure block_types in domain policy or per-request inline
Same real value → same token (determinism guaranteed per context + key)
Pseudonymization — separate reversible tokens
POST /v1/pseudonymize replaces data with deterministic reversible tokens stored in a keystore separate from anonymization. Useful for analytics pipelines that require unlinkability but must retain the ability for authorised recovery.
Real-time Alerts and Webhooks
Configure alert rules for Inbox, Email, Slack and Microsoft Teams, or HTTP webhooks that fire on any PII engine event. Filter by data type, category, context or minimum number of detected entities.
Conditional filters by PII type, category, context and entity threshold