Módulo 5: GDPR for AI Systems

Consent granular para AI processing

Descripción

Consent es el área donde más sitios fallan en GDPR. La cookie banner "accept all" que la mayoría implementa no es consent válido bajo GDPR strict reading. Para AI processing, los requirements son aún más específicos: consent debe ser informed (sabe qué consenta), granular (separado del consent base), y revocable.

Esta cápsula te enseña a diseñar consent defensible legalmente y bueno para UX.

Al terminar vas a poder:

  • Identificar los 4 requirements de valid consent
  • Diseñar consent granular para AI processing (separado del consent base)
  • Implementar revocation mechanism funcional
  • Distinguir consent (Art. 6(1)(a)) vs legitimate interest (Art. 6(1)(f))

Los 4 requirements de valid consent (GDPR Art. 4(11))

  1. Freely given: el usuario tiene opción real. Si no aceptar = no servicio, no es freely given.
  2. Specific: para purposes específicos. Catch-all consent no vale.
  3. Informed: usuario entiende qué consenta.
  4. Unambiguous: acción clara afirmativa. Pre-checked boxes NO valen.

Para AI explícito además:

  • Granular: consent separado para AI vs other processing
  • Revocable: tan fácil retirar como dar

El problema con consent banners típicos

"Esta web usa cookies. [Aceptar todo]"
                       [Rechazar todo]
                       [Configurar]

Problemas:

  • Si "configurar" requiere 10 clicks vs "aceptar todo" 1 click → no freely given
  • "Aceptar todo" cubre marketing + analytics + ad personalization + AI → no specific
  • Usuarios cliquean accept sin leer → no informed

Para AI, esto es peor:

  • "Sus datos pueden usarse para mejorar nuestros servicios" → vago, no informa AI específicamente
  • No menciona que datos alimentan modelos ML
  • No menciona profile inference, predicciones, etc.

Diseño de consent para AI

Patrón A: Layered consent

Bottom layer (cookie banner):
"Usamos cookies y procesamos datos. Para configuración detallada, click aquí."

Click → Modal layer:
┌─────────────────────────────────────────────────────────────┐
│ ¿Cómo usamos tus datos?                                      │
│                                                              │
│ [✓] Funcional (required) — login, carrito, security         │
│ [ ] Analytics — entender uso del producto                    │
│ [ ] Marketing — personalizar ofertas                         │
│ [ ] AI processing — usar tus datos para mejorar nuestros    │
│     modelos AI y personalizar respuestas. [Más info]        │
│                                                              │
│      [Aceptar selección]    [Aceptar todo]                  │
└─────────────────────────────────────────────────────────────┘

Click "Más info" → 
"AI processing significa que tus datos (interacciones, queries,
feedback) pueden:
- Alimentar entrenamiento de nuestros modelos
- Generar perfiles de uso para personalización
- Influir en recomendaciones futuras

Esto no incluye [list de exclusions específicas]"

Por qué funciona:

  • Granular (cada propósito separado)
  • Informado (explicaciones explícitas)
  • Specific (cada checkbox = consent específico)
  • Freely given (todos los toggles funcionan independientemente)

Patrón B: Just-in-time consent

En lugar de banner upfront, pedís consent cuando el feature se activa:

User trying to use "AI suggestions" feature for first time:

┌─────────────────────────────────────────────────────────────┐
│ Activar AI Suggestions                                       │
│                                                              │
│ Para sugerirte productos relevantes, necesitamos:           │
│ - Analizar tu purchase history                              │
│ - Procesar tus preferencias con AI                          │
│                                                              │
│ Tus datos NO se comparten con terceros. Podés desactivar    │
│ esta feature en cualquier momento desde Settings.            │
│                                                              │
│      [Activar]    [No, gracias]                              │
└─────────────────────────────────────────────────────────────┘

Mejor UX: usuario entiende por qué das consent en el momento exacto.


Revocation: tan fácil como dar consent

Settings > Privacy:

AI personalization                          [ON ]    Desactivar →
Analytics tracking                          [ON ]    Desactivar →
Marketing communications                    [OFF]    Activar →

Detalles:
- AI personalization activada el 2024-01-15
- Última actualización del modelo con tus datos: 2024-03-10
- Si desactivás: futuros datos NO se procesarán. Tus datos pasados
  permanecen en datasets agregados (no individualizables).

[Solicitar deletion completa de mis datos]

Importante: revocation debe detener el processing futuro efectivamente. Si users desactivan AI pero sigue procesando, violación.


Consent vs Legitimate Interest

GDPR Art. 6 lista 6 bases legales para processing. Las dos más relevantes para AI:

Consent (Art. 6(1)(a))

Cuando usar:

  • Procesamiento opcional o discrecional
  • Marketing personalizado, AI features opcionales

Pros:

  • Defensible si bien implementado
  • Da control al usuario

Cons:

  • Revocable en cualquier momento
  • Tenés que parar el processing al revoke
  • Burden alto en compliance

Legitimate Interest (Art. 6(1)(f))

Cuando usar:

  • Processing que es necesario y proporcionado para tu negocio
  • Fraud detection, security, internal analytics

Requiere:

  • Balancing test documentado: tu interés legítimo vs rights del data subject
  • Right to object por parte del usuario
  • Notificación clara en privacy policy

Pros:

  • No revocable trivialmente
  • Más estable para operations

