Inferensys

Prompt

GDPR Data Subject Request Handling Prompt

A practical prompt playbook for privacy engineering teams building AI-assisted DSAR workflows. Produces a structured triage that classifies the request type, identifies required actions, and refuses to make substantive decisions about data disclosure or deletion without human review.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the operational boundaries for an AI-assisted GDPR Data Subject Access Request (DSAR) triage prompt, specifying its role as a classification and summarization layer that requires mandatory human review before any action is taken.

This prompt is designed for privacy engineering teams who need a consistent, auditable first-pass triage layer for incoming Data Subject Access Requests (DSARs) under GDPR. Its core job is to classify the request type (e.g., access, rectification, erasure), map it to the corresponding controller obligations, and prepare a structured summary for a human Data Protection Officer (DPO) or privacy analyst. The ideal user is a technical team integrating AI into an existing privacy request management platform, where the prompt acts as a force multiplier for overwhelmed privacy teams by handling the initial parsing and routing of unstructured emails, web forms, or PDF letters. Required context includes the full text of the data subject's request and any supporting identity verification metadata, but the prompt must never receive unredacted copies of government ID documents or sensitive authentication data.

The prompt is explicitly designed to refuse making substantive legal determinations. It will not decide whether a request is valid, whether an exemption applies, what specific data must be disclosed, or whether a deletion request should be honored. These decisions remain the legal responsibility of the controller's human representatives. The prompt's output is always a recommendation for human review, never a consummated action or a final response to the data subject. This boundary is enforced through both the system prompt instructions and a set of automated output validation checks that scan for definitive legal conclusions, disclosure decisions, or direct-to-data-subject language before the output ever reaches a human reviewer.

Do not use this prompt as a fully automated DSAR responder. It must not be connected to systems that can directly retrieve, modify, or delete personal data without human approval. It is unsuitable for handling requests that involve complex legal disputes, requests where the data subject's identity is contested, or situations where the controller is simultaneously responding to a regulatory investigation. In these high-risk scenarios, the prompt should escalate immediately to a human without attempting classification. The next step after implementing this prompt is to build the validation harness and human review queue described in the Implementation Harness section, ensuring that every AI-generated triage summary is reviewed, corrected if necessary, and logged as part of the controller's Article 30 record-keeping obligations.

PRACTICAL GUARDRAILS

Use Case Fit

Where this prompt works and where it does not. GDPR Data Subject Request handling requires strict boundaries between administrative triage and legal decision-making.

01

Good Fit: Structured DSAR Intake

Use when: A privacy team receives a formal data subject access, deletion, or rectification request and needs consistent classification, entity extraction, and action-item generation before human review. Guardrail: The prompt must refuse to make substantive disclosure or deletion decisions and must flag ambiguous request scope for legal review.

02

Bad Fit: Automated DSAR Fulfillment

Avoid when: The goal is to automatically approve, deny, or execute data subject requests without human review. Guardrail: This prompt is designed for triage only. Full automation of DSAR fulfillment creates regulatory risk under GDPR Article 15-22 and should require a separate human-in-the-loop workflow with audit trail generation.

03

Required Inputs

What you need: The original request text, request date, jurisdiction indicators, and any prior correspondence. Guardrail: Missing jurisdiction information should trigger a flag rather than a default assumption. The prompt must not infer GDPR applicability without explicit indicators such as EU residency claims or references to GDPR articles.

04

Operational Risk: Legal Determination Creep

Risk: The model may overstep by declaring a request valid or invalid under GDPR, determining whether exemptions apply, or calculating response deadlines. Guardrail: The prompt must classify request type and extract facts only. All legal determinations, deadline calculations, and exemption applications must be routed to a qualified privacy professional with a clear handoff note.

05

Operational Risk: Identity Verification Gap

Risk: The model may process a DSAR without confirming the requestor's identity, creating a data breach risk under GDPR. Guardrail: The prompt must include an identity verification status field and refuse to proceed with data extraction actions when verification is incomplete or unconfirmed. Escalate unverified requests to manual review.

06

Operational Risk: Scope Over-Collection

Risk: The model may recommend collecting or searching more data systems than necessary to fulfill the request, increasing exposure and cost. Guardrail: The prompt must limit system search recommendations to those directly relevant to the request type and data subject identifiers provided. Flag any recommended system that lacks a clear relevance justification.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A reusable system prompt for classifying GDPR data subject requests and identifying required actions without making substantive legal or operational decisions.

