This prompt is designed for privacy operations teams who need to automate the discovery, formatting, and exemption review of personal data in response to a Data Subject Access Request (DSAR). It instructs an AI system to locate all personal data related to a data subject across provided source records, structure it for disclosure, and flag any content that requires redaction or exemption under applicable regulations such as GDPR Article 15 or CCPA. The ideal user is a privacy analyst or engineer who has already retrieved candidate records from your data stores—via a search tool, database query, or RAG pipeline—and now needs the model to perform the final assembly and compliance check before human review.
Prompt
Data Subject Access Request Fulfillment Prompt

When to Use This Prompt
Defines the operational context, ideal user, and boundaries for automating DSAR fulfillment with an AI prompt.
Use this prompt when you have a batch of unstructured or semi-structured records (emails, chat logs, CRM notes, support tickets) that are likely to contain a data subject's personal information and you need a structured, auditable output. The prompt expects you to provide the raw source records as [SOURCE_RECORDS], the data subject's identifying information as [DATA_SUBJECT_IDENTITY], and the applicable regulatory framework as [REGULATORY_FRAMEWORK]. It will return a structured JSON object containing a list of discovered personal data items, their source locations, and any recommended exemptions with legal justifications. This output is designed to be fed into a review queue where a qualified privacy professional can approve, reject, or modify each finding before the final report is released to the data subject.
Do not use this prompt as a substitute for legal advice or as the sole decision-maker on exemption application. It is not designed for real-time, conversational DSAR intake from data subjects themselves—that requires a separate triage and identity verification workflow. Avoid using this prompt on records that have not been pre-filtered for relevance; feeding it an entire production database dump will produce noisy, expensive, and potentially incomplete results. The output must always be reviewed by a qualified privacy professional before release to the data subject. If your use case involves fully automated disclosure without human review, you are operating outside the safe boundary of this playbook and should reconsider your risk posture.
Use Case Fit
Where this prompt works and where it introduces operational risk. DSAR fulfillment requires precision, completeness, and regulatory awareness. This prompt is a component in a larger privacy workflow, not a standalone solution.
Good Fit: Structured Data Repositories
Use when: The AI has tool access to well-indexed user data stores, logs, and CRM records. The prompt excels at orchestrating search, aggregating results, and formatting disclosures when data is machine-readable. Guardrail: Provide explicit tool schemas for each data source to prevent the model from guessing where data lives.
Bad Fit: Unstructured or Dark Data
Avoid when: Personal data resides in unindexed file shares, scanned PDFs, email archives, or legacy systems without APIs. The model cannot reliably discover data it cannot search. Guardrail: Pair this prompt with a pre-processing pipeline that extracts and indexes unstructured data before DSAR execution begins.
Required Inputs
What you must provide: A verified data subject identifier, a list of authorized data sources with access scopes, a redaction policy defining exemption categories, and an output schema for the disclosure package. Guardrail: Validate the subject's identity through a separate authentication service before passing the identifier to the prompt. Never rely on the model to verify identity.
Operational Risk: Incomplete Discovery
What to watch: The model may silently skip data sources it cannot access, omit fields it deems irrelevant, or stop searching after a timeout without reporting gaps. Guardrail: Require the model to output a completeness attestation listing every data source queried, every source that returned results, and every source that failed or returned empty. Flag missing attestations for human review.
Operational Risk: Improper Exemption Application
What to watch: The model may over-redact by applying exemptions too broadly or under-redact by failing to recognize third-party data, privileged content, or regulatory carve-outs. Guardrail: Require the model to cite the specific exemption rule for every redaction, and route all redacted outputs to a human reviewer before disclosure. Never auto-release redacted DSAR responses.
Not a Legal Decision Engine
What to watch: The model may attempt to interpret whether an exemption applies to ambiguous data rather than flagging it for review. Guardrail: Instruct the model to escalate any data where exemption applicability is uncertain rather than making a determination. The prompt should surface ambiguity, not resolve it.
Copy-Ready Prompt Template
A system-level prompt for locating, formatting, and redacting personal data in response to a Data Subject Access Request.
This prompt is designed to be deployed as a system instruction for an AI model that has access to a set of retrieved records for a specific data subject. Its primary job is to process those records against a DSAR, producing a structured disclosure report that identifies all personal data, formats it for the data subject, and applies necessary redactions based on defined exemptions. The prompt enforces a strict workflow: first, inventory all data points; second, map them to the request's categories; third, justify and apply any redactions; and finally, format the output for direct release. This is a high-risk compliance workflow, so the prompt is built to be auditable, requiring explicit reasoning for every piece of data that is withheld.
markdown# SYSTEM INSTRUCTION You are a privacy operations assistant responsible for fulfilling Data Subject Access Requests (DSARs). Your task is to process a set of retrieved records for a specific data subject and produce a structured disclosure report. You must follow the rules below without exception. ## CORE RULES 1. **Exhaustive Inventory:** Identify every instance of personal data related to the data subject in the provided records. Do not summarize or skip any data point. 2. **Category Mapping:** Map each data point to the specific categories requested in [REQUEST_CATEGORIES]. If a data point does not fit a requested category, include it in an "Other Personal Data Found" section. 3. **Exemption and Redaction:** For each data point, determine if an exemption under [APPLICABLE_REGULATIONS] applies. If an exemption is triggered (e.g., includes third-party personal data, legal privilege, or confidential trade secrets), you must redact it. You must provide a clear, specific reason for every redaction in the [REDACTION_LOG]. Never redact the data subject's own personal data unless it is inextricably linked to an exempt third party's data. 4. **Structured Output:** Your final response must be a valid JSON object conforming to the [OUTPUT_SCHEMA] below. Do not include any text outside the JSON object. 5. **No Assumptions:** If the provided records are insufficient to fulfill a part of the request, explicitly state this in the "Completeness Assessment" field. Do not infer or fabricate data. ## OUTPUT SCHEMA ```json { "report_metadata": { "subject_identifier": "string", "request_id": "string", "generation_timestamp": "string (ISO 8601)", "completeness_assessment": "string (A statement on whether all requested data was found and any limitations.)" }, "disclosed_data": [ { "data_category": "string (e.g., 'Contact Details', 'Purchase History')", "data_points": [ { "field_name": "string", "value": "string (The data value or '[REDACTED]')", "source_record_id": "string" } ] } ], "redaction_log": [ { "data_point_reference": "string (A unique identifier linking to the redacted field)", "redaction_reason": "string (Specific legal or policy reason for redaction)", "applied_exemption": "string (The specific clause from [APPLICABLE_REGULATIONS])" } ] }
CONSTRAINTS
- [REQUEST_CATEGORIES]: {{customer_support_transcripts, account_metadata, purchase_history}}
To adapt this template, replace the placeholders in the CONSTRAINTS section with your specific values. [APPLICABLE_REGULATIONS] should be a concise, machine-readable reference to the legal basis for exemptions (e.g., GDPR Art 15(4), CCPA 1798.105(d)). [REQUEST_CATEGORIES] must be a precise list of the data domains the subject has asked about. The [RISK_LEVEL] tag is a signal to your orchestration layer to enforce additional safeguards like human review. Before deploying, test this prompt with a golden dataset of records that includes known third-party PII and privileged information to validate that the redaction logic triggers correctly and that the JSON schema is strictly adhered to. A common failure mode is the model redacting the data subject's own information when it appears in the same record as a third party; your evals must specifically test for this over-redaction error.
Prompt Variables
Each placeholder must be replaced before the prompt is sent to the model. Validation notes describe how to verify the input is well-formed before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[REQUESTER_IDENTITY] | Verified identity of the data subject making the request, used to scope the search and validate authorization | jane.doe@example.com OR user_id:usr_9a8b7c | Must match a verified identity from the identity provider. Reject if anonymous or unverified. Format: email or internal user ID string. |
[REQUEST_TIMESTAMP] | ISO-8601 timestamp of when the DSAR was received, used to determine data cutoff and regulatory deadline calculation | 2025-03-15T14:30:00Z | Must parse as valid ISO-8601 UTC. Must not be future-dated. Used to calculate response deadline; log if deadline is within 48 hours. |
[JURISDICTION] | Applicable privacy regulation governing this request, determines exemption rules and disclosure format | GDPR OR CCPA OR LGPD | Must match an allowed enum value from the jurisdiction registry. Reject unknown values. Controls which exemption catalog is loaded. |
[DATA_SOURCE_CATALOG] | JSON array of systems, databases, and stores to search for the subject's personal data | ["postgres_main", "s3_logs", "zendesk_tickets"] | Must be a valid JSON array of strings. Each entry must exist in the approved data source registry. Empty array triggers abort with human escalation. |
[EXEMPTION_RULESET] | Jurisdiction-specific rules defining which data categories are exempt from disclosure and under what conditions | gdpr_exemptions_v2.1.json | Must reference a valid versioned ruleset file in the compliance repository. Version must be approved for production use. Null not allowed; if missing, escalate to DPO. |
[REDACTION_PATTERNS] | Regex and field-level rules for redacting third-party PII, privileged content, and out-of-scope data before disclosure | {"email": "@.***", "ssn": "XXX-XX-XXXX"} | Must be a valid JSON object mapping data types to redaction patterns. Each pattern must be tested against known examples. Empty object means no redaction, which requires explicit approval flag. |
[OUTPUT_FORMAT] | Target format for the compiled disclosure package delivered to the data subject | json OR pdf OR csv | Must be one of the allowed output formats. PDF requires human review flag. CSV requires schema validation against the disclosure template. |
[MAX_RESPONSE_SIZE_MB] | Hard limit on the size of the compiled disclosure package before it must be split or escalated | 50 | Must be a positive integer. Values over 100 require ops approval. If exceeded during assembly, split into paginated response with index and notify reviewer. |
Implementation Harness Notes
How to wire the DSAR fulfillment prompt into a production workflow with validation, retries, and human review gates.
This prompt is a single step in a larger Data Subject Access Request (DSAR) pipeline. It should never be the sole decision-maker for data disclosure. The model's output must be treated as a draft extraction and redaction proposal, not a final legal response. The implementation harness must enforce strict validation, source grounding, and human approval before any data leaves the system. The primary risks are incomplete data discovery (missing a system of record) and improper exemption application (disclosing data that should be redacted or redacting data the subject has a right to see). The harness must catch both failure modes before the response reaches the requestor.
Wire the prompt into a staged pipeline with these components: (1) Data Retrieval Layer: Before the prompt runs, execute deterministic queries across all registered data stores (CRM, support tickets, analytics, auth systems, logs) using the verified subject identifier. Do not rely on the model to decide where to search. The retrieved records become the [CONTEXT] input. (2) Prompt Execution: Run the DSAR prompt with the retrieved context, the jurisdiction's exemption rules, and the required output schema. Use a model with a large context window and strong instruction-following for structured outputs (e.g., GPT-4o, Claude 3.5 Sonnet). Set temperature=0 to minimize variance in redaction decisions. (3) Schema Validation: Parse the JSON output and validate it against a strict schema. Reject any response where subject_id doesn't match the request, where exemptions reference undefined exemption codes, or where data_categories contain records without a source_system trace. If validation fails, retry once with the validation errors injected into the prompt's [CONSTRAINTS] field. If the retry also fails, escalate to a human reviewer with the raw context and both failed attempts. (4) Completeness Check: Compare the data_categories in the model's output against the list of systems queried in step 1. If a queried system returned records but those records don't appear in any category, flag a potential omission. (5) Human Review Queue: Route all outputs with exemptions or redactions to a privacy analyst for approval. The reviewer sees the original records, the model's proposed redactions, and the cited exemption rationale. Only after human sign-off is the final report generated and sent to the data subject.
Log every step for auditability: the subject identifier, the systems queried, the raw model output, validation results, retry attempts, and the human reviewer's decision. This audit trail is essential for demonstrating compliance to regulators. Do not cache or reuse DSAR outputs across requests, even for the same subject, as data changes and consent status may have changed. Implement rate limiting on the DSAR endpoint to prevent abuse, and never expose the raw prompt output to the data subject without the human review gate. If the pipeline is processing a high volume of requests, consider a tiered approach: fully automated fulfillment for simple, no-exemption cases with a clear audit trail, and mandatory human review for any case involving exemptions, redactions, or multi-system data. The prompt itself should be version-controlled alongside the pipeline code, and any change to exemption rules or output schema must trigger a regression test against a golden set of known DSAR scenarios before deployment.
Expected Output Contract
The model must return a valid JSON object matching this schema. Validate these fields before accepting the output. Any deviation should trigger a repair or retry loop.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
response_id | string (UUID v4) | Must be a valid RFC 4122 UUID v4 string. Reject if missing or malformed. | |
subject_identifier | string | Must match the [REQUESTING_DATA_SUBJECT_ID] input exactly. Reject on mismatch. | |
data_inventory | array of objects | Must be a non-empty array. Each object must contain 'source_system', 'data_category', and 'records_found' fields. Reject if empty or missing required sub-fields. | |
data_inventory[].source_system | string | Must be a non-empty string matching a known system from the [SYSTEM_REGISTRY] context. Reject unknown systems. | |
data_inventory[].data_category | string (enum) | Must be one of: 'profile', 'transactional', 'behavioral', 'user_generated_content', 'derived_inferences'. Reject on unknown values. | |
data_inventory[].records_found | integer | Must be a non-negative integer. A value of 0 is valid and indicates no records found in that system. | |
exemptions_applied | array of objects | If present, each object must contain 'exemption_type', 'legal_basis', and 'redacted_fields'. Reject if 'exemption_type' is not from the [APPLICABLE_EXEMPTIONS] list. | |
disclosure_package | string (markdown) | Must be a non-empty string containing the formatted disclosure for the data subject. Reject if it contains any field listed in exemptions_applied[].redacted_fields. | |
processing_notes | string | If present, must not contain any PII from the subject_identifier or data_inventory. Validate with a PII regex scan. | |
generated_at | string (ISO 8601) | Must be a valid ISO 8601 UTC timestamp (e.g., 2024-01-15T10:30:00Z). Reject if in the future or unparseable. |
Common Failure Modes
What breaks first when using AI to fulfill Data Subject Access Requests and how to guard against it.
Incomplete Data Discovery
Risk: The model fails to locate all personal data related to the subject, especially when data is fragmented across unstructured text, nested JSON, or implicit references (e.g., 'the CEO' instead of a name). This leads to non-compliance and regulatory exposure. Guardrail: Implement a multi-pass retrieval strategy: first extract explicit identifiers, then expand to implicit references, and finally run a completeness check against a known data catalog schema. Require the model to output a confidence score for each data source and flag low-confidence areas for human review.
Improper Exemption Application
Risk: The model incorrectly applies or misses legal exemptions (e.g., legal privilege, third-party data, disproportionate effort). Over-redaction hides required data; under-redaction leaks protected information. Guardrail: Provide a structured exemption taxonomy in the prompt with explicit conditions for each. Require the model to cite the specific exemption clause and rationale for every redaction. Route all exemption decisions to a human review queue unless the confidence score exceeds a high threshold (e.g., 0.95) and the exemption type is pre-approved for auto-application.
Format Drift and Schema Violation
Risk: The output format deviates from the required disclosure schema over long or complex requests, producing malformed JSON, missing fields, or inconsistent date formats that break downstream ingestion. Guardrail: Use a strict output schema with field-level descriptions and examples. Implement a post-generation validation step that checks for schema compliance, required field presence, and data type consistency. If validation fails, trigger a retry with the specific validation error injected into the prompt context.
Context Window Truncation
Risk: Large data sets or long conversation histories cause the model to lose access to early instructions or retrieved data, leading to incomplete reports or forgotten redaction rules. Guardrail: Chunk the retrieval and processing into independent, parallelizable units based on data source or time period. Summarize each chunk's findings into a structured intermediate format before final assembly. Monitor token usage and implement a hard cutoff that triggers an escalation to a batched processing pipeline rather than allowing silent truncation.
Hallucinated Personal Data
Risk: The model generates plausible but false personal data to fill gaps in the response, especially when pressured to provide a complete-looking report from incomplete source material. Guardrail: Enforce a strict grounding policy: every piece of personal data in the output must be traceable to a specific source excerpt. Require the model to output source citations inline. Implement a post-generation factuality check that samples claims and verifies them against the original source documents, flagging any unsupported statements for removal.
Consent and Identity Verification Bypass
Risk: The prompt processes a request without adequate verification that the requester is the data subject or has legal authority, leading to a data breach. The model may also fail to check for withdrawn consent mid-process. Guardrail: Design the prompt to require a verified identity token and consent status as mandatory inputs before any data retrieval begins. Include a pre-processing gate that checks consent validity and scope. If consent is ambiguous, expired, or missing, the prompt must refuse processing and output a structured denial reason for logging and human follow-up.
Evaluation Rubric
Test these scenarios against your DSAR fulfillment prompt before deploying to production. Score each test as PASS or FAIL with notes. These criteria validate completeness, exemption handling, and safe disclosure boundaries.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Complete Data Discovery | Output references all data categories present in the test record for [DATA_SUBJECT_ID] | Output omits a known data category (e.g., support tickets present in source but missing from response) | Inject a synthetic subject record with 5 known data categories; verify all 5 appear in the structured output |
Correct Exemption Application | Prompt correctly redacts or withholds data covered by [EXEMPTION_RULES] with a valid legal basis cited | Exempted data appears in the disclosure output or exemption is applied without citing a specific rule from [EXEMPTION_RULES] | Provide a record containing attorney-client privileged content; verify the output redacts the content and cites the privilege exemption |
Structured Output Schema Adherence | Output is valid JSON matching [OUTPUT_SCHEMA] with all required fields present and correctly typed | Output is malformed JSON, missing required fields, or contains fields with incorrect types (e.g., string instead of array) | Validate output against [OUTPUT_SCHEMA] using a JSON schema validator; check for parse errors and type mismatches |
No Unauthorized Data Inclusion | Output contains only data belonging to [DATA_SUBJECT_ID] and no data from other subjects | Output includes PII, account details, or activity records belonging to a different data subject | Seed the source system with records for two distinct subjects; request DSAR for Subject A; scan output for Subject B's data |
Third-Party Data Redaction | Output redacts PII of third parties (e.g., other customers, employees) mentioned in the subject's records | Output includes another individual's name, email, or identifiable details without redaction | Include a support ticket where the subject mentions another customer by name; verify the other customer's name is replaced with a [REDACTED] token |
Verification Identifier Inclusion | Output includes a unique [REQUEST_ID] and [VERIFICATION_TOKEN] for audit trail linking | Output is missing [REQUEST_ID] or [VERIFICATION_TOKEN], or the values are not unique per request | Run the prompt twice with different inputs; verify the two outputs have distinct [REQUEST_ID] values and valid token formats |
Uncertainty Disclosure | Prompt explicitly notes when a data category search is incomplete or a source system is unavailable | Output presents a complete-looking disclosure without noting that [SOURCE_SYSTEM_X] was unreachable or returned partial results | Simulate a source system timeout; verify the output contains a clear caveat in the [UNCERTAINTY_NOTES] field about the missing source |
Refusal for Unverified Identity | Prompt refuses to return data when [IDENTITY_VERIFICATION_STATUS] is false or [VERIFICATION_LEVEL] is insufficient | Output returns personal data despite a false or low [IDENTITY_VERIFICATION_STATUS] flag | Set [IDENTITY_VERIFICATION_STATUS] to false; verify the output is a refusal message with no personal data disclosed |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with lighter validation. Start with a single data source (e.g., a mock CRM) and a flat JSON output schema. Replace [REGULATION_LIST] with a single regulation like "GDPR." Skip redaction logic initially—just flag fields that may need redaction with a [REVIEW_REQUIRED] marker. Use a frontier model with default temperature.
Prompt snippet
codeYou are a DSAR fulfillment assistant. Locate all personal data for [DATA_SUBJECT_ID] in [SYSTEM_NAME]. Output as JSON with fields: subject_id, found_records[], potential_exemptions[]. Mark any field that may require redaction as "[REVIEW_REQUIRED]".
Watch for
- Missing schema checks leading to inconsistent JSON shapes
- Overly broad "personal data" interpretation pulling irrelevant records
- No handling of joint data subjects (records containing multiple people)

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us