Guard Brasil: 16 padroes de PII brasileiro em 4ms
TL;DR: Guard Brasil é uma API open-source que detecta 16 padrões de dados pessoais brasileiros (CPF, CNPJ, RG, MASP, REDS, SUS...) em 4ms. Validação real de dígito verificador, não apenas regex. MIT license, self-hostable, free tier de 500 chamadas/mês. Testar agora.
O problema: dados brasileiros em APIs genéricas #
Quando você usa o Microsoft Presidio ou o AWS Macie para detectar dados pessoais em texto, eles encontram emails, telefones, e cartões de crédito. Mas não encontram:
- MASP — identificação funcional de servidores estaduais de Minas Gerais
- REDS — Registro de Eventos de Defesa Social (boletins de ocorrência em MG)
- Cartão SUS — número do Sistema Único de Saúde
- NIS/PIS — cadastro de trabalhadores
- Título de Eleitor — 12 dígitos com dígitos verificadores específicos
Se você trabalha com dados brasileiros — chatbots, ERPs, sistemas de saúde, investigação policial — esses padrões são tão importantes quanto CPF e CNPJ. E nenhuma biblioteca global os cobre.
Os 16 padrões #
| Categoria | Padrões | Validação |
|---|---|---|
| Identidade | CPF, CNPJ, RG, CNH, Título de Eleitor | Dígito verificador real (CPF, CNPJ, Título) |
| Saúde e governo | NIS/PIS, Cartão SUS, MASP | Formato + comprimento |
| Investigação | REDS (MG), Número de processo judicial (CNJ) | Formato padrão CNJ/REDS |
| Contato | Email, Telefone (fixo + celular BR), CEP | Regex + formato BR |
| Veículos | Placa Mercosul, Placa antiga | Formato ABC1D23 / ABC-1234 |
| Financeiro | Cartão de crédito | Algoritmo de Luhn |
Cada padrão tem um nível de risco LGPD associado. CPF, CNH, e dados de saúde são CRITICAL (Art. 5 e 11 da LGPD). Email e CEP são MEDIUM. A classificação segue a interpretação da ANPD sobre dados pessoais sensíveis.
Teste ao vivo #
A API está pública. Sem cadastro, sem cartão:
curl -X POST https://guard.egos.ia.br/v1/inspect \
-H "Content-Type: application/json" \
-d '{"text": "CPF do paciente: 123.456.789-09, SUS 898 0016 0045 0004"}'Resposta (~4ms):
{
"patterns": [
{"type": "CPF", "value": "123.456.789-09", "valid": true},
{"type": "SUS_CARD", "value": "898 0016 0045 0004"}
],
"lgpd_risk": "CRITICAL",
"has_sensitive_data": true,
"latency_ms": 4
}O campo valid: true no CPF significa que os dígitos verificadores batem. Isso diferencia o Guard de regex puro — 000.000.000-00 retornaria valid: false porque não passa na validação do algoritmo.
Integração em 3 linhas #
Via npm (@egosbr/guard-brasil):
import { guard } from "@egosbr/guard-brasil"
const result = await guard.inspect(userInput)
if (result.lgpd_risk === "HIGH") {
// Log acesso, não mascarar — o operador PRECISA ver os dados
await auditLog({ who: currentUser, what: "accessed PII", risk: result.lgpd_risk })
}Ou via API HTTP diretamente — funciona com qualquer linguagem:
# Python
import requests
r = requests.post("https://guard.egos.ia.br/v1/inspect",
json={"text": texto_do_usuario})
if r.json()["lgpd_risk"] in ("HIGH", "CRITICAL"):
registrar_acesso(usuario_atual)Casos de uso reais #
| Caso | Como o Guard entra | Risco sem ele |
|---|---|---|
| Chatbot com LLM | Inspecionar input antes de enviar ao modelo | CPF/CNH vaza para API de terceiro |
| ETL de dados | Classificar campos PII antes de salvar em data lake | Dado sensível em tabela sem controle de acesso |
| Delegacia (nosso caso) | Audit trail de quem acessou dados de investigação | Sem conformidade LGPD Art. 37 |
| Healthtech | Detectar dados de saúde (Art. 11) em campos de texto livre | Multa ANPD por tratamento irregular de dados sensíveis |
| Log sanitization | Encontrar PII em logs de aplicação | Dados pessoais em Elasticsearch/Datadog sem proteção |
Compliance, não mascaramento #
O Guard Brasil não mascara dados dos operadores por padrão. Isso é intencional.
Na delegacia, o investigador precisa ver o CPF do suspeito. No hospital, o médico precisa ver o número SUS do paciente. Mascarar esses dados quebraria o trabalho deles.
O que o Guard faz é gerar o audit trail: quem acessou, quando, que tipo de dado, qual o nível de risco. Isso é o que o Art. 37 da LGPD exige — registro das operações de tratamento, não bloqueio do acesso legítimo.
Cada chamada ao /v1/inspect gera internamente um hash SHA-256 da evidência (provenance receipt). Isso serve como prova auditável de que a classificação foi feita, caso a ANPD solicite.
Benchmark: Guard Brasil vs. alternativas #
| Métrica | Guard Brasil | Presidio | AWS Macie |
|---|---|---|---|
| Latência p95 | 4ms | ~50ms (Python NLP) | Batch (minutos) |
| Padrões BR nativos | 16 | 2-3 (CPF, CNPJ se configurar) | Genéricos |
| Validação de dígito | CPF, CNPJ, Título | Apenas regex | N/A |
| Self-hostable | Sim (MIT) | Sim (MIT) | Não (AWS only) |
| Classificação LGPD | Nativa (Art. 5, 11) | Genérica (GDPR) | Genérica |
| Custo | Free tier 500/mês | Grátis (self-host) | Pay-per-GB |
O Guard não substitui Presidio ou Macie — ele complementa. Para dados globais (SSN, passport), use Presidio. Para dados brasileiros com validação real, use Guard Brasil. É possível rodar os dois em cadeia.
Código-fonte e arquitetura #
O código está em packages/guard-brasil/ no repositório EGOS. A arquitetura é simples:
packages/guard-brasil/
├── src/
│ ├── index.ts # Entry point, exports guard.inspect()
│ ├── patterns/ # Um arquivo por padrão (cpf.ts, cnpj.ts, masp.ts...)
│ ├── validators/ # Dígito verificador (Luhn, CPF, CNPJ)
│ └── classifier.ts # Classificação de risco LGPD
├── tests/ # 38 testes
└── package.json # @egosbr/guard-brasilCada padrão é um módulo independente com regex + validador + nível de risco. Adicionar um novo padrão é criar um arquivo em patterns/ e registrá-lo.
Perguntas frequentes #
Posso usar o Guard Brasil em produção?
O Guard armazena os dados que eu envio?
/v1/inspect é processado em memória e descartado. Nenhum dado é salvo no servidor. O audit trail (hash SHA-256) é gerado localmente no cliente, não no servidor.Funciona com textos em inglês ou só português?
Como integro com meu LLM/chatbot?
/v1/inspect no texto do usuário antes de enviar ao LLM. Se lgpd_risk for HIGH ou CRITICAL, decida: (a) sanitizar antes de enviar, (b) alertar o usuário, ou (c) apenas logar para compliance. A escolha depende do seu caso de uso.Qual a diferença entre Guard Brasil e AWS Comprehend PII?
API: guard.egos.ia.br · npm: @egosbr/guard-brasil · Código: GitHub · Health check: curl https://guard.egos.ia.br/health
No EGOS, isso também se conecta com #
- Altitude Errada — o contexto de por que construímos Guard Brasil como ferramenta, não como produto central
- Doc-Drift Shield — o manifest que monitora os endpoints do Guard Brasil automaticamente
Código aberto. Tudo que você viu aqui está disponível em github.com/enioxt/egos. Se você está construindo algo parecido ou quer aplicar no seu contexto, fala comigo no X: @eniorocha_. Construindo em público.