Cons:

  • Mayor scrutiny regulatorio si abusado
  • Bias hacia bigger company interests sospechado

Decision framework

Tu processing es...Probable base legal
Core service (login, payments)Contract necessity (Art. 6(1)(b))
Required by law (KYC)Legal obligation (Art. 6(1)(c))
Fraud detection, securityLegitimate interest
Internal analytics aggregatedLegitimate interest
Marketing personalizationConsent
AI-driven recommendations (optional)Consent
AI training on user dataConsent (preferible) o LI (defensible if balancing test pasa)
Profile inference for adsConsent

Consent revocation: el flujo técnico

# 1. User clicks "revoke AI consent"
def revoke_ai_consent(user_id):
    # Update consent record
    db.update_consent(user_id, "ai_processing", granted=False, revoked_at=now())
    
    # Stop future AI processing
    cache.invalidate(f"user_consent:{user_id}")
    
    # Optional: trigger downstream cleanup
    queue.publish("consent_revoked", {"user_id": user_id, "scope": "ai_processing"})


# 2. Each AI inference checks consent
async def ai_recommendation(user_id, context):
    consent = await get_consent(user_id, "ai_processing")
    if not consent.granted:
        # Use non-personalized fallback
        return generic_recommendations(context)
    
    # Personalized
    return personalized_recommendations(user_id, context)


# 3. Async cleanup
@subscribe("consent_revoked")
def cleanup_ai_data(event):
    user_id = event["user_id"]
    # Don't delete (might be needed for legal). Mark as "no further processing"
    db.execute(
        "UPDATE user_data SET ai_processing_allowed = false WHERE user_id = ?",
        (user_id,)
    )

Trade-off importante: revocation suele significar "stop future processing", no "delete past results". Past results en training data aún existen.


Trampas comunes

Trampa 1 — Consent enterrado en T&C. Usuario marca "Acepto los términos" → "implica consent a AI processing". NO VALE. Consent debe ser específico y separado.

Trampa 2 — Pre-checked boxes. Por default checked = no unambiguous action. Debe ser explicitly checked por user.

Trampa 3 — Revocation que no funciona. Usuario desactiva, sistema sigue procesando. Bug crítico legal. Test revocation flow routinely.

Trampa 4 — Cookie banner como excuse. "Aceptaste cookies, esto cubre AI." No. Cookies y AI processing son scopes distintos. Consent específico requerido.

Trampa 5 — Consent UX dark patterns. "Aceptar" big, prominent. "Configurar" tiny, hidden. NO freely given.

Trampa 6 — Sin record de consent. Usuario reclama no haber consentido. Tu DB no tiene record. Sin evidencia, no podés defender. Log consent grants/revokes con timestamp + IP + version of consent text.


Ejercicio

Tu producto: app de productividad con AI features (smart suggestions, auto-complete, sentiment analysis on emails). Diseñá el consent flow:

  1. ¿Cuáles features requieren consent specific? ¿Cuáles bajo legitimate interest?
  2. Diseñá el initial consent (cuándo, formato)
  3. Diseñá el revocation flow
  4. ¿Qué logueás como evidence?
Ver solución
  1. Por feature:

    • Login/payments: contract necessity (no consent)
    • Smart suggestions on user's own data: consent (AI processing personal data)
    • Auto-complete on user's own typing: consent (AI processing)
    • Sentiment analysis on emails: consent EXPLÍCITO (sensitive)
    • Fraud detection (internal): legitimate interest
    • Aggregated usage analytics: legitimate interest
  2. Initial consent — just-in-time:

    • On first use of each AI feature, modal explica:
      • Qué hace la feature
      • Qué datos procesa
      • Si datos quedan internos o salen
      • Opción "activate" o "no thanks"
    • Persistent indicator (icon en UI) showing "AI active" with toggle to disable
  3. Revocation:

    • Settings → Privacy → AI Features con toggles
    • Each toggle: feature name + status + last activated date
    • "Deactivate" → confirmation modal explaining what stops
    • "Delete all my AI data" → separate option with stronger confirmation
  4. Evidence logging:

    {
        "user_id": tokenized,
        "consent_record_id": uuid,
        "feature": "smart_suggestions",
        "action": "granted",
        "timestamp": "2026-05-11T15:30:00Z",
        "consent_text_version": "v3.2",
        "consent_text_hash": "abc123...",  # to prove the text shown
        "ip_address": hashed,  # for security; hashed for privacy
        "user_agent": "Mozilla/...",
    }

Resumen

Aprendiste:

  • ✅ 4 requirements de valid consent (freely given, specific, informed, unambiguous)
  • ✅ Layered y just-in-time consent patterns
  • ✅ Revocation tan fácil como granting
  • ✅ Consent vs Legitimate Interest (cuándo usar cada uno)
  • ✅ Implementación técnica de revocation
  • ✅ Trampas: dark patterns, pre-checked boxes, sin records

Checkpoint: si tu consent flow podría defenderse en audit, estás listo.


Siguiente cápsula

06 — Legitimate Interest vs Consent. Profundizamos la elección de base legal con balancing test y casos concretos.


Recursos

  1. GDPR Art. 6 — Lawfulness of processing.
  2. EDPB Guidelines on consent.
  3. ICO consent guidance.
  4. Dark patterns and GDPR — examples de violations.