Redact PII, call your LLM with safe tokens, then rehydrate the response with original values. Real data never leaves your machine.
Token-direct mode replaces sensitive values with trackable tokens like [PERSON_1] so the AI understands structure without seeing real data.
from veil_phantom import VeilClient veil = VeilClient() transcript = """ Sarah Chen from Goldman Sachs discussed the $25M acquisition. Contact: sarah.chen@gs.com """ result = veil.redact(transcript) # "[PERSON_1] from [ORG_1] discussed # the [AMOUNT_1] acquisition. # Contact: [EMAIL_1]" # Send safe tokens to any LLM ai_response = call_llm(result.sanitized) # Restore original values final = result.rehydrate(ai_response)
The same privacy engine that powers Veil's meeting intelligence, packaged as a standalone SDK.
Shade V7 NER, gazetteers, regex patterns, NLP entities, and contextual sensitivity analysis working in concert.
Tokens like [PERSON_1] preserve structure while hiding real values. AI understands context, never sees PII.
Restore original values in AI responses with one call. Token maps handle multi-turn conversations automatically.
Detects Western, African, Asian, Arabic, and South African name patterns, including ASR-mangled transcriptions.
Regex-only mode works with no model downloads and no external dependencies. Add Shade NER when you need maximum coverage.
Drop-in wrappers for OpenAI, LangChain, and any LLM. One-liner privacy for existing AI pipelines.
Benchmarked with Claude Haiku 4.5 across financial, healthcare, legal, HR, sales, support, communications, and multi-step agentic workflows. Averaged over 2 runs (784 API calls).
VeilPhantom actually improves tool accuracy by +1.9%. Token-structured input helps the model parse arguments more reliably. Args quality is virtually identical (84.8% vs 85.0%), with only 6ms redaction overhead.
| Vertical | Scenarios | Raw Accuracy | Veil Accuracy | PII Found | Leaked |
|---|---|---|---|---|---|
| Financial | 13 | 84.6% | 84.6% | 97 | 2 |
| Healthcare | 12 | 91.7% | 97.9% | 79 | 1 |
| Legal | 12 | 95.8% | 100% | 130 | 2 |
| HR | 13 | 100% | 92.3% | 115 | 3 |
| Sales | 10 | 100% | 100% | 79 | 0 |
| Support | 8 | 100% | 100% | 64 | 10 |
| Communications | 12 | 87.5% | 91.7% | 115 | 5 |
| Multi-Step | 18 | 71.9% | 80.9% | 206 | 13 |
Layer 0 of the pipeline uses Shade V7, a PhoneticDeBERTa model that learns name patterns, not just spellings. Handles ASR-mangled names across Western, African, Asian, and Arabic naming conventions.
Read the research →from veil_phantom import VeilClient, VeilConfig # Regex-only: no model download needed veil = VeilClient(VeilConfig.regex_only()) result = veil.redact("Sarah sent $12.5M to sarah@gs.com") print(result.sanitized) # "[PERSON_1] sent [AMOUNT_1] to [EMAIL_1]" # Wrap any function: redact → call → rehydrate output = veil.wrap(text, llm_fn=my_llm)
Add PII protection to your pipeline in under 5 minutes. Open source, Apache 2.0.