Saltar al contenido
Studeia Docs
AI-assisted translation — last updated 2026-06-03. For original (pt-BR or en-US), use the language switcher.

LGPD en EAD en 2026: qué cambió y cómo adecuar tu plataforma

Guía LGPD 2026 para EAD: Art. 18 (exportación y eliminación), Art. 14 (menores), retención de datos académicos vs PII, DPA con Anthropic/OpenAI/Stripe y notificación de incidentes a la ANPD

2026-06-03 14 min
Resposta curta

Una plataforma EAD brasileña en 2026 debe cumplir la LGPD en 8 frentes: (1) DPO obligatorio Art. 41, (2) consentimiento parental para menores Art. 14 con verificación real, (3) exportación de datos Art. 18 IV (límite 1 solicitud/24h), (4) eliminación de cuenta Art. 18 VI (anonimiza PII en 30d, retiene datos de aprendizaje 5 años), (5) DPA con Anthropic/OpenAI/Stripe con divulgación, (6) RLS + filtro tenantId, (7) audit log inmutable para datos sensibles, (8) respuesta a incidentes con reporte a la ANPD en 24h

Contexto: por qué la LGPD pesa más en EAD

Las plataformas EAD recopilan más datos sensibles que el e-commerce o las redes sociales:

  • Datos educativos (LGPD Art. 11 — dato personal sensible cuando revela condición de salud/bienestar)
  • Datos conductuales ricos — tiempo en cada lección, patrones de estudio, dificultades, ansiedad previa al examen
  • Datos de menores — primaria + secundaria + bachillerato = ~80% del mercado K-12 brasileño
  • Datos de padres/responsables (vinculación GuardianLink)
  • Datos biométricos cuando hay proctoring con webcam (Studeia no lo tiene nativo, pero LTI a Examity/ProctorU sí)

La ANPD ya realizó fiscalizaciones en edtechs brasileñas en 2024-2025. Multas de R$50 millones (2% de la facturación bruta, hasta R$50M de tope) son una realidad.

8 frentes obligatorias

1. DPO (Data Protection Officer) — Art. 41

La empresa debe designar a una persona física como encargada del tratamiento de datos. Responsabilidades:

  • Aceptar reclamaciones y comunicaciones de los titulares
  • Recibir comunicaciones de la ANPD
  • Orientar a los empleados sobre la LGPD
  • Ejecutar planes de adecuación

Opciones:

ModeloCostoAdecuado para
DPO interno (empleado)R$8-20k/mes salarioEmpresas >100 empleados
DPO externo (consultoría especializada)R$2-8k/mesEmpresas 10-100 empleados
DPO virtual (estudio de abogados)R$1-3k/mesMicroempresas

Indicar públicamente: nombre + email del DPO en la política de privacidad.

2. Consentimiento parental real para menores — Art. 14

LGPD Art. 14 §1: "El tratamiento de datos personales de niños deberá realizarse con el consentimiento específico y destacado otorgado por al menos uno de los padres o por el responsable legal."

Las plataformas que lo ignoran pagan caro:

  • ❌ Anti-patrón: checkbox "Tengo más de 13 años" sin verificación
  • ❌ Anti-patrón: campo "Email del padre" sin verificar si es real
  • ✅ Patrón Studeia: el estudiante se registra → estado pending_parental_consent → email/SMS al padre → el padre hace clic en el enlace + responde verificación SMS (anti-fraude) → estado active

Además: el padre elige el nivel de acceso por hijo mediante ProgressSharingConfig. Estudiante menor de 13: el padre tiene acceso TOTAL por defecto. 13-17: el padre configura.

Implementación concreta:

// El estudiante se registra
if (user.age < 18) {
  user.isMinor = true;
  user.status = "pending_parental_consent";

  // GuardianLink creado pero inactivo
  await prisma.guardianLink.create({
    data: {
      childId: user.id,
      parentEmail: parentEmail,
      parentPhone: parentPhone,
      verified: false,
      verificationToken: generateSecureToken(),
    }
  });

  // Email + SMS al padre con enlace de verificación
  await sendVerification({ ... });
}

