ai
DSAR Automation: Assemble Access Requests With an AI Agent on Rails
To automate a DSAR response safely, automate the assembly and keep the decisions human. A DSAR Assembler agent, at propose level (L2), collects a verified person's records from a customer data platform (CDP) and connected systems, flags gaps and third-party data, and drafts the reply. A privacy analyst verifies identity first, decides every exemption, signs off and sends.
Rail level: L2 · Risk: high · Function: compliance privacy security
By Art Kukharenko · Published · Updated
All AI agent railsWho this is for: DPOs and privacy analysts answering access requests across many systems. This job is one rail in the vendor-neutral AI agent rails method. Legal points were checked on 1 November 2026. Take advice on how they apply to you.
Before: the manual workflow
The manual DSAR workflow is a relay between a privacy analyst and system owners, while a legal clock runs. The analyst logs a request, confirms identity and asks each owner for an export. The analyst then reads everything for other people's data, decides what must be withheld, and writes the reply.
Errors come from three places: a forgotten system, a record belonging to someone else, and a rushed redaction. The European Data Protection Board (EDPB) expects a search of all IT systems and non-IT filing systems, using criteria that mirror how data is structured, and that search extends to processors 1.
How long do you have to answer an access request?
Access request deadlines differ by regime, and the differences change how a rail is built. The table shows the rules we opened. It is not complete: many US states have their own statutes, and sector rules such as HIPAA set their own clocks.
Scroll horizontally to see all columns.
| Regime | Answer within | Extension | Does verification pause the clock? | Rule that shapes the pack |
|---|---|---|---|---|
| GDPR Art. 12(3), Art. 15 23 | Without undue delay, and within one month of receipt | Two months for complexity or number of requests; tell the person within the first month, with reasons | The EDPB accepts a suspension while you wait for identity information, if you asked without undue delay 1 | Copy of the data plus the Art. 15(1)(a) to (h) information |
| UK GDPR Art. 12A, from 5 February 2026 4 | One month from the latest of receipt, identity information or fee | Two months, with notice inside the first month | Yes, and also while waiting for scope clarification | Search must be reasonable and proportionate 5 |
| CCPA Regulations § 7021, § 7024 (effective 1 January 2026) 6 | Confirm in 10 business days; answer in 45 calendar days | 45 more days, 90 in total, with notice and reason | No. The period runs from receipt regardless | 12 months by default; older data back to 1 January 2022 on request |
| Virginia, Va. Code § 59.1-577 7 | Without undue delay, within 45 days | Once by 45 days, with notice inside the first 45 | No duty to comply if the request cannot be authenticated | Appeals answered in writing within 60 days |
A deadline service computes these dates, not the model. The EDPB's examples show why. A request received on 31 August is due by 30 September, and a last day on a weekend or public holiday moves to the next working day 1. Under the CCPA rule, a timer that waits for verification gets the date wrong.
After: the job on rails, step by step
The DSAR job on rails separates collection, drafting and decision, and only drafting uses a model.
- The request enters through a logged channel. The deadline service records the receipt date and the regimes that may apply.
- A privacy analyst verifies identity. The agent cannot start until this is recorded, because a verified request is its only trigger.
- The scope is frozen. The EDPB says the assessment should reflect the situation when the request was received 1. The analyst decides whether short-lived data needs a hold, so it is not erased mid-request.
- Connectors export the records. A collection service queries each system on the system map using verified identifiers, one subject per run.
- The agent drafts. It writes a pack index by system, gaps, third-party flags, exemptions to consider, plain explanations of codes and a draft reply.
- Rules check the draft. Every mapped system must show a result or a named gap, and excluded fields are removed.
- The analyst decides, records reasons and signs off. Sign-off binds to the pack hash, so a later change voids it.
- A separate service delivers the reply, and the analyst closes the request.
- Working copies are deleted. The ledger keeps metadata only.
The Rule of Two sets the tool scope 8. This session reads untrusted text, because emails and notes can carry instructions, and it holds private data. So it gets no state-changing tools: no send, delete or close.
What rules do and what the model does
Rules, connectors and people do most of this job, and the model drafts words around them.
Scroll horizontally to see all columns.
| Task | Done by | Why |
|---|---|---|
| Compute the deadline | Rules | A date must be exact and explainable |
| Verify identity | Privacy analyst, under a written policy | Impersonation is the main risk |
| Extract the records | Connectors and fixed queries | The copy must be a faithful, intelligible reproduction 9. The EDPB allows a compiled form only if nothing is left out or altered 1 |
| Remove excluded fields | Rules | California's list is fixed, including Social Security and financial account numbers, though the type collected must be stated 6 |
| Spot other people's data | A pattern scan, then model flags | A flag is cheap |
| Explain codes, draft the reply | Model | Raw codes may need explaining 1 |
| Decide an exemption | Privacy analyst, with legal advice | See the next section |
| Send and close | Delivery service, then the analyst | Neither is a tool the model holds |
Never let a model paraphrase the personal data itself. A summary can drop a field or change a meaning. Explanations sit beside the export and do not replace it.
Why can't a model decide an exemption or send the reply?
A model cannot decide an exemption because the law asks a controller to justify the decision in the concrete case.
- The burden is on you. The controller must prove a request is manifestly unfounded or excessive 2. For Art. 15(4), a general concern is not enough: the EDPB says you must show that rights or freedoms would in fact be affected 1.
- It is a balancing exercise. The EDPB describes weighing likelihood and severity, then trying to reconcile the interests 1. National restrictions under GDPR Art. 23 vary by Member State.
- A refusal has legal content. GDPR Art. 12(4) requires reasons and remedies. CCPA § 7024(e) requires a detailed explanation and disclosure of the rest 6.
- Mistakes cannot be recalled. Unauthorised disclosure falls within the GDPR's definition of a personal data breach 10.
The agent's output field is therefore "exemptions to consider", with the rule text attached. The rail has no field where a model records a decision. The rule against acting without an approval gate applies without exception.
Who verifies identity, and how much proof is proportionate?
A privacy analyst owns identity verification, and the proof should match the risk. The EDPB says requiring an identity document is disproportionate where the person is already authenticated, for example by login. It prefers a note such as "ID card was checked" to a stored copy 1. For people without an account, California describes two matched data points for categories, and three plus a signed declaration for specific pieces 6.
An automated email link is a rule, and privacy tools run such rules well. What stays out of the model's hands is judging a doubtful case from a persuasive message.
How should third-party data be handled in an access request?
Third-party data is flagged by the agent and resolved by the analyst, usually by redaction and not refusal. The EDPB says Art. 15(4) should not lead to refusing a request altogether, and that it does not apply to the Art. 15(1)(a) to (h) information 1. The Court of Justice has held that actual recipients must be named unless that is impossible or the request is manifestly unfounded or excessive (C-154/21), and that Art. 15 generally gives no right to the identity of employees acting under the controller's authority (C-579/21) 9. So the system map should hold real recipient names.
The session never queries another person's record. Records can still mention other people, so the pattern scan masks those mentions before the model reads them. The analyst sees the original.
The rail card
The rail card below fixes what the DSAR Assembler may do, and systems enforce it.
Scroll horizontally to see all columns.
| Field | Value |
|---|---|
| Job | Collect data for a verified access request and draft the response pack. |
| Trigger | A request whose requester a person has verified. |
| Data scope | The subject's records within the request scope and the system map. No queries on other subjects; mentions of others masked. |
| Tool scope | Read: system map, in-scope records, response templates. Propose: response pack and draft reply. Execute: none. |
| Output contract | Pack by system, gaps found, third-party data flagged, exemptions to consider, draft reply. |
| Gate | A privacy analyst signs off every pack and decides exemptions. |
| Limits | One subject per run, no outbound tools, working copies kept only for the request. |
| Ledger | Request ID, systems searched, gaps, reviewer, sign-off date. |
| Evaluation | Seeded requests with known records across systems. |
| Owner and kill switch | DPO. An Orchestrator pause returns requests to the manual process, with deadlines unchanged. |
The agent stays at L2. The rail levels reserve L4 for reversible actions, and a disclosure of personal data cannot be reversed.
What the ledger shows for one run
The ledger entry for one run shows what was searched and who signed off, without personal data. This example is illustrative. Reports roll up by rail and role.
{
"request_id": "dsar_20931",
"received": "<date>",
"identity_check": {"method": "account_login", "actor_ref": "usr_118"},
"systems_searched": ["cdp", "email_platform", "crm", "support_desk"],
"gaps": [{"system": "call_recordings", "reason": "owner has not answered"}],
"third_party_flags": 7,
"exemptions_to_consider": ["art_15_4"],
"pack_hash": "3ab1...",
"signed_off": {"actor_ref": "usr_118", "date": "<date>"},
"model": "model-id@version"
}
Three ways it fails, and the control for each
Each failure below is common in access work, and each control sits outside the model.
Scroll horizontally to see all columns.
| Failure | What it looks like | Control |
|---|---|---|
| A missed system | The pack looks complete, but a new tool or a processor was never searched. | A versioned system map. Each entry must return a result or a named gap. Seeded requests test the rate. |
| Another person's data | A shared name or a bad merge pulls in someone else's records. | Match only on verified identifiers. Flag low-confidence matches. Fix merges through identity resolution review. |
| A confident legal reading | The draft reasons persuasively towards withholding, and a tired analyst agrees. | The agent cites rule text only. The analyst must write the reason. Sign-offs are sampled by role. |
Metrics that are honest
Honest DSAR metrics measure completeness and timing, not hours saved.
- Days to complete against the legal deadline, by regime.
- Missed-system rate on seeded requests, which real requests cannot reveal.
- Extension rate. The EDPB says frequent extensions may point to weak procedures 1.
- Override rate. A rate near zero may mean nobody is reading, so sample decisions.
- Audit coverage. Any run without a complete record is a defect.
How vendor tools compare
Dedicated privacy tools cover the workflow around this job, and for many teams they are the better first purchase. We read these pages on 1 November 2026. A page's silence does not prove a feature is missing.
Scroll horizontally to see all columns.
| Tool | What the page we opened says | Human step described | Data location |
|---|---|---|---|
| OneTrust DSR Automation | Automates intake, verification, retrieval, legal hold checks, redaction and portal delivery 11. Its 2025 agents are for breach response and risk assessment 12. | Not stated on the page | Not stated |
| Transcend DSR Automation | Authentication and preflight checks, including legal holds; redaction on access reports 13. | An optional manual step; without one, requests can run in minutes 13 | Sombra gateway can be self-hosted, so Transcend holds no keys 14 |
| DataGrail Request Manager | Email verification by default; points-based Smart Verification 15. | A compliance lead can approve or reject regardless of points 15 | A software connector runs in your network 16 |
| Ketch | No-code workflows; verification strength by jurisdiction and request type; redaction 17. | QA checkpoints where sensitivity calls for review 17 | Not stated |
Choose by the gap you have. If you lack a request portal, deadlines and connectors, buy a privacy tool first. If you receive few requests from few systems, fixed queries and a self-service download may be enough, provided self-service does not narrow the scope 1. A rail adds most where data is unstructured, where systems sit outside a vendor's connectors, or where personal data cannot leave your environment. This agent runs on a private model with no external model. PrivyCDP's immutable audit ledger records each AI-assisted action with the actor that authorised it. The DSAR Assembler itself is a method you would build, not a shipped feature.
Checklist
- A person verifies identity under a written, proportionate policy.
- A deadline service computes dates per regime, outside the model.
- The system map is versioned and includes processors.
- Records are exported by connectors and queries, never paraphrased by a model.
- Each mapped system returns a result or a named gap.
- Sign-off binds to the pack hash, and the signer records reasons.
- The agent has no send, delete or close tool.
- Seeded requests run before any model, prompt or tool change.
The wider function is in the compliance, privacy and security playbook, and the method is on the AI agent rails hub. To write this rail for your team, download the rail card template.
Browse use casesFunction playbooksAgent roster
FAQ
How do you automate a DSAR response?
Automate the collection and the first draft, and keep the decisions with people. Connectors export records from mapped systems. An agent indexes them, flags gaps and third-party data, and drafts the reply. A privacy analyst verifies identity beforehand, decides exemptions, signs off and sends.
What is the deadline for a DSAR under GDPR and the CCPA?
GDPR Art. 12(3) sets one month from receipt, extendable by two months with reasons given in the first month. California's regulations require confirmation within 10 business days and an answer within 45 calendar days, extendable to 90 with notice. The California clock runs from receipt, regardless of verification time.
Can AI verify the identity of the person making a request?
Keep this with a person and written rules. Automated checks such as an email link or an existing login are rules, and they are often proportionate. A model should not judge a doubtful case, because it reads the requester's own text and can be persuaded by it. Impersonation is the risk that matters most here.
Can an AI agent decide a DSAR exemption?
No. The controller must be able to show why an exemption applies in the concrete case, and the EDPB describes a balancing of likelihood and severity. An agent can list exemptions to consider and attach the rule text. A privacy analyst decides and records the reason, with legal advice where the case needs it.
Do we need an AI agent if we already use a privacy tool?
Often not. OneTrust, Transcend, DataGrail and Ketch all describe workflow, verification and redaction. An agent helps with unstructured records, systems outside the vendor's connectors, and drafting. Run a seeded request through your current tool first and measure what it misses.
Sources
- EDPB, Guidelines 01/2022 on the right of access, version 2.1
- GDPR Article 12
- GDPR Article 15
- Data (Use and Access) Act 2025, section 76
- Same Act, section 78
- California Privacy Protection Agency, CCPA Regulations, effective 1 January 2026
- Code of Virginia § 59.1-577
- Meta, Agents Rule of Two (31 October 2025)
- CJEU, C-154/21 and C-579/21, judgments of 12 January 2023 and 22 June 2023: and (1) · CJEU, C-154/21 and C-579/21, judgments of 12 January 2023 and 22 June 2023: and (2)
- GDPR Article 4
- OneTrust, DSR Automation
- OneTrust, release of 23 April 2025
- Transcend, DSR Automation
- Transcend, Sombra
- DataGrail, verification
- DataGrail, Request Manager Agent
- Ketch, DSR automation
This article is general information, not legal advice.
Further reading
- AI DSAR Assistant: The DSAR Assembler
- AI Agents for Privacy Compliance
- AI Access Review Assistant
- Agent rails
- AI Agent Permissions Template Download
Published: · Updated:
Editorial dates describe content changes. Confirm current sources before making legal, security or purchasing decisions.