Inferensys

Prompt

PII Redaction in User Search Queries Prompt Template

A practical prompt playbook for redacting personally identifiable information from user search queries in production RAG and retrieval workflows.
Developer working on RAG retrieval system, document chunks visible on screen, technical workspace with code editor.
PROMPT PLAYBOOK

When to Use This Prompt

Define the job, the operator, and the hard boundaries for a PII redaction prompt before it reaches your retrieval pipeline.

This prompt is designed for a single, high-stakes job: stripping personally identifiable information (PII) from user search queries before those queries touch any downstream system. The ideal user is a platform engineer, RAG architect, or backend developer who owns a retrieval pipeline and needs to prevent email addresses, phone numbers, social security numbers, and other personal data from being logged, embedded, or sent to third-party APIs. You should use this prompt when your application accepts free-text user input that will be passed to a vector database, a search index, an embeddings model, or an observability stack where PII exposure constitutes a compliance or security incident.

This prompt is not a general-purpose data sanitizer. Do not use it for redacting PII from retrieved documents, generated answers, or long-form user content. It is specifically tuned for the short, intent-heavy strings typical of search queries. The prompt expects two inputs: the raw user query and a configuration object that defines which PII categories to target and the desired redaction strategy (e.g., mask, replace with a type token, or remove entirely). The output is a structured JSON object containing the redacted query string and a detected-PII manifest, which your application can use for audit logging or to decide whether to block the query entirely. If your use case involves regulated data under GDPR, HIPAA, or PCI-DSS, this prompt is a pre-retrieval safety net, not a compliance guarantee—you must still implement human review and evidence grounding for high-risk workflows.

Before wiring this into production, understand its failure modes. The most common is over-redaction: the model strips terms that look like PII but are not, such as product codes that resemble serial numbers or usernames that match name patterns. The second is under-redaction: the model misses PII in non-standard formats, such as phone numbers with unusual country codes or emails with new top-level domains. Your eval suite must test both. After reading this section, proceed to the prompt template to copy the exact instructions, then to the implementation harness to learn how to wrap it with validation, retries, and a human-in-the-loop escape hatch for high-risk deployments.

PRACTICAL GUARDRAILS

Use Case Fit

Where the PII Redaction prompt works, where it fails, and the operational prerequisites for deploying it safely in a production RAG pipeline.

01

Good Fit: Pre-Log Sanitization

Use when: you need to scrub PII from user queries before they are written to observability platforms, LLM provider logs, or internal analytics databases. Guardrail: Redact before any external API call or log write; treat the redacted form as the canonical record for that trace.

02

Good Fit: Third-Party Embeddings API

Use when: sending user queries to a third-party embeddings service where data leaves your trust boundary. Guardrail: Run the redaction prompt and validate the output manifest before the outbound HTTP request. Block the request if high-confidence PII remains.

03

Bad Fit: Contextual PII in Retrieved Documents

Avoid when: the PII is embedded inside retrieved documents rather than the user's query string. This prompt operates on the query only. Guardrail: Use a separate document-level PII scanner for retrieved chunks before they enter the generation context.

04

Bad Fit: Real-Time Chat with No Latency Budget

Avoid when: the user expects sub-second streaming responses and the redaction step adds unacceptable tail latency. Guardrail: Implement a fast regex pre-filter to catch obvious PII and only invoke the LLM redaction prompt when the pre-filter triggers, keeping the common path fast.

05

Required Input: A Clear PII Taxonomy

Risk: Without a defined list of what constitutes PII for your jurisdiction and use case, the model will apply an inconsistent, generic definition. Guardrail: Supply an explicit taxonomy in the prompt (e.g., email, phone, SSN, credit card, name, address) and update it when regulatory scope changes.

06

Operational Risk: Over-Redaction Breaking Retrieval

Risk: Aggressive redaction of non-PII terms like product names, error codes, or technical identifiers destroys retrieval signal and produces empty or irrelevant search results. Guardrail: Run eval checks that measure retrieval recall before and after redaction. Gate deployment on a maximum acceptable recall drop.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable prompt template for redacting PII from user search queries before they reach logs, vector databases, or third-party APIs.

This template is designed to be copied directly into your prompt management system, IDE, or orchestration layer. It uses square-bracket placeholders for all dynamic inputs, constraints, and configuration. Before using it in production, replace each placeholder with the actual values, schemas, or references your application provides at runtime. The prompt instructs the model to return a redacted query string and a structured manifest of detected PII, making the output machine-readable for downstream validation and logging.

