pack_id: "extraction_dpa_gdpr"
kind: "extraction"
version: "1.0"
origin: "imported"
languages: ["en", "it", "es"]
name:
  en: "Extraction — Data Processing Agreement"
  it: "Estrazione — Accordo sul trattamento dei dati"
  es: "Extracción — Acuerdo de tratamiento de datos"
summary:
  en: "Key values of a GDPR Art. 28 data processing agreement, aligned to the DPA control matrix."
  it: "Valori chiave di un accordo di trattamento ex art. 28 GDPR, allineati alla matrice dei controlli DPA."
  es: "Valores clave de un acuerdo de tratamiento del art. 28 RGPD, alineados con la matriz de controles."
builtin:
  citations:
    enabled: true
    jurisdictions: ["eu", "it"]
  glossary:
    enabled: true
  timeline:
    enabled: true
  cross_refs:
    enabled: true
  anagrafica:
    party_roles:
      en: ["Data Controller", "Data Processor"]
      it: ["Titolare del trattamento", "Responsabile del trattamento"]
      es: ["Responsable del tratamiento", "Encargado del tratamiento"]
    fields: ["parties", "durations", "governing_law"]
extractors:
  - field_id: "data_breach_notification_hours"
    label:
      en: "Breach notification hours"
      it: "Ore di notifica del breach"
      es: "Horas de notificación de brecha"
    severity: "HIGH"
    method: "pattern"
    lang:
      en:
        patterns: ["hours", "72 hours", "48 hours", "without undue delay"]
        fuzzy: true
      it:
        patterns: ["ore", "72 ore", "48 ore", "senza ingiustificato ritardo"]
        fuzzy: true
      es:
        patterns: ["horas", "72 horas", "48 horas", "sin dilación indebida"]
        fuzzy: true
  - field_id: "subprocessor_objection_days"
    label:
      en: "Sub-processor objection days"
      it: "Giorni di obiezione sub-responsabile"
      es: "Días de oposición a subencargado"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["days to object", "object within", "prior notice of", "notice period"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the minimum notice (in days) granted to the controller to object to a new sub-processor. Reply as {\"value\":\"e.g. 30 days|null\"}."
      it:
        patterns: ["giorni per obiettare", "opporsi entro", "preavviso di", "termine di preavviso"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai il preavviso minimo (in giorni) concesso al titolare per opporsi a un nuovo sub-responsabile. Rispondi come {\"value\":\"es. 30 giorni|null\"}."
      es:
        patterns: ["días para oponerse", "oponerse en un plazo de", "preaviso de", "plazo de preaviso"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae el preaviso mínimo (en días) concedido al responsable para oponerse a un nuevo subencargado. Responde como {\"value\":\"p. ej. 30 días|null\"}."
  - field_id: "categories_of_data_subjects"
    label:
      en: "Categories of data subjects"
      it: "Categorie di interessati"
      es: "Categorías de interesados"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["categories of data subjects", "employees", "customers", "minors", "data subjects"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the categories of data subjects involved (e.g. employees, customers, minors). Reply as {\"value\":\"short list|null\"}."
      it:
        patterns: ["categorie di interessati", "dipendenti", "clienti", "minori", "interessati"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai le categorie di interessati coinvolti (es. dipendenti, clienti, minori). Rispondi come {\"value\":\"elenco breve|null\"}."
      es:
        patterns: ["categorías de interesados", "empleados", "clientes", "menores", "interesados"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae las categorías de interesados implicados (p. ej. empleados, clientes, menores). Responde como {\"value\":\"lista breve|null\"}."
  - field_id: "types_of_personal_data"
    label:
      en: "Types of personal data"
      it: "Tipologie di dati personali"
      es: "Tipos de datos personales"
    severity: "HIGH"
    method: "llm"
    lang:
      en:
        patterns: ["types of personal data", "financial data", "health data", "special categories", "IP addresses"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the categories of personal data processed (e.g. financial data, health data, IP addresses); note any special categories. Reply as {\"value\":\"short list|null\"}."
      it:
        patterns: ["tipologie di dati personali", "dati finanziari", "dati sanitari", "categorie particolari", "indirizzi IP"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai le categorie di dati personali trattati (es. dati finanziari, dati sanitari, indirizzi IP); segnala eventuali categorie particolari. Rispondi come {\"value\":\"elenco breve|null\"}."
      es:
        patterns: ["tipos de datos personales", "datos financieros", "datos de salud", "categorías especiales", "direcciones IP"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae las categorías de datos personales tratados (p. ej. datos financieros, datos de salud, direcciones IP); señala categorías especiales. Responde como {\"value\":\"lista breve|null\"}."
  - field_id: "data_exporter_identity"
    label:
      en: "Data controller identity"
      it: "Identità del titolare"
      es: "Identidad del responsable"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["the Controller", "data exporter", "acting as controller", "registered office"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the identity of the data controller (data exporter). Reply as {\"value\":\"short text|null\"}."
      it:
        patterns: ["il Titolare", "data exporter", "in qualità di titolare", "con sede legale"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai l'identità del titolare del trattamento (data exporter). Rispondi come {\"value\":\"testo breve|null\"}."
      es:
        patterns: ["el Responsable", "data exporter", "en calidad de responsable", "con domicilio social"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae la identidad del responsable del tratamiento (data exporter). Responde como {\"value\":\"texto breve|null\"}."
  - field_id: "data_importer_identity"
    label:
      en: "Data processor identity"
      it: "Identità del responsabile"
      es: "Identidad del encargado"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["the Processor", "data importer", "acting as processor", "registered office"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the identity of the data processor (data importer). Reply as {\"value\":\"short text|null\"}."
      it:
        patterns: ["il Responsabile", "data importer", "in qualità di responsabile", "con sede legale"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai l'identità del responsabile del trattamento (data importer). Rispondi come {\"value\":\"testo breve|null\"}."
      es:
        patterns: ["el Encargado", "data importer", "en calidad de encargado", "con domicilio social"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae la identidad del encargado del tratamiento (data importer). Responde como {\"value\":\"texto breve|null\"}."
  - field_id: "cross_border_transfer_mechanism"
    label:
      en: "Cross-border transfer mechanism"
      it: "Meccanismo di trasferimento extra-UE"
      es: "Mecanismo de transferencia extra-UE"
    severity: "HIGH"
    method: "llm"
    lang:
      en:
        patterns: ["Standard Contractual Clauses", "EU SCCs 2021", "adequacy decision", "Binding Corporate Rules", "derogation"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the legal mechanism relied on for transfers outside the EEA (e.g. EU SCCs 2021, adequacy decision, BCRs). Reply as {\"value\":\"short text|null\"}."
      it:
        patterns: ["Clausole Contrattuali Standard", "SCC UE 2021", "decisione di adeguatezza", "norme vincolanti d'impresa", "deroga"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai il meccanismo giuridico utilizzato per i trasferimenti fuori dallo SEE (es. SCC UE 2021, decisione di adeguatezza, BCR). Rispondi come {\"value\":\"testo breve|null\"}."
      es:
        patterns: ["Cláusulas Contractuales Tipo", "CCT UE 2021", "decisión de adecuación", "normas corporativas vinculantes", "excepción"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae el mecanismo jurídico empleado para las transferencias fuera del EEE (p. ej. CCT UE 2021, decisión de adecuación, BCR). Responde como {\"value\":\"texto breve|null\"}."
  - field_id: "audit_notice_period"
    label:
      en: "Audit notice period"
      it: "Preavviso per audit"
      es: "Preaviso de auditoría"
    severity: "LOW"
    method: "llm"
    lang:
      en:
        patterns: ["prior notice", "days' notice before audit", "upon reasonable notice", "audit notice"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the notice period (in days) required before an inspection audit may start. Reply as {\"value\":\"e.g. 30 days|null\"}."
      it:
        patterns: ["preavviso", "giorni di preavviso per l'audit", "con ragionevole preavviso", "preavviso di audit"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai il preavviso (in giorni) richiesto prima dell'avvio di un audit ispettivo. Rispondi come {\"value\":\"es. 30 giorni|null\"}."
      es:
        patterns: ["preaviso", "días de preaviso para la auditoría", "con preaviso razonable", "preaviso de auditoría"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae el preaviso (en días) exigido antes de iniciar una auditoría de inspección. Responde como {\"value\":\"p. ej. 30 días|null\"}."
  - field_id: "governing_law_dpa"
    label:
      en: "Governing law & supervisory authority"
      it: "Legge applicabile e autorità di controllo"
      es: "Ley aplicable y autoridad de control"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["governed by the laws of", "supervisory authority", "Data Protection Commission", "competent authority"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the national governing law and the competent supervisory authority (e.g. Irish Data Protection Commission). Reply as {\"value\":\"law — authority|null\"}."
      it:
        patterns: ["regolato dalla legge di", "autorità di controllo", "Garante per la protezione dei dati", "autorità competente"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai la legge nazionale applicabile e l'autorità di controllo competente (es. Garante italiano). Rispondi come {\"value\":\"legge — autorità|null\"}."
      es:
        patterns: ["regido por la ley de", "autoridad de control", "Agencia de Protección de Datos", "autoridad competente"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae la ley nacional aplicable y la autoridad de control competente (p. ej. AEPD). Responde como {\"value\":\"ley — autoridad|null\"}."
  - field_id: "data_retention_post_termination"
    label:
      en: "Data retention post-termination"
      it: "Conservazione dei dati post-cessazione"
      es: "Conservación de datos tras la terminación"
    severity: "MEDIUM"
    method: "llm"
    lang:
      en:
        patterns: ["within days of termination", "retention period", "delete within", "destruction of data"]
        fuzzy: true
        prompt: "From the paragraph: {isolated}. Extract the time allowed for the material deletion/destruction of data after the end of the contract. Reply as {\"value\":\"short text|null\"}."
      it:
        patterns: ["entro giorni dalla cessazione", "periodo di conservazione", "cancellare entro", "distruzione dei dati"]
        fuzzy: true
        prompt: "Dal paragrafo: {isolated}. Estrai il tempo concesso per la cancellazione/distruzione materiale dei dati dopo la fine del contratto. Rispondi come {\"value\":\"testo breve|null\"}."
      es:
        patterns: ["en días desde la terminación", "periodo de conservación", "suprimir en un plazo de", "destrucción de los datos"]
        fuzzy: true
        prompt: "Del párrafo: {isolated}. Extrae el tiempo concedido para la supresión/destrucción material de los datos tras el fin del contrato. Responde como {\"value\":\"texto breve|null\"}."