El estudiante NO puede acceder al contenido mientras el estado sea != "active". Sin brechas.

3. Exportación de datos — Art. 18 IV

El titular puede solicitar una copia de TODOS los datos personales que procesas sobre él. En formato estructurado y legible.

Studeia: GET /api/user/data-export devuelve JSON con:

{
  "user": { id, email, name, role, ... },
  "enrollments": [ ... ],
  "lessonCompletions": [ ... ],
  "quizAttempts": [ ... ],
  "chatSessions": [ ... ],  // historial de chat con tutor IA
  "messages": [ ... ],       // mensajes directos + foro
  "badges": [ ... ],
  "gamificationProfile": { ... },
  "aiSupervisorIncidents": [ ... ],  // si los hubiera
  "consentRecords": [ ... ]
}

Rate limit: 1 exportación por 24h por usuario (anti-abuso). Redis key data-export-cooldown:{userId} TTL 86400.

Disponible en hasta 15 días desde la solicitud (la LGPD no define un plazo exacto, pero 15 días es el estándar de la ANPD).

4. Eliminación de cuenta — Art. 18 VI

El titular puede solicitar la eliminación de sus datos personales. Pero hay matices:

  • PII (datos personales identificables) — DEBE ser eliminado/anonimizado
  • Datos académicos históricos — puede RETENERSE por finalidad legítima (retención fiscal, prueba de formación del estudiante, defensa en eventual litigio)

Studeia hace:

// DELETE /api/user/account
await prisma.$transaction(async (tx) => {
  // 1. Anonimiza PII
  await tx.user.update({
    where: { id: userId },
    data: {
      email: `deleted-${userId}@anonymous.studeia.com`,
      name: "Usuario eliminado",
      phone: null,
      address: null,
      avatarUrl: null,
      cpf: null,  // CPF también
      status: "deleted",
      deletedAt: new Date(),
    }
  });

  // 2. Elimina datos conversacionales
  await tx.chatSession.deleteMany({ where: { userId } });
  await tx.directMessage.deleteMany({ where: { senderId: userId } });
  await tx.directMessage.updateMany({ where: { recipientId: userId }, data: { recipientId: ANONYMIZED } });

  // 3. Anonimiza datos académicos (mantiene historial pero sin PII)
  // LessonCompletion, QuizAttempt, Grade ya referencian por User.id (mantenido)
  // Como User.email y User.name fueron anonimizados, los datos académicos quedan "anónimos"

  // 4. Anonimiza incidentes de safety (mantiene severity + categoría para compliance)
  await tx.aiSupervisorIncident.updateMany({
    where: { userId },
    data: {
      messagesSnapshot: [],
      supervisorReasoning: null,
      appealText: null,
    }
  });

  // 5. Cron purga datos académicos > 5 años automáticamente
});

5 años = retención fiscal compatible con LGPD (Lei 10.406/2002 + Constitución Federal Art. 7º XXIX).

5. DPA con terceros — divulgación obligatoria

El tenant DEBE listar en su política de privacidad TODOS los procesadores de datos terceros.

Studeia proporciona a cada tenant una lista:

  • Anthropic (Claude) — procesa prompts + respuestas. DPA GDPR/LGPD. Sede USA. Retención de datos: 30 días.
  • OpenAI (GPT fallback) — ídem. Sede USA. Retención de datos: 30 días.
  • Voyage AI (embeddings primary) — procesa texto para embedding. Sede USA. Retención de datos: 30 días.
  • Stripe (pagos USD) — PCI-DSS Level 1. Sede USA. Retención: 7 años (fiscal).
  • Asaas (pagos BR PIX/boleto) — sede BR. Retención: 7 años.
  • Supabase (base de datos + auth + storage) — sede USA. Región: us-east-1 (por defecto) u sa-east-1 opcional.
  • Sentry (observabilidad) — Session replay con maskAllText:true + blockAllMedia:true (compatible con LGPD).
  • PostHog (analytics) — anonimización de IP activada. Sin seguimiento de PII.
  • Resend / SendGrid (email) — sede USA. Retención: 30 días.

