
Customer Assurance Operating System. Responda uma única vez aos questionários de segurança que seus clientes enviam.
Responda de uma vez aos questionários de segurança que seus clientes enviam a você.
Toda empresa que lida com dados de clientes recebe as mesmas solicitações repetidamente: questionários de segurança, avaliações de privacidade, análises de risco de fornecedores, due diligence de compras, solicitações de evidências. A maioria das organizações responde manualmente — uma planilha do cliente, uma pasta de políticas, uma thread de e-mail e a memória de alguém sobre o que foi dito da última vez.
O CAOS transforma isso em um sistema de registro. Questionários tornam-se trabalho estruturado e respondível. Respostas concluídas e seus documentos de conformidade tornam-se um corpus pesquisável e citável. O próximo questionário começa a partir do que você já disse, com cada afirmação rastreável até o documento ou resposta anterior de onde veio.
Ele é auto-hospedado. Suas políticas, suas respostas e os questionários dos seus clientes permanecem na sua infraestrutura.
Status: v0. O CAOS roda em produção, mas este repositório é recém-público. Interfaces, schema e configuração ainda estão em movimento. Contribuições externas ainda não estão abertas — veja Contribuindo.
Lê questionários sem adivinhar. Envie um XLSX do cliente e o CAOS o renderiza fielmente — planilhas, linhas, células, colunas ocultas, listas suspensas de validação. Em seguida, você marca quais linhas são respondíveis e quais células preencher, em intervalos em vez de uma por uma. Não existe parser por cliente, porque não existe padrão: uma linha em negrito pode ser uma pergunta, uma coluna em branco pode ser o alvo da resposta, e toda heurística que acerta em um workbook erra confiantemente em outro.
Constrói um corpus a partir do trabalho que você já concluiu. Fechar um questionário publica suas linhas respondidas como Q&A reutilizável. Políticas, certificações e relatórios enviados tornam-se passagens citáveis. Ambos são versionados de forma imutável, de modo que uma resposta enviada no trimestre passado ainda se explica em relação ao documento vigente na época.
Encontra a resposta anterior certa. A recuperação executa busca lexical e semântica em conjunto, funde suas classificações e reclassifica os principais candidatos. A linguagem de conformidade precisa de ambas: tokens exatos como "SOC 2 Type II", que embeddings borram, e paráfrases que a busca por palavras-chave perde completamente.
Redige respostas fundamentadas. Opcional. O modelo pesquisa seu corpus por meio de ferramentas limitadas e na lista de permissões e redige uma resposta com citações — além de um rótulo indicando de onde veio sua autoridade: Knowledge grounded, Mixed, General guidance ou Based on current answer. Uma resposta General guidance não faz nenhuma afirmação sobre sua organização, e diz isso.
Responde no Google Chat. Um comando de barra /ciso acessa o mesmo corpus fundamentado, com um link de volta para uma conversa persistente no aplicativo web.
Exporta de volta para o próprio workbook do cliente. As respostas são gravadas na estrutura de arquivo original, nas células que você mapeou — não em uma aproximação no formato do CAOS.
Registra tudo. Um log de auditoria somente de acréscimo com imutabilidade imposta pelo banco de dados, carregando valores exatos de antes e depois das respostas.
O CAOS é organizado em nove módulos de domínio. Três deles — Evidence, Knowledge e Tasks — são globais: não pertencem a projetos, porque seu valor vem de atravessar engajamentos.
| Módulo | Gerencia | Docs |
|---|---|---|
| Identity | Modos de autenticação, sessões, papéis, usuários, vínculos externos de sujeito | docs |
| Projects | O contêiner do engajamento; cascata de fechamento | docs |
| Questionnaires | Leitura de workbooks, mapeamento de linhas, espaço de respostas, exportação | docs |
| Evidence | Repositório global de artefatos de conformidade reutilizáveis | docs |
| Knowledge | Fontes, passagens, embeddings, recuperação, exclusões, citações | docs |
| AI | Conversas do CISO, gerações, rótulos de fundamentação | docs |
| Chat | Verificação do Google Chat, vinculação de identidade, entrega | docs |
| Tasks | Trabalho humano solicitado entre módulos | docs |
| Audit | Log de eventos somente de acréscimo | docs |
Internet
│
┌─────┴─────┐
│ nginx │ TLS · static frontend · /api proxy
└─────┬─────┘
┌──────────────┼──────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴──────┐
│ Frontend │ │ API │ │ Taskiq │
│ React │ │ FastAPI │ │ workers │
│ static │ │ :18800 │ │ │
└───────────┘ └─────┬─────┘ └─────┬──────┘
│ │
┌─────┴──────────────┴─────┐
│ │
┌─────┴──────┐ ┌──────┴─────┐
│ PostgreSQL │ │ Redis │
│ pgvector │ │ queue+cache│
└────────────┘ └────────────┘
│
┌─────┴─────┐
│ Providers │ Bedrock · local models · Google Chat
└───────────┘
Backend — Python 3.12+, FastAPI, SQLAlchemy 2 async, PostgreSQL com pgvector, Redis, workers Taskiq. Cada módulo se divide em domain → application → infrastructure → presentation, com dependências unidirecionais. domain não depende de nada.
Frontend — React 19, TypeScript, Vite, Tailwind v4, shadcn/ui, Zustand. O estado de sessão e shell de toda a aplicação vive em src/app; o estado de funcionalidades e de cache do servidor vive em stores de funcionalidades; fluxos de trabalho longos em páginas vivem em controllers de funcionalidades.
Ambos os canais de recuperação vivem no PostgreSQL. Não há um banco de dados vetorial separado — um único armazenamento significa um único limite de transação e um único backup.
Fornecedores externos são mantidos à distância. Cada integração separa um Protocolo de Plataforma (o que o CAOS espera, em linguagem de produto), um Protocolo de Adaptador e uma Implementação de Fornecedor — a única camada que importa o SDK. É por isso que embedding e reranking rodam em modelos locais fixados ou no Bedrock, sem que nenhum código de aplicação saiba qual deles.
Detalhe: arquitetura · fronteiras de integração