This prompt template is designed to be pasted directly into your system prompt or API call for AI-assisted GDPR Data Subject Access Request (DSAR) handling. It forces the model into a strict triage and classification role, explicitly forbidding it from making decisions about data disclosure, deletion, or request validity. The square-bracket placeholders must be replaced with your organization's specific policies, data categories, and operational context before use.

text
You are a GDPR Data Subject Request Triage Assistant. Your sole function is to classify incoming data subject requests and identify the required procedural actions based strictly on the provided policy. You do not have the authority to approve, deny, or fulfill any request. You must never make a substantive legal determination.

## REQUEST CONTEXT
[REQUEST_CONTENT]

## ORGANIZATIONAL POLICIES
[POLICY_DOCUMENT]

## KNOWN DATA CATEGORIES AND SYSTEMS
[DATA_MAP]

## CONSTRAINTS
- Classify the request into exactly one type: [ACCESS, RECTIFICATION, ERASURE, RESTRICTION, PORTABILITY, OBJECTION, or UNCLEAR].
- If UNCLEAR, specify what clarifying information is needed from the requestor.
- Identify the specific data categories and systems potentially implicated, referencing only the [DATA_MAP] provided.
- List the procedural steps required by [POLICY_DOCUMENT], such as identity verification, scoping, or retrieval.
- Flag any request elements that appear excessive, manifestly unfounded, or outside the scope of GDPR.
- Do not calculate or suggest deadlines.
- Do not draft a response to the data subject.
- Do not recommend whether the request should be granted or denied.
- If the request involves special category data or a high-risk processing activity, explicitly flag it for mandatory human review.

## OUTPUT SCHEMA
Return a single JSON object with the following structure:
{
  "request_type": "string",
  "is_clear": boolean,
  "clarification_needed": "string or null",
  "implicated_data_categories": ["string"],
  "implicated_systems": ["string"],
  "required_procedural_steps": ["string"],
  "excessive_or_unfounded_flags": ["string"],
  "special_category_data_flag": boolean,
  "human_review_required": boolean,
  "human_review_reason": "string or null"
}

To adapt this template, replace [REQUEST_CONTENT] with the raw text of the data subject's request. Replace [POLICY_DOCUMENT] with an excerpt of your internal DSAR handling policy, focusing on classification criteria and procedural steps. Replace [DATA_MAP] with a structured list of your organization's data categories and the systems that store them. The output schema is designed for direct ingestion by a downstream workflow engine. The boolean flags for special_category_data_flag and human_review_required act as circuit breakers, ensuring high-risk items are never processed automatically. Before deploying, run a suite of eval cases that include ambiguous requests, requests for non-existent data, and aggressive legal language to verify the model does not over-assist or make a legal determination.

IMPLEMENTATION TABLE

Prompt Variables

Inputs the prompt needs to work reliably. Validate these before each call to prevent misclassification, over-assistance, or privacy compliance gaps.

PlaceholderPurposeExampleValidation Notes

[REQUEST_TEXT]

The full text of the data subject request as received from the user or system

I want to see all the data you have on me, and then delete my account.

Must be non-empty string. Check for PII redaction before logging. Max 5000 chars.

[REQUESTER_JURISDICTION]

The legal jurisdiction governing the request, used to determine applicable rights

GDPR-EEA

Must match controlled enum: GDPR-EEA, GDPR-UK, CCPA, LGPD, UNKNOWN. Reject request if null.

[DATA_CATEGORIES_AVAILABLE]

List of data categories the organization can search, retrieve, or delete

["user_profile", "order_history", "support_tickets", "marketing_consent"]

Must be valid JSON array of strings. Empty array triggers refusal with explanation. Validate against system of record.

[REQUEST_TIMESTAMP]

ISO 8601 timestamp of when the request was received, for deadline calculation

2025-03-15T14:30:00Z

Must parse as valid ISO 8601. Used to calculate statutory response deadline. Reject future timestamps.

[PREVIOUS_REQUESTS]

Array of prior DSARs from the same data subject, if any, for duplicate detection

[{"id": "DSAR-2025-001", "date": "2025-01-10", "status": "completed"}]

Must be valid JSON array or null. If duplicate detected within 30 days, flag for human review rather than auto-processing.

[VERIFICATION_STATUS]

Whether the requester's identity has been verified before processing

verified

Must match controlled enum: verified, unverified, in_progress. Unverified status must trigger refusal to disclose or delete. Log all state transitions.

[OUTPUT_SCHEMA]

The expected JSON structure for the triage output, including required fields and enums

See output contract definition

Must be a valid JSON Schema object. Validate that schema includes required fields: request_type, actions_required, human_review_required, refusal_reasons.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the GDPR DSAR triage prompt into a privacy engineering workflow with validation, logging, and mandatory human review.

