AIAgent icon
MistralAI icon
TavilyWebSearch icon
Script icon
CreateSpreadsheet icon
Load icon
SlackIncomingWebhook icon

Review Data Processing Agreements Against GDPR Article 28 Requirements

Review Data Processing Agreements against GDPR Article 28 with a Kestra AI agent. Generate compliance scorecards and remediation guidance using a European AI model.

Categories
AI

Automate the first-pass legal review of any Data Processing Agreement (DPA) with a GDPR-focused AI agent. This blueprint checks a pasted DPA clause by clause against the mandatory requirements of Article 28(3) GDPR, flags missing or vague provisions, assesses international transfer risk under Chapter V, and produces a structured compliance scorecard with specific remediation language. It uses Mistral Large, a European AI model from Mistral AI (Paris, France), so prompts that may reference processing activities and data subjects stay within EU jurisdiction. The review is exported to Google Sheets and posted to a privacy and legal Slack channel for sign-off.

How it works

  1. Two inputs collect the work: dpa_text (the agreement to review) and controller_jurisdiction (a SELECT covering EU, EEA, UK, Switzerland, and international cases).
  2. The dpa_review task (io.kestra.plugin.ai.agent.AIAgent) runs the analysis with a senior-privacy-lawyer systemMessage, temperature set to 0.1 for deterministic output, and maxToken of 6144. A io.kestra.plugin.ai.retriever.TavilyWebSearch content retriever pulls recent EDPB guidelines and Standard Contractual Clause references for grounding.
  3. The format_review task (io.kestra.plugin.scripts.python.Script) parses the agent's Markdown into a section-by-section dpa_review.csv.
  4. The create_sheet task (io.kestra.plugin.googleworkspace.sheets.CreateSpreadsheet) creates a titled spreadsheet, and load_review (io.kestra.plugin.googleworkspace.sheets.Load) loads the CSV into it.
  5. The notify_slack task (io.kestra.plugin.slack.notifications.SlackIncomingWebhook) posts the jurisdiction and a direct link to the scorecard.

What you get

  • A clause-by-clause checklist against all eight mandatory elements of Article 28(3)(a) through (h).
  • A compliance scorecard rating each element Compliant, Partially Compliant, or Missing.
  • An international transfer assessment that flags Chapter V gaps such as unrestricted global data center storage.
  • Concrete remediation language for every deficiency, grounded in current EDPB guidance via web search.
  • A shareable Google Sheet and a Slack alert that closes the loop with the legal team.

Who it's for

  • Legal teams reviewing vendor DPAs before signing.
  • Data Protection Officers auditing existing processor agreements.
  • Procurement teams pre-screening DPA templates.
  • Privacy consultants performing DPA gap analyses at scale.

Why orchestrate this with Kestra

A standalone LLM call cannot manage the surrounding workflow. Kestra chains the AI review, CSV transformation, spreadsheet creation, and Slack notification as one declarative YAML flow with full execution lineage, so every reviewed DPA leaves an auditable trail. Add retries on the API tasks to ride out provider rate limits, swap the European Mistral provider for a local Ollama model (see the YAML comments) without touching the rest of the pipeline, and wire event triggers so reviews fire automatically when a new DPA lands in storage or a vendor record changes. Neither the AI provider nor Google Sheets ships a scheduler that can coordinate these steps, govern secrets, and replay a failed run.

Prerequisites

A Kestra instance with the AI, Google Workspace, Slack, and Python script plugins available, plus a Mistral AI account and a Tavily account.

Secrets

  • MISTRAL_API_KEY: API key from Mistral AI for the Mistral Large provider.
  • TAVILY_API_KEY: API key from Tavily for the web search content retriever.
  • GCP_SERVICE_ACCOUNT_JSON: Google Cloud service account JSON with Sheets API access.
  • SLACK_WEBHOOK: Slack incoming webhook URL for the privacy and legal channel.

Quick start

  1. Add the four secrets above to your Kestra instance.
  2. Import this blueprint into the company.legal namespace.
  3. Run the flow, accepting the sample DPA in dpa_text or pasting your own.
  4. Pick the matching controller_jurisdiction and execute.
  5. Open the linked Google Sheet from the Slack message to read the scorecard.

How to extend

  • Replace the manual dpa_text input with an event trigger that reads new agreements from object storage or a contract management system.
  • Tighten the systemMessage for sector-specific rules (health, finance) or extend it to other frameworks such as the UK GDPR or CCPA.
  • Persist results to a database task instead of, or alongside, Google Sheets for trend reporting.
  • Add an approval or conditional branch that escalates only DPAs scoring below a compliance threshold.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.