ComplianceBot AI
Você precisa provar conformidade em LGPD, ISO 27001, SOC 2, PCI DSS ou NIST CSF e não sabe onde está o buraco.
O ComplianceBot é um assessment multi-framework. O checklist de cada norma é conteúdo do produto, escrito e versionado em código: 52 perguntas ao todo — 11 para LGPD, 11 para ISO 27001, 8 para SOC 2, 12 para PCI DSS e 10 para NIST CSF. O banco guarda só as respostas do seu tenant e o score derivado, com chave por (tenant, framework, versão do checklist). Quando o checklist muda de versão, as respostas antigas continuam íntegras na versão antiga.
O cálculo é uma função pura. Cada item tem peso; cada resposta vale 1,0 (sim), 0,5 (parcial) ou 0 (não). 'Não se aplica' e item sem resposta saem do denominador — não penalizam nem inflam. Isso evita o falso zero que assusta o cliente na primeira tela. O readiness sai global e por domínio, e é recomputado tanto na escrita quanto na leitura, então o número na tela sempre bate com as respostas gravadas.
O relatório de gap é derivado a cada requisição, numa única varredura dos itens: classifica cada controle, ordena os gaps por prioridade e peso, agrega a quebra por domínio e devolve a faixa de maturidade. A minuta por IA passa pelo Gateway da plataforma com allowlist explícita de oito campos estruturados — nome de titular, documento e e-mail não têm por onde entrar. A minuta volta como rascunho, com disclaimer, e não é gravada como documento.
Capacidades em operação
Cada item corresponde a funcionalidade que existe no código e é alcançável por um usuário com o escopo correto.
-
Checklist versionado de cinco frameworks
GET /frameworks e GET /assessment/checklist devolvem domínios, rótulos de exibição e perguntas em português. Conteúdo declarativo em readiness.py, com versão própria por framework (lgpd.v1, iso27001.v1, soc2.v1, pci.v1, nist_csf.v1).
-
Readiness determinístico, global e por domínio
compute_readiness é função pura: mesma entrada, mesma saída. Recomputado no PUT das respostas e de novo na leitura — o número na tela nunca depende de cache. O score também é gravado na linha do assessment (`readiness_score`, `readiness_by_domain`, `snapshot_at`) como carimbo, mas a API não o lê de volta: toda leitura recalcula a partir das respostas.
-
Relatório de gap e maturidade
Classifica cada item em atendido, parcial, não atendido, não aplicável ou não avaliado; lista os gaps ordenados por prioridade e peso; devolve total, respondidos, conformes, parciais e não conformes por domínio, mais a faixa de maturidade (incipiente, inicial, intermediário, avançado).
-
Repositório de evidências por controle
POST, GET e DELETE em /evidences, com framework, referência de controle, título, chave de objeto opaca, hash e validade. Idempotency-Key obrigatório na criação.
-
Minuta por IA em quatro tipos
Política, procedimento, declaração e resposta a auditor. Entrada minimizada por allowlist, nota livre do operador embrulhada como dado (nunca instrução) e disclaimer obrigatório, devolvido pela API em toda minuta. O prompt ainda instrui o modelo a marcar [REVISAR: ...] no que faltar — esse marcador depende do modelo, o código não o verifica. Idempotency-Key obrigatório — a geração custa IA.
-
Trilha append-only
audit_log recebe assessment.answered, evidence.created, evidence.deleted e draft.generated, sempre sem PII e sem o conteúdo da minuta.
Entregáveis
- Tela de assessment por framework com score global e por domínio
- Relatório de gap com lista priorizada, quebra por domínio e faixa de maturidade
- Inventário de evidências vinculadas a controles
- Minuta de documento em texto, marcada como rascunho
O que este módulo não faz
Não há upload de arquivo: POST /evidences grava apenas metadados, e arquivo_s3_key é uma string informada por você — o bucket S3/MinIO é gancho externo e não existe no código. Não há exportação em PDF ou DOCX; o relatório sai como JSON e a renderização é da tela. A minuta não é persistida: só metadados (tipo, framework, run_id, modelo) vão para compliancebot_drafts, o texto volta na resposta e some — não existe GET /drafts. Os checklists são de alto nível, de 8 a 12 perguntas por framework: não é auditoria item-a-item do Anexo A da ISO nem dos 12 requisitos do PCI. valid_until é gravado, mas nenhum job vigia evidência vencida. O status do assessment nunca chega a 'concluido' pela API: sobe de 'rascunho' para 'em_andamento' e para aí.
Declaramos o limite porque software de segurança que promete tudo não é auditável. Se o que falta aqui é o que você precisa, o serviço consultivo cobre — ou dizemos que não cobre.
Conecta com
- app.ai.gateway (task compliancebot_draft, budget_scope subscription, allowlist de egress própria)
- app.api.idempotency (Idempotency-Key obrigatório em evidências e minutas)
- audit_log append-only da Fundação
- RLS FORCE nas tabelas compliancebot_* (migration 0022)
- RBAC da plataforma (app/rbac/catalog.py)
Controle de acesso
O acesso é concedido por escopo, não por perfil genérico. Quem só precisa ler não recebe permissão de escrita, e a barreira é o banco de dados, não a interface.
- compliancebot:assessment:read
- compliancebot:assessment:write
- compliancebot:evidence:read
- compliancebot:evidence:write
- compliancebot:draft:generate
Quer ver funcionando?
Demonstração com dado do seu ambiente, não com base de exemplo. É a única forma de saber se serve.