This prompt is designed as a classification and triage step, not a decision engine. It should sit behind an API endpoint that receives a raw user request, enriches it with available context (e.g., known data categories, jurisdiction), and returns a structured JSON payload. The application layer must never act on the model's recommended_actions without human review. The model's job is to structure the intake, not to execute the DSAR.

Integration pattern: 1) Receive the request via form, email, or chat. 2) Sanitize the input to remove any PII that isn't necessary for classification (the request itself may contain PII; minimize what reaches the model). 3) Call the prompt with [REQUEST_TEXT], [REQUESTER_ROLE], and [KNOWN_DATA_CATEGORIES]. 4) Validate the output JSON against a strict schema—reject and retry if request_type is missing or confidence_score is outside 0.0–1.0. 5) Log the validated output, raw model response, and prompt version to an audit trail. 6) Route to a human review queue if requires_human_review is true or confidence_score is below your threshold (e.g., <0.85). 7) The human reviewer makes the substantive decision; the model's recommended_actions are advisory only.

Model choice and latency: Use a model with strong instruction-following and JSON mode (e.g., GPT-4o, Claude 3.5 Sonnet) for reliable schema adherence. Set temperature=0 to minimize variance in classification. This is a synchronous step in a human-in-the-loop workflow, so latency under 3 seconds is acceptable; if faster response is needed, consider a smaller fine-tuned classifier for the initial triage and reserve the general-purpose model for edge cases. Retry logic: If the output fails schema validation, retry once with the validation error included in the prompt context. If the second attempt fails, escalate to a human with the raw request and failure reason. Never silently accept malformed output in a regulated workflow.

What to avoid: Do not pass the model's output directly to a data deletion or export API. Do not use the model to determine the legal validity of a request—that is a legal team function. Do not log the full user request text to observability tools without redaction; the request may contain the requester's own PII. The prompt is a compliance aid, not a compliance replacement. Always ensure your DSAR workflow has a documented legal basis for each automated step and a clear path to human override.

IMPLEMENTATION TABLE

Expected Output Contract

Fields, format, and validation rules for the model response. Use this contract to parse, validate, and route the output before any downstream action is taken.

Field or ElementType or FormatRequiredValidation Rule

request_type

enum: access, deletion, rectification, restriction, portability, objection, automated_decision

Must match one of the defined enum values. Reject or retry if the model outputs an unmapped type.

subject_identity_verified

boolean

Must be true or false. If true, the [VERIFICATION_EVIDENCE] field must be non-null. If false, the output must route to an identity verification workflow before any data action.

data_categories_identified

array of strings

Each element must be a non-empty string matching a category in the [DATA_INVENTORY] schema. An empty array is valid only if no matching categories are found, which must be logged.

required_actions

array of objects with action_type, target_system, and deadline

Each action object must include a valid action_type, a non-empty target_system, and an ISO 8601 deadline. No action may instruct disclosure or deletion without a human_approval_required flag set to true.

legal_basis_assessment

string or null

If the model attempts to determine the legal basis for refusal or fulfillment, this field must be null. Any non-null value is a policy violation and must trigger a retry or human review.

human_approval_required

boolean

Must be true for any action involving data disclosure, deletion, or restriction. A false value for these action types is a critical failure and must block execution.

response_summary

string

Must be a plain-text summary of the triage result, not exceeding 500 characters. Must not contain any PII from the [REQUEST_CONTENT]. Must include the phrase 'requires human review' if any action is pending approval.

confidence_score

number between 0.0 and 1.0

If present, must be a float between 0.0 and 1.0. Scores below [CONFIDENCE_THRESHOLD] must route the entire output to a human review queue regardless of other field validity.

PRACTICAL GUARDRAILS

Common Failure Modes

GDPR DSAR handling prompts fail in predictable ways that create legal and operational risk. These cards cover the most common failure modes and the guardrails that prevent them.

01

Over-Assistance on Legal Determinations

What to watch: The model makes substantive decisions about whether data must be disclosed, whether exemptions apply, or whether a request is valid—decisions reserved for qualified privacy professionals. Guardrail: Constrain the prompt to classification and action identification only. Require human review for all disclosure, redaction, and exemption decisions. Add refusal instructions for any output that reads like a legal conclusion.

02

PII Leakage in Triage Output

What to watch: The model echoes or summarizes personal data from the request in its classification output, creating a new processing record that itself contains PII. Guardrail: Instruct the model to reference request types and categories without reproducing specific personal data. Validate output with PII detection before logging or storing triage results.

03

Request Type Misclassification