El tenant copia esta lista en su política de privacidad. Cubre la divulgación.

6. Aislamiento real de tenant — RLS + filtro obligatorio

LGPD Art. 6 V: los datos personales deben tratarse con seguridad apropiada.

LMS multi-tenant = los datos de la Escuela A NUNCA pueden aparecer en una consulta de la Escuela B. Studeia lo implementa en 3 capas:

  1. Filtro obligatorio en queries de Prisma: toda llamada prisma.X.findMany() en el código de la aplicación DEBE incluir where: { tenantId }. Regla crítica #6 del proyecto.
  2. RLS de Supabase: política automática en todas las tablas relevantes:
    CREATE POLICY tenant_isolation_courses ON courses
    FOR SELECT USING (tenant_id = current_setting('app.current_tenant_id')::uuid);
    
  3. RAG tenantOnlyMode: el retrieve nunca cita material de otra institución.

7. Audit log inmutable

LGPD Art. 37 + Resolución ANPD CD/ANPD nº 4/2023: registro de operaciones de tratamiento.

Studeia: modelo AdminAuditLog con:

model AdminAuditLog {
  id          String   @id @default(uuid())
  actorId     String   // quién realizó la acción
  action      AdminAuditAction
  targetType  String   // "user", "tenant", "course", etc
  targetId    String?
  metadata    Json?
  ip          String?
  userAgent   String?
  createdAt   DateTime @default(now())
}

Acciones auditadas (15+ tipos):

  • impersonate.start / stop
  • tenant.create / plan.change / config.update / delete
  • user.role.change / tenant.link
  • ai_supervisor.* (transiciones de incidentes, actualizaciones de prompts, etc.)
  • subscription.admin_update
  • payment.manual.record

Inmutable: solo append. No existe endpoint para eliminar (intencional).

8. Plan de respuesta a incidentes

LGPD Art. 48: incidente de seguridad que pueda generar riesgo/daño relevante = comunicación a la ANPD en plazo razonable (interpretación: 24h).

Studeia: runbook en docs/runbooks/incident-response.md con tabla SEV:

SEVTriggerAcción primariaSLA notif
SEV1Filtración PII > 100 usuariosReporte a ANPD + clientes + status page<2h
SEV2Outage > 30min O PII < 100 usuariosClientes + status page<4h
SEV3Degradación de rendimientoStatus page<12h
SEV4Bug funcional sin PIIBacklog priorizadoNA

Además: postmortem público (sanitizado) en docs/incidents/ para SEV1/SEV2.

Adiciones específicas para Studeia

Logging de prompts LLM

Antes de enviar el prompt a Anthropic/OpenAI:

// Redactar PII conocida
function redactPIIBeforeLLM(prompt: string, user: User): string {
  return prompt
    .replace(new RegExp(user.email, 'gi'), '[EMAIL_REDACTED]')
    .replace(new RegExp(user.cpf ?? '', 'g'), '[CPF_REDACTED]')
    .replace(new RegExp(user.phone ?? '', 'g'), '[PHONE_REDACTED]');
}

Antes de registrar el prompt en AiUsageLog:

function redactPIIBeforeLog(prompt: string): string {
  // Patrones genéricos
  return prompt
    .replace(/\b\d{3}\.\d{3}\.\d{3}-\d{2}\b/g, '[CPF]')
    .replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, '[EMAIL]')
    .replace(/\b\d{4,5}-?\d{4}\b/g, '[PHONE]');
}

AiUsageLog.prompt almacena la versión redactada. Los costos + analytics funcionan sin exponer PII.

Tutor IA + historial de chat