text
You are a privacy-preserving query processor. Your task is to redact personally identifiable information (PII) from a user's search query before it is sent to retrieval systems, logs, or third-party APIs.

INPUT QUERY:
[INPUT]

REDACTION RULES:
[CONSTRAINTS]

OUTPUT SCHEMA:
Return a valid JSON object with exactly these fields:
{
  "redacted_query": "string (the query with all detected PII replaced by [REDACTED] or a type-specific token like [EMAIL] or [PHONE])",
  "pii_detected": [
    {
      "type": "string (one of: EMAIL, PHONE, SSN, CREDIT_CARD, PERSON_NAME, ADDRESS, IP_ADDRESS, DOB, OTHER)",
      "original": "string (the exact PII substring found)",
      "replacement": "string (the token used to replace it)",
      "confidence": "number (0.0 to 1.0)"
    }
  ],
  "redaction_count": "number (total PII instances found and redacted)"
}

INSTRUCTIONS:
1. Scan the entire input query for PII.
2. Replace each detected PII instance with a type-specific token: [EMAIL], [PHONE], [SSN], [CREDIT_CARD], [PERSON_NAME], [ADDRESS], [IP_ADDRESS], [DOB], or [REDACTED] for other types.
3. Do not redact non-PII terms, technical jargon, product names, or general business language.
4. If no PII is detected, return the original query unchanged and an empty pii_detected array.
5. Preserve all original whitespace, punctuation, and non-PII query structure.
6. Do not add commentary, explanations, or apologies. Return only the JSON object.

EXAMPLES:
[EXAMPLES]

RISK LEVEL: [RISK_LEVEL]

To adapt this template, replace [CONSTRAINTS] with your organization's specific PII definitions and redaction policies. For example, you might add rules to preserve internal employee IDs while redacting external customer data. The [EXAMPLES] placeholder should be populated with 2–4 few-shot demonstrations that match your domain's query patterns and PII types. Set [RISK_LEVEL] to HIGH if the prompt will run in a regulated context, which should trigger additional validation and human review steps in your harness. After copying, test the prompt against a golden dataset of queries containing known PII and verify that the JSON output parses correctly and that no PII leaks into the redacted_query field.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the PII Redaction prompt needs to work reliably. Each variable must be supplied or validated before the prompt is called in production.

PlaceholderPurposeExampleValidation Notes

[USER_QUERY]

The raw search query from the end user that may contain PII

Required. Must be a non-empty string. Check for null, empty, or whitespace-only input before calling the prompt.

[PII_CATEGORIES]

The specific types of PII to detect and redact

["EMAIL", "PHONE_NUMBER", "SSN", "CREDIT_CARD", "IP_ADDRESS"]

Required. Must be a valid JSON array of strings. Validate against an allowed-categories enum. An empty array means no redaction.

[REDACTION_STYLE]

How detected PII should be replaced in the output query

ENTITY_TYPE

Required. Must be one of: ENTITY_TYPE, MASKED, PLACEHOLDER, or REMOVE. Validate against the allowed enum before prompt execution.

[MASK_CHARACTER]

The character used for masking when REDACTION_STYLE is MASKED

Required only if REDACTION_STYLE is MASKED. Must be a single character string. Default to * if not supplied.

[PLACEHOLDER_TEXT]

The replacement text when REDACTION_STYLE is PLACEHOLDER

[REDACTED]

Required only if REDACTION_STYLE is PLACEHOLDER. Must be a non-empty string. Validate length to prevent accidental query expansion.

[DOMAIN_TERMS]

A safelist of domain-specific terms that look like PII but are not

["SSN-1234", "project-alpha", "token-999"]

Optional. Must be a valid JSON array of strings or null. Each term is case-sensitive. Validate array structure before passing.

[LOCALE]

The locale context for region-specific PII patterns like national IDs

en-US

Optional. Must be a valid BCP 47 language tag or null. Affects SSN, NINO, and other national identifier pattern recognition.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the PII redaction prompt into a production RAG pipeline with validation, logging, and safe defaults.

This prompt is designed to sit as a pre-retrieval gate in your query pipeline. Before any user query reaches your embedding model, vector database, or third-party search API, it must pass through this redaction step. The prompt returns two artifacts: a redacted_query safe for downstream processing and a pii_detections manifest that records what was found and how it was masked. Your application code should never log or transmit the original query beyond this redaction point. Store the pii_detections manifest in your audit system, but ensure it does not contain the raw PII values—only the detection types, positions, and replacement tokens.