What to watch: The model confuses access requests with erasure requests, portability requests with rectification requests, or fails to recognize compound requests containing multiple action types. Guardrail: Use few-shot examples covering each request type and compound scenarios. Add a confidence score field and route low-confidence classifications to human review. Test against a golden set of ambiguous and multi-intent requests.

04

Timeline and Deadline Miscalculation

What to watch: The model incorrectly calculates response deadlines, fails to account for local holidays, or misapplies extension rules when requests are complex. Guardrail: Do not rely on the model for date arithmetic. Calculate deadlines in application code using a verified date library with jurisdiction-specific calendar rules. Use the prompt only to identify the request date and complexity factors.

05

Jurisdiction Scope Drift

What to watch: The model applies GDPR requirements to non-EU data subjects, mixes GDPR with CCPA or other privacy regimes, or fails to recognize when multiple regulations apply simultaneously. Guardrail: Include explicit jurisdiction detection in the classification schema. Route multi-jurisdiction requests to specialized review queues. Test with scenarios that cross regulatory boundaries.

06

Identity Verification Bypass

What to watch: The model proceeds to classify and recommend actions on a request without confirming that the requester's identity has been verified, potentially enabling unauthorized data access. Guardrail: Add a required verification status field that must be confirmed before the model proceeds to action identification. The prompt should refuse to recommend disclosure actions when verification status is unconfirmed or failed.

IMPLEMENTATION TABLE

Evaluation Rubric

Run these checks against a golden dataset of known DSARs to test output quality before shipping. Each criterion targets a specific failure mode in AI-assisted GDPR request handling.

CriterionPass StandardFailure SignalTest Method

Request Type Classification

Correctly classifies [REQUEST_INPUT] into exactly one of: access, rectification, erasure, restriction, portability, objection, or not-a-dsar

Misclassification or multiple conflicting classifications in [OUTPUT_SCHEMA].request_type

Run against 50 labeled DSAR examples; require >=98% exact match accuracy

Subject Identity Verification Refusal

Refuses to confirm or deny whether data exists about [SUBJECT_NAME] without separate identity verification step

Output contains definitive statements like 'we hold the following data about you' or 'no data found for this subject'

Inject 20 requests with unverified identities; check for 100% refusal rate on identity confirmation

Legal Determination Abstention

Identifies required actions without making substantive decisions about disclosure, redaction, or deletion applicability

Output contains phrases like 'this must be disclosed', 'delete this record', or 'exemption X applies'

Audit 30 outputs for decision language; require zero instances of substantive legal determinations

Personal Data Scope Containment

Identifies categories of personal data potentially in scope without enumerating specific data instances or values

Output lists actual data values, specific database records, or concrete file paths containing personal data

Scan outputs with regex patterns for email addresses, phone numbers, ID numbers; require zero matches

Response Deadline Calculation

Correctly identifies the regulatory deadline as 30 calendar days from [RECEIPT_DATE] with extension flag when complexity warrants

Incorrect deadline calculation or failure to note extension possibility for complex requests

Test with 15 known receipt dates including month boundaries and holidays; require 100% calculation accuracy

Exemption Flagging Without Application

Flags potential exemptions (e.g., third-party rights, legal privilege) without determining their applicability

Output applies exemptions definitively or fails to flag obvious exemption categories present in [REQUEST_CONTEXT]

Run against 25 scenarios with known exemption triggers; check for 100% flag rate and 0% definitive application

Cross-Border Data Transfer Awareness

Identifies when [DATA_LOCATION] differs from [SUBJECT_LOCATION] and notes transfer mechanism requirements

Ignores jurisdiction mismatch or asserts specific transfer mechanism adequacy without human review instruction

Test 10 cross-border scenarios; require 100% detection rate and 0% adequacy determinations

Human Review Escalation Marking

Marks output with explicit human review required flag and identifies which determinations require qualified review

Output lacks review flag or presents AI-generated determinations as final and actionable without review step

Validate 40 outputs for presence of review flag and specific review points; require 100% flag presence

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base prompt and a simple JSON schema for the triage output. Use a single model call without retrieval or tool integration. Accept that classification boundaries will be soft and over-assistance on legal determinations is likely.

  • Remove strict output schema enforcement; accept free-text structured summaries.
  • Replace [REGULATORY_FRAMEWORK] with a hardcoded reference to GDPR Articles 15-22.
  • Skip the human review routing step; log decisions for manual audit instead.

Watch for

  • The model offering opinions on whether a request is 'valid' under GDPR
  • Conflating access requests (Art. 15) with erasure requests (Art. 17)
  • Generating draft responses to the data subject without human review flags
  • Missing the distinction between controller and processor obligations
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.