El estudiante accede a "Mis conversaciones" y ve el historial. Los padres con permiso también (dependiendo de ProgressSharingConfig.viewChatHistory).

Pero: la ANPD puede requerirlo por vía judicial. Respuesta:

  1. Studeia mantiene el historial de chat por 1 año (retención por defecto, configurable por tenant)
  2. Después de 1 año: cron /api/cron/chat-cleanup anonimiza (mantiene el conteo de turnos para analytics, elimina el texto)
  3. En requerimiento judicial: exporta JSON con el contenido solicitado
  4. Registro del acceso en AdminAuditLog (action: data.judicial_request)

Lo que NUNCA se debe hacer

❌ Recopilar más datos de los necesarios (principio de minimización Art. 6 III) ❌ Compartir datos de estudiantes con fines de marketing (incluso "internamente") ❌ Entrenar modelo de IA con datos de estudiantes sin consentimiento explícito ❌ Vender datos de comportamiento de estudio a terceros ❌ Usar datos de menores para publicidad dirigida (prohibido por ley) ❌ Retener datos sin una finalidad clara (Art. 16) ❌ Usar tutor IA sin informar que es IA (transparencia, Art. 6 VI)

Avatar IA en tiempo real (disponible — opt-in)

Studeia ya ofrece avatar parlante en tiempo real con video/voz (HeyGen LiveAvatar / D-ID, BYO key del proveedor) como función opt-in por curso. Consideraciones LGPD al habilitarlo:

  • Se recomienda consentimiento adicional explícito (uso de "imagen virtual de tutor")
  • Divulgación de que es IA (pie de página "Tutor virtual generado por IA")
  • No usar voz real de persona pública sin licenciamiento (riesgo de deepfake)
  • La API key maestra del proveedor permanece en el servidor y nunca llega al cliente; solo tokens efímeros de sesión llegan al navegador. Ver Avatar & TTS.

Ver también

FAQ

¿Una plataforma EAD necesita un DPO (Data Protection Officer)?

Sí, según la LGPD Art. 41. Las empresas de EAD recopilan datos sensibles (educativos, biométricos cuando hay proctoring, conductuales mediante analytics). El DPO puede ser interno (empleado) o externo (consultoría). Las pequeñas empresas pueden tercerizar. Estudios jurídicos especializados cobran R$2-8k/mes por DPO virtual.

¿Puedo usar Anthropic/OpenAI para procesar datos de estudiantes brasileños?

Sí, pero con DPA (Data Processing Agreement) y divulgación. Anthropic + OpenAI tienen DPA estándar compatible con GDPR que cubre la LGPD a través del Art. 3 (extraterritorialidad). Studeia mantiene DPAs activos con ambos. El tenant DEBE divulgar en su política de privacidad que los datos son procesados por terceros + listar cuáles + los países. Importante: NUNCA enviar PII innecesario en los prompts (anonimiza email/cpf antes).

¿Por cuánto tiempo debo retener los datos de un estudiante después de que se va?

La LGPD no define un plazo único — depende de la finalidad. Studeia adopta: datos académicos (notas, certificados, finalizaciones) RETENIDOS por 5 años mínimo (retención fiscal + protección del estudiante que puede necesitar comprobar su formación después). Datos personales PII (email, nombre, teléfono) ANONIMIZADOS en 30 días tras solicitud de eliminación (Art. 18 VI). Historial de chat y datos contextuales ANONIMIZADOS de inmediato.

¿Un menor de 13 años puede usar una plataforma EAD sin consentimiento parental?

NO. La LGPD Art. 14 exige el consentimiento específico de al menos UNO de los padres o del responsable legal. Studeia lo implementa mediante GuardianLink verificado por SMS (anti-fraude). El estudiante menor (User.isMinor=true) solo puede completar el registro DESPUÉS de la verificación parental. Además: política de retención restringida, datos nunca comercializados, opciones proactivas de minimización.

Veja tambem

LGPD en EAD en 2026: qué cambió y cómo adecuar tu plataforma