lgpd

LGPD e IA: como manter conformidade usando OpenAI/Anthropic em SaaS brasileiro

Checklist prático pra DPO + dev: bases legais, contratos, anonimização, data residency, direito ao esquecimento. Com exemplos de cláusulas reais.

Você é dev/CTO de SaaS BR e usa IA via OpenAI/Anthropic/Tokia. Cliente empresarial pergunta no contrato: "como você garante LGPD se os dados saem do Brasil?". Esse post é o checklist técnico-jurídico que você precisa pra responder com segurança.

⚠️ Esse post é educativo, não substitui consultoria jurídica. Pra cláusulas contratuais finais consulte advogado especializado em proteção de dados.

Os 4 cenários comuns

| Cenário | Risco LGPD | Mitigação técnica | |---|---|---| | A. Você manda CPF/email/telefone pra OpenAI no prompt | Alto — vazamento real | Anonimiza antes (regex), nunca persiste prompts | | B. Cliente faz chatbot, user digita dados pessoais | Médio — transferência internacional | Disclosure no termo + base legal | | C. RAG indexa documentos contendo dados clientes | Alto — dataset persiste em vector DB gringa | Vector DB local (Postgres pgvector, Supabase) | | D. Logs/observability incluem trechos de prompt | Baixo — dado é pseudonimizado | Truncar prompts em logs, mascarar |

Base legal — qual escolher

LGPD tem 10 bases legais (art. 7º). Pra IA, as 3 mais usadas:

1. Execução de contrato (art. 7º, V)

Quando usar: o cliente CONTRATOU funcionalidade que depende de IA (ex: "meu chatbot atende em 24/7"). Aí processar dados pra entregar o serviço é parte do contrato.

Cláusula exemplo:

"Para entrega das funcionalidades de [nome do serviço], que envolvem processamento por modelos de IA, o CONTRATANTE autoriza o tratamento de dados pessoais inseridos voluntariamente em conversas pelo usuário final, com transferência internacional para os provedores listados em [Anexo X]."

2. Legítimo interesse (art. 7º, IX)

Quando usar: analytics agregados, telemetria, melhoria de produto. Precisa fazer LIA (Legítimo Interesse Assessment) escrito.

3. Consentimento (art. 7º, I)

Quando usar: features opt-in onde user pode recusar (ex: "treinar o bot com suas conversas"). Granular, revogável.

Erro comum: usar consentimento como "guarda-chuva" pra tudo. Errado — LGPD prefere bases mais robustas (contrato/legítimo).

Transferência internacional (ANPD)

Art. 33-36 LGPD: dado pessoal só pode sair do Brasil se:

  1. País tem nível adequado (ANPD ainda não publicou lista — EUA NÃO está adequado por default)
  2. Cláusulas contratuais padrão (ANPD publicou resolução 19/2024)
  3. Selos/certificações (futuro)
  4. Consentimento específico
  5. Execução de contrato com titular (situação mais comum)

Prático: seu contrato com OpenAI/Anthropic + seu contrato com cliente final devem mencionar isso. Modelo de cláusula:

"O CONTRATANTE reconhece que o tratamento envolvendo modelos de IA realiza transferência internacional de dados para [OpenAI Inc., EUA / Anthropic PBC, EUA / OpenRouter Ltd, Singapore]. A base legal é execução de contrato (art. 7º, V LGPD + art. 33, V). Os provedores listados possuem cláusulas contratuais padrão (DPA) assinadas com o CONTRATADO."

Data residency — quem fica onde

| Provider | Onde processa | Onde armazena (logs) | |---|---|---| | OpenAI direta | EUA (Azure) | EUA, 30 dias | | Anthropic direta | EUA (AWS us-east) | EUA, 30 dias | | OpenRouter | Rotear: EUA, Singapore, EU | Singapore default, 7 dias | | Google Gemini | EUA + multi-region | varia | | Fal.ai | EUA (AWS) | EUA, 24h | | Modelos open-source via OpenRouter (Llama, DeepSeek, Mistral) | Singapore ou EU | conforme provider | | Tokia (gateway) | BR (passagem) + EUA/SG (upstream) | BR apenas metadata |

Truque pra cliente sensível: use modelos open-source via OpenRouter configurado pra Singapore/EU (não EUA). Llama 3.3 70B + Mistral Large + Qwen 3 atendem 80% dos casos com qualidade comparável a Claude/GPT-4o.

Anonimização antes do prompt

O jeito mais seguro: nunca mandar CPF/RG/email puro pra IA. Anonimiza antes:

