Guard Brasil: 16 padroes de PII brasileiro em 4ms

E
Enio Rocha
6 min de leitura GitHub →

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 #

CategoriaPadrõesValidação
IdentidadeCPF, CNPJ, RG, CNH, Título de EleitorDígito verificador real (CPF, CNPJ, Título)
Saúde e governoNIS/PIS, Cartão SUS, MASPFormato + comprimento
InvestigaçãoREDS (MG), Número de processo judicial (CNJ)Formato padrão CNJ/REDS
ContatoEmail, Telefone (fixo + celular BR), CEPRegex + formato BR
VeículosPlaca Mercosul, Placa antigaFormato ABC1D23 / ABC-1234
FinanceiroCartão de créditoAlgoritmo 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 #

CasoComo o Guard entraRisco sem ele
Chatbot com LLMInspecionar input antes de enviar ao modeloCPF/CNH vaza para API de terceiro
ETL de dadosClassificar campos PII antes de salvar em data lakeDado sensível em tabela sem controle de acesso
Delegacia (nosso caso)Audit trail de quem acessou dados de investigaçãoSem conformidade LGPD Art. 37
HealthtechDetectar dados de saúde (Art. 11) em campos de texto livreMulta ANPD por tratamento irregular de dados sensíveis
Log sanitizationEncontrar PII em logs de aplicaçãoDados 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étricaGuard BrasilPresidioAWS Macie
Latência p954ms~50ms (Python NLP)Batch (minutos)
Padrões BR nativos162-3 (CPF, CNPJ se configurar)Genéricos
Validação de dígitoCPF, CNPJ, TítuloApenas regexN/A
Self-hostableSim (MIT)Sim (MIT)Não (AWS only)
Classificação LGPDNativa (Art. 5, 11)Genérica (GDPR)Genérica
CustoFree tier 500/mêsGrá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-brasil

Cada 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?
Sim. A API está live em guard.egos.ia.br com free tier (500 chamadas/mês). Para volume maior, o código é MIT — rode no seu próprio servidor. Sem vendor lock-in.
O Guard armazena os dados que eu envio?
Não. O texto enviado ao /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?
Os padrões são brasileiros (CPF, CNPJ, etc.) — eles aparecem em texto de qualquer idioma. Se um documento em inglês contém um CPF brasileiro, o Guard detecta normalmente. A classificação LGPD é baseada no tipo de dado, não no idioma.
Como integro com meu LLM/chatbot?
Chame /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?
AWS Comprehend detecta PII genérico (nomes, datas, endereços) via NLP. Guard Brasil detecta padrões brasileiros estruturados (CPF, CNPJ, MASP, REDS, SUS) com validação de dígito verificador. São complementares — Comprehend para texto livre, Guard para dados estruturados BR.

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.