Usar CPF como feature em modelos de ML exige anonimização antes do treinamento, base legal específica e mecanismos de explicabilidade — requisitos diretos do artigo 20 da LGPD. Dados de CPF coletados para verificação cadastral não podem ser reutilizados em pipelines de IA sem uma nova justificativa legal, e o titular tem direito de solicitar revisão humana de qualquer decisão tomada exclusivamente por algoritmo.
Introdução
A inteligência artificial e o machine learning estão transformando a forma como empresas processam dados, desde a análise de crédito até a detecção de fraudes. No entanto, quando modelos de ML utilizam dados de CPF -- diretamente ou como feature para enriquecimento -- surgem questões complexas de conformidade com a LGPD. O uso de identificadores pessoais em algoritmos automatizados exige transparência, justificativa legal e medidas técnicas de proteção.
O que a LGPD diz sobre decisões automatizadas
O artigo 20 da LGPD garante ao titular o direito de solicitar a revisão de decisões tomadas unicamente com base em tratamento automatizado de dados pessoais. Isso inclui decisões sobre:
- Definição de perfil pessoal, profissional, de consumo ou de crédito.
- Aspectos relacionados à personalidade do titular.
Requisitos legais para uso de CPF em ML
- Transparência: o titular deve ser informado de que seus dados de CPF são utilizados em processamento automatizado.
- Explicabilidade: a empresa deve ser capaz de explicar os critérios e a lógica do tratamento.
- Revisão humana: o titular pode solicitar que uma pessoa revise a decisão automatizada.
- Base legal adequada: o tratamento deve estar amparado por base legal específica.
Riscos do uso de CPF em modelos de ML
Viés algorítmico
Dados de CPF podem ser utilizados indiretamente para inferir informações sensíveis -- como região de origem ou faixa etária -- que podem introduzir viés discriminatório nos modelos.
Reidentificação
Mesmo que o CPF seja anonimizado, a combinação com outros dados (como data de nascimento e gênero) pode permitir a reidentificação do titular, violando o princípio da anonimização.
Retenção em modelos treinados
Dados de CPF utilizados no treinamento de modelos podem ficar "gravados" nos pesos do modelo, dificultando o exercício do direito de exclusão pelo titular.
Finalidade desviada
Dados de CPF coletados para verificação cadastral não podem ser reutilizados para treinamento de modelos de ML sem uma nova base legal.
Boas práticas para uso de CPF em pipelines de ML
Anonimização antes do treinamento
import hashlib
import pandas as pd
import requests
from typing import Optional
def anonimizar_cpf_para_ml(cpf: str, salt: str) -> str:
"""Anonimiza CPF para uso em datasets de treinamento."""
return hashlib.sha256(f"{salt}{cpf}".encode()).hexdigest()[:16]
def preparar_dataset_seguro(df: pd.DataFrame, salt: str) -> pd.DataFrame:
"""Prepara dataset removendo dados identificáveis e mantendo features úteis."""
df_seguro = df.copy()
# Substituir CPF por hash anonimizado
df_seguro["cpf_hash"] = df_seguro["cpf"].apply(
lambda x: anonimizar_cpf_para_ml(x, salt)
)
# Remover CPF original
df_seguro.drop(columns=["cpf", "nome"], inplace=True)
# Manter apenas features relevantes para o modelo
df_seguro["faixa_etaria"] = pd.cut(
df_seguro["idade"],
bins=[0, 25, 35, 45, 55, 65, 100],
labels=["18-25", "26-35", "36-45", "46-55", "56-65", "65+"]
)
df_seguro.drop(columns=["idade", "data_nascimento"], inplace=True)
return df_seguro
# Exemplo
dados = pd.DataFrame({
"cpf": ["12345678901", "98765432100"],
"nome": ["João Silva", "Maria Santos"],
"idade": [34, 28],
"data_nascimento": ["1991-03-15", "1997-08-22"],
"score_credito": [720, 680]
})
dados_seguros = preparar_dataset_seguro(dados, salt="meu_salt_secreto_2025")
print(dados_seguros)
Enriquecimento de dados com a API do CPFHub.io
Quando necessário enriquecer dados para treinamento, utilize a API de forma responsável:
curl -X GET "https://api.cpfhub.io/cpf/12345678901" \
-H "x-api-key: SUA_API_KEY" \
-H "Accept: application/json" \
--max-time 30
def enriquecer_e_anonimizar(cpf: str, api_key: str, salt: str) -> Optional[dict]:
"""Consulta API, extrai features e anonimiza antes de salvar."""
try:
response = requests.get(
f"https://api.cpfhub.io/cpf/{cpf}",
headers={
"x-api-key": api_key,
"Accept": "application/json"
},
timeout=30
)
if response.status_code == 200:
dados = response.json()["data"]
# Extrair features sem identificadores
features = {
"id_anonimo": anonimizar_cpf_para_ml(cpf, salt),
"genero": dados.get("gender"),
"ano_nascimento": dados.get("year"),
"faixa_etaria": calcular_faixa_etaria(int(dados.get("year", 0)))
}
# Não armazenar CPF, nome ou data completa de nascimento
return features
except requests.exceptions.Timeout:
print(f"[WARN] Timeout ao consultar CPF")
return None
def calcular_faixa_etaria(ano_nascimento: int) -> str:
from datetime import date
idade = date.today().year - ano_nascimento
if idade < 25: return "18-25"
elif idade < 35: return "26-35"
elif idade < 45: return "36-45"
elif idade < 55: return "46-55"
elif idade < 65: return "56-65"
return "65+"
Registro de tratamento para modelos de ML
Documente cada uso de dados de CPF em pipelines de ML:
import json
from datetime import datetime, timezone
def registrar_uso_ml(modelo: str, dataset_id: str, cpfs_processados: int):
"""Registra o uso de dados de CPF em treinamento de modelo."""
registro = {
"timestamp": datetime.now(timezone.utc).isoformat(),
"modelo": modelo,
"dataset_id": dataset_id,
"total_registros": cpfs_processados,
"dados_utilizados": ["genero", "faixa_etaria"],
"dados_excluidos": ["cpf", "nome", "data_nascimento_completa"],
"metodo_anonimizacao": "sha256_com_salt",
"base_legal": "legitimo_interesse",
"ripd_referencia": "RIPD-2025-003",
"responsavel": "equipe_ml@empresa.com",
"revisao_proxima": "2025-10-11"
}
with open("ml_data_usage.log", "a") as f:
f.write(json.dumps(registro, ensure_ascii=False) + "\n")
return registro
Direito de explicação e revisão
Implementando explicabilidade
Para cumprir o artigo 20 da LGPD, implemente mecanismos que expliquem como o modelo utiliza dados derivados de CPF:
- Utilize técnicas como SHAP ou LIME para gerar explicações locais.
- Mantenha documentação atualizada sobre as features do modelo e suas fontes.
- Disponibilize um canal para que o titular solicite revisão da decisão automatizada.
Direito de exclusão em modelos treinados
Quando um titular solicita a exclusão de seus dados, considere:
- Remover os dados do dataset de treinamento.
- Avaliar a necessidade de retreinar o modelo.
- Documentar a ação tomada e justificar se o retreinamento não for viável.
Governança de dados para ML
Estabeleça uma política de governança que inclua:
- Comitê de ética em IA: grupo multidisciplinar que avalia o uso de dados pessoais em modelos.
- Avaliação de impacto prévia: todo novo modelo que utilize dados derivados de CPF deve passar por RIPD.
- Monitoramento de viés: avalie periodicamente se o modelo apresenta discriminação baseada em dados correlacionados ao CPF.
- Versionamento de datasets: mantenha histórico de quais dados foram utilizados em cada versão do modelo.
- Catálogo de features: documente a origem e o método de transformação de cada feature.
Perguntas frequentes
Posso usar CPF como feature direta em um modelo de ML?
Não é recomendado. O CPF como feature direta não agrega valor preditivo ao modelo e cria riscos legais sérios — especialmente o risco de reidentificação quando combinado com outras variáveis. A abordagem correta é extrair as features derivadas (gênero, faixa etária) via API e descartar o identificador antes do treinamento.
Qual base legal usar para enriquecer datasets de ML com dados de CPF?
Depende do contexto. Legítimo interesse pode ser invocado quando o enriquecimento visa prevenção de fraudes, mas exige documentação de RIPD e balancing test. Para modelos de crédito, a base costuma ser execução de contrato ou cumprimento de obrigação legal. Consulte o DPO da empresa antes de iniciar o pipeline.
O que acontece se um titular pedir exclusão dos dados usados em treinamento?
A empresa deve avaliar se é tecnicamente viável remover o registro do dataset sem comprometer o modelo. Se o retreinamento não for viável, a ação e sua justificativa devem ser documentadas. A ANPD reconhece limitações técnicas, mas exige que a empresa demonstre esforço razoável e medidas compensatórias.
A API CPFHub.io pode ser usada para enriquecimento de datasets sem bloquear por volume?
Sim. O plano gratuito oferece 50 consultas por mês sem cartão de crédito. Para enriquecimento de datasets maiores, o plano Pro inclui 1.000 consultas mensais por R$149. Se o limite for ultrapassado, a API não bloqueia: cobra R$0,15 por consulta adicional — permitindo processar datasets de qualquer tamanho.
Conclusão
O uso de dados de CPF em modelos de machine learning é tecnicamente possível e pode trazer benefícios concretos, mas exige uma abordagem responsável e em conformidade com a LGPD. Anonimização rigorosa, documentação detalhada, explicabilidade dos modelos e respeito aos direitos dos titulares são requisitos indispensáveis para operar nesse cenário.
Ao integrar fontes de dados confiáveis e em conformidade com a LGPD, como a API do CPFHub.io, sua equipe de dados pode enriquecer features de forma responsável sem comprometer a privacidade dos titulares.
Cadastre-se em cpfhub.io — 50 consultas mensais gratuitas, sem cartão de crédito.
CPFHub.io
Pronto para integrar a API?
50 consultas gratuitas para testar agora. Sem cartão de crédito. Acesso imediato à documentação.
Sobre a redação
Redação CPFHub.io
Time editorial especializado em APIs de CPF, identidade digital e compliance no mercado brasileiro. Produzimos guias técnicos, análises regulatórias e tutoriais sobre LGPD e KYC para desenvolvedores e líderes de produto.