function anonimizar(prompt: string): string {
  return prompt
    .replace(/\b\d{3}\.?\d{3}\.?\d{3}-?\d{2}\b/g, "[CPF]")
    .replace(/\b\d{2}\.?\d{3}\.?\d{3}\/?\d{4}-?\d{2}\b/g, "[CNPJ]")
    .replace(/\b[\w.+-]+@[\w-]+\.[\w.-]+\b/g, "[EMAIL]")
    .replace(/\b\(?\d{2}\)?\s?9?\d{4}-?\d{4}\b/g, "[TELEFONE]");
}

const safePrompt = anonimizar(userInput);
const response = await ai.chat.completions.create({
  model: "claude-sonnet-46",
  messages: [{ role: "user", content: safePrompt }],
});

Trade-off: IA não vê o CPF, então não pode validar/buscar nele. Pra usar em validação real, faça num backend só com regex/lookup, sem mandar pra LLM.

Direito ao esquecimento (art. 18, VI)

User pede "apague todos os meus dados". Você precisa:

  1. Deletar registro user no seu DB: trivial
  2. Anonimizar conversas anteriores (se persistiu): troca user_id por "DELETED-2026-05-13"
  3. Apagar embeddings RAG (se indexou): query vector DB + delete
  4. Pedir provedor IA pra apagar logs (raramente factível em SLA menor que 30d)
// Endpoint /me/delete
app.delete("/me", { onRequest: [authenticate] }, async (req, reply) => {
  const userId = req.user.id;

  // 1. Anonimiza conversas (mantém pro audit, mas sem PII)
  await db.chatMessages.updateMany({
    where: { userId },
    data: { content: "[DELETED]", userId: "anonymized" },
  });

  // 2. Apaga embeddings
  await vectorDB.delete({ filter: { userId } });

  // 3. Apaga API keys
  await tokia.apiKeys.revokeAll(userId);

  // 4. Hard delete user (cascade pra outras tabelas)
  await db.users.delete({ where: { id: userId } });

  // 5. Tenta apagar nos providers (best effort)
  await openai.deleteUser(userId).catch(() => {});

  return { ok: true };
});

Logs sem PII

Em production logs (Sentry/GlitchTip/CloudWatch) nunca logue prompt cru. Patterns seguros:

// ERRADO
logger.info({ prompt: userInput }, "ai call");

// CERTO — só metadata
logger.info({
  userId: hash(userId),
  model: "claude-sonnet-46",
  promptHash: crypto.createHash("sha256").update(userInput).digest("hex"),
  tokens: response.usage.total_tokens,
}, "ai call");

// Se quiser debug em dev local:
if (process.env.NODE_ENV === "development") {
  logger.debug({ prompt: userInput.slice(0, 200) }, "prompt sample");
}

Política de privacidade — seções mínimas

Sua /privacy (ou /politica-privacidade) deve ter:

  1. Quais dados são tratados (lista explícita: nome, email, CPF se for o caso, conversas IA)
  2. Bases legais (cita o art. 7º correspondente)
  3. Finalidades específicas (não pode ser "melhorar serviço" genérico)
  4. Compartilhamento com terceiros (OpenAI, Anthropic, Tokia, hospedagem, etc — listar TUDO)
  5. Transferência internacional (explica EUA/Singapore + base legal)
  6. Tempo de retenção (ex: "conversas 90 dias, depois anonimizadas")
  7. Direitos do titular (art. 18: acesso, correção, deleção, portabilidade)
  8. Canal pra exercer direitos (email do DPO ou form)
  9. DPO contato (nome + email)

Encarregado de Dados (DPO)

Pra empresa B2B com mais de 5k users ou tratamento sensível: nomeia DPO formal, publica nome+email na privacy. Pra micro-SaaS solo founder, você é o DPO default. Aceita.

Checklist final pra dev

  • [ ] Política privacidade atualizada com IA
  • [ ] Termos de uso disclosure OpenAI/Anthropic
  • [ ] Anonimização CPF/email/telefone em prompts
  • [ ] Endpoint /me/delete funcional
  • [ ] Logs sem prompt cru
  • [ ] Cláusula contratual com clientes empresariais
  • [ ] DPA com providers (OpenAI tem oferta enterprise)
  • [ ] Anexo "Provedores e dados transferidos" no contrato
  • [ ] Cron auto-anonymize conversas após 90d
  • [ ] DPO email funcional + tempo resposta até 30d (LGPD exige 15d, ANPD permite +15)

Conclusão

LGPD + IA estrangeira é resolvível — basta documentar bases legais, anonimizar no prompt, ter /me/delete funcional, e citar transferência internacional no contrato. Tokia não armazena prompts (gateway transparente), o que reduz 1 ponto do checklist.

Pra dúvida específica de cláusula contratual ou disputa real, contrate advogado especializado. Esse post cobre o 80% dev, não substitui consultoria.

Testa Tokia com R$ 10 PIX →


Posts relacionados:

#lgpd#compliance#ia#dpo#contrato

Quer testar Tokia com R$ 10 via PIX?

Criar conta grátis →