Wire the prompt into your query processing middleware with a strict contract. The function signature should accept the raw user query string and return a typed object matching the output schema. Implement a JSON schema validator (such as ajv for Node.js or pydantic for Python) to enforce that the model response contains both redacted_query and pii_detections fields before the pipeline continues. If validation fails, retry once with a stronger constraint instruction appended to the prompt. If the second attempt also fails, block the query and return a generic error to the user—never fall back to passing the raw query through. For high-throughput systems, consider using a faster, smaller model for this task (such as Claude Haiku or GPT-4o-mini) and reserve larger models for the generation step.

Implement a pre-flight check that compares the input and output query lengths. If the redacted_query is identical to the original input, log a NO_PII_DETECTED event and proceed. If the redacted query is significantly shorter or contains placeholder tokens like [EMAIL_REDACTED] or [PHONE_REDACTED], log a PII_REDACTED event with the count and types from the manifest. Add an eval harness that runs a golden set of queries containing known PII (emails, SSNs, phone numbers, credit card numbers) and verifies that every instance is caught. Also include negative test cases with non-PII terms that resemble PII patterns (e.g., version numbers like v3.4.1, file paths with numeric segments, or scientific notation) to measure over-redaction rates. Flag any over-redaction above 2% for prompt tuning.

For regulated deployments, insert a human review step when the confidence scores in pii_detections fall below a configurable threshold (e.g., 0.85). Queue these uncertain detections for operator review before the redacted query proceeds. The review interface should show the original query with detected spans highlighted, the proposed redaction, and accept/override controls. All review decisions should be logged with operator identity and timestamp for audit trails. Never store the original query in the review log—only the detection metadata and the operator's action. If your system processes queries from authenticated users, consider passing a user role or clearance level as additional context so the prompt can adjust its sensitivity for internal versus external users.

IMPLEMENTATION TABLE

Expected Output Contract

Defines the exact fields, types, and validation rules for the PII redaction prompt output. Use this contract to build a post-processing validator before the redacted query enters logs, vector databases, or external APIs.

Field or ElementType or FormatRequiredValidation Rule

redacted_query

string

Must not contain any detected PII entity values from the manifest. Length must be > 0. Must not be identical to [ORIGINAL_QUERY] if any PII was detected.

pii_detected

boolean

Must be true if the pii_manifest array is non-empty, false otherwise. Enforce strict consistency between flag and manifest.

pii_manifest

array of objects

Each object must have entity_type, original_value, redaction_method, and confidence fields. Array must be empty if pii_detected is false.

pii_manifest[].entity_type

enum string

Must match one of the allowed types defined in [PII_TYPE_WHITELIST]. Common values: EMAIL, PHONE, SSN, CREDIT_CARD, PERSON_NAME, ADDRESS, IP_ADDRESS.

pii_manifest[].original_value

string

Must be a substring present in [ORIGINAL_QUERY]. If not found, flag as a hallucinated PII entity and reject the output.

pii_manifest[].redaction_method

enum string

Must be one of: REPLACE_WITH_TYPE_TOKEN, MASK_PARTIAL, HASH, REMOVE. Method must be consistent with [REDACTION_POLICY].

pii_manifest[].confidence

float

Must be between 0.0 and 1.0 inclusive. If below [CONFIDENCE_THRESHOLD], route the query for human review before redaction is applied.

processing_notes

string or null

If provided, must not contain any PII entity values. Null is allowed. Use for edge-case explanations like ambiguous name vs. organization detection.

PRACTICAL GUARDRAILS

Common Failure Modes

PII redaction prompts fail in predictable ways. Here are the most common failure modes, why they happen, and how to guard against them in production.

01

Over-Redaction of Non-PII Terms

What to watch: The model aggressively redacts terms that resemble PII patterns but are not—product codes, version strings, UUIDs, or numeric identifiers that are not personal data. This destroys query meaning and retrieval relevance. Guardrail: Provide a denylist of known non-PII patterns from your domain. Add an eval check that measures semantic drift between original and redacted queries using embedding distance. Flag redactions where the cosine similarity drops below 0.85 for human review.

02

Missed PII in Non-Standard Formats

What to watch: The model catches standard email and phone patterns but misses PII embedded in prose, split across tokens, or formatted unconventionally—such as 'john dot smith at gmail dot com' or phone numbers with parentheses and notes. Guardrail: Include few-shot examples of obfuscated PII formats in the prompt. Run a post-redaction regex sweep for known PII patterns as a safety net. Log all redaction gaps to a human review queue with the original query snippet for pattern improvement.

03

Redaction of Query-Critical Context

What to watch: The model redacts a name or identifier that is essential to the user's search intent—such as a colleague's name in 'find the Q3 report by Sarah Chen' or a patient ID in a clinical lookup. The redacted query becomes useless for retrieval. Guardrail: Distinguish in the prompt between 'PII to remove for privacy' and 'entity references needed for retrieval.' Generate a redacted query and a separate detected-PII manifest. Allow downstream systems to decide whether to use the redacted query or abort with a clarification request.

04

Inconsistent Redaction Across Query Variants

What to watch: When the same user submits multiple queries with similar PII, the model redacts inconsistently—redacting an email in one query but leaving a phone number in the next. This breaks audit trails and creates privacy gaps. Guardrail: Use a deterministic post-processing layer for PII patterns that can be matched with regex before the prompt runs. Reserve the model for contextual PII detection only. Compare redaction decisions across query sessions and flag inconsistencies for review.

05

Leakage Through the PII Manifest Itself

What to watch: The model correctly redacts PII from the query but then outputs the original PII values in the detected-PII manifest or rationale field. This manifest gets logged or stored, defeating the purpose of redaction. Guardrail: Instruct the model to describe PII categories and positions without reproducing the raw values. Validate the manifest output with a regex check that rejects any response containing the original PII patterns. Never log the raw manifest without sanitization.

06

Latency Spikes on Long or Complex Queries

What to watch: PII redaction prompts add latency to the retrieval pipeline. Long queries with multiple PII candidates or complex prose cause the model to take significantly longer, violating retrieval SLAs. Guardrail: Set a timeout on the redaction step. If the model exceeds the timeout, fall back to regex-only redaction and log the query for async review. Consider a fast/slow path: regex for obvious patterns inline, model-based redaction for ambiguous cases off the critical path.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for evaluating the quality and safety of PII redaction outputs before deploying the prompt to production. Use these standards to build automated tests, human review checklists, and acceptance gates.

CriterionPass StandardFailure SignalTest Method

PII Recall

All PII instances in [INPUT_QUERY] are detected and listed in the manifest with correct type labels

Missed email, phone, SSN, credit card, or person name in the manifest

Run against a golden dataset of 100+ queries with known PII; require recall >= 0.99

Redaction Completeness

The [REDACTED_QUERY] contains zero recoverable PII tokens from the original query

Original PII substring appears unmasked or partially masked in the redacted output

Regex scan of [REDACTED_QUERY] for known PII patterns; grep for original PII substrings from the manifest

Over-Redaction Rate

Non-PII terms are preserved; false positive redactions are below 2% of total tokens

Common nouns, product names, or technical terms incorrectly flagged as PII and redacted

Diff token count between [INPUT_QUERY] and [REDACTED_QUERY] excluding confirmed PII tokens; human review of a random sample

Type Classification Accuracy

Each detected PII instance is assigned the correct type from the allowed taxonomy

Email classified as phone, organization name classified as person name, or SSN classified as credit card

Compare manifest type labels against ground truth in golden dataset; require accuracy >= 0.98

Manifest Schema Compliance

The [PII_MANIFEST] output is valid JSON matching the required schema with all required fields present

Missing 'type' field, malformed JSON, or extra unexpected fields that break downstream parsers

JSON Schema validation against the defined manifest schema; parse check in CI pipeline

Query Intent Preservation

The semantic meaning of [REDACTED_QUERY] is equivalent to [INPUT_QUERY] after redaction; search results should match within tolerance

Redaction removes query-critical context causing retrieval to return irrelevant or empty results

Embedding cosine similarity between original and redacted query >= 0.95; side-by-side retrieval result overlap comparison

Boundary Case Handling

Queries with no PII return an empty manifest and an unchanged [REDACTED_QUERY]; edge cases like PII adjacent to punctuation are handled correctly

Empty manifest but query text altered; PII at start/end of string truncated; PII joined to punctuation mishandled

Unit tests for: no-PII query, PII-only query, PII at string boundaries, PII with adjacent special characters, mixed PII types in one query

Latency Budget Compliance

End-to-end redaction completes within the allowed latency window for the retrieval pipeline

Redaction adds more than 200ms p95 latency causing user-facing timeout or degraded search experience

Benchmark prompt execution time across 1000 queries; measure p50, p95, p99; fail if p95 exceeds latency budget

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a simple PII pattern list and a single-pass redaction. Skip structured output initially; return a plain redacted query string and a comma-separated list of detected types.

code
Redact all personally identifiable information from the following search query.
Return only the redacted query and a list of PII types found.

Query: [USER_QUERY]

Watch for

  • Over-redaction of non-PII terms like product names or error codes
  • Missed email addresses with unusual TLDs
  • No confidence scoring, so false positives are silent
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.