
Customer Assurance Operating System. Rispondi una sola volta ai questionari di sicurezza che i tuoi clienti ti inviano.
Rispondi ai questionari di sicurezza che i tuoi clienti ti inviano, una volta sola.
Ogni azienda che gestisce dati dei clienti riceve in continuazione le stesse richieste: questionari di sicurezza, valutazioni sulla privacy, revisioni del rischio dei fornitori, due diligence negli acquisti, richieste di evidenze. La maggior parte delle organizzazioni risponde a mano — un foglio di calcolo inviato dal cliente, una cartella di policy, una conversazione email e la memoria di qualcuno su ciò che era stato detto l'ultima volta.
CAOS trasforma tutto questo in un sistema di registrazione. I questionari diventano lavoro strutturato e compilabile. Le risposte completate e i tuoi documenti di conformità diventano un corpus ricercabile e citabile. Il questionario successivo parte da ciò che hai già detto, con ogni affermazione riconducibile al documento o alla risposta precedente da cui proviene.
È self-hosted. Le tue policy, le tue risposte e i questionari dei tuoi clienti restano sulla tua infrastruttura.
Stato: v0. CAOS è in produzione, ma questo repository è stato reso pubblico solo di recente. Interfacce, schema e configurazione sono ancora in evoluzione. I contributi esterni non sono ancora aperti — vedi Come contribuire.
Legge i questionari senza tirare a indovinare. Carica l'XLSX di un cliente e CAOS lo riproduce fedelmente — fogli, righe, celle, colonne nascoste, menu a tendina di validazione. Poi segni quali righe sono compilabili e quali celle riempire, per intervalli piuttosto che una alla volta. Non esiste un parser per singolo cliente, perché non esiste uno standard: una riga in grassetto può essere una domanda, una colonna vuota può essere la destinazione della risposta, e ogni euristica che interpreta correttamente una cartella di lavoro ne interpreta con sicurezza un'altra in modo sbagliato.
Costruisce un corpus dal lavoro che hai già completato. Chiudere un questionario pubblica le righe compilate come Q&A riutilizzabili. Le policy, le certificazioni e i report caricati diventano brani citabili. Entrambi sono versionati in modo immutabile, così una risposta inviata lo scorso trimestre si spiega ancora da sola rispetto al documento che era in vigore in quel momento.
Trova la risposta precedente giusta. Il recupero esegue ricerca lessicale e semantica insieme, fonde le loro classifiche e riordina i migliori candidati. Il linguaggio della conformità richiede entrambe: token esatti come "SOC 2 Type II" che gli embedding sfumano, e parafrasi che la ricerca per parole chiave perde del tutto.
Redige risposte fondate su fonti. Opzionale. Il modello cerca nel tuo corpus tramite strumenti limitati e in lista consentita e redige una bozza di risposta con citazioni — più un'etichetta che indica da dove deriva la sua autorevolezza: Knowledge grounded, Mixed, General guidance o Based on current answer. Una risposta General guidance non fa alcuna affermazione sulla tua organizzazione, e lo dichiara.
Risponde in Google Chat. Un comando slash /ciso interroga lo stesso corpus fondato su fonti, con un link che riporta a una conversazione persistente nell'app web.
Esporta di nuovo nella cartella di lavoro del cliente. Le risposte vengono scritte nella struttura del file originale, nelle celle che hai mappato — non in un'approssimazione plasmata da CAOS.
Registra tutto. Un log di audit append-only con immutabilità imposta dal database, che conserva i valori esatti delle risposte prima e dopo.
CAOS è organizzato in nove moduli di dominio. Tre di essi — Evidence, Knowledge e Tasks — sono globali: non appartengono ai progetti, perché il loro valore deriva dal fatto di attraversare più incarichi.
| Modulo | Gestisce | Documentazione |
|---|---|---|
| Identity | Modalità di autenticazione, sessioni, ruoli, utenti, associazioni a soggetti esterni | documentazione |
| Projects | Il contenitore dell'incarico; cascata di chiusura | documentazione |
| Questionnaires | Lettura delle cartelle di lavoro, mappatura delle righe, area di compilazione delle risposte, esportazione | documentazione |
| Evidence | Repository globale di artefatti di conformità riutilizzabili | documentazione |
| Knowledge | Fonti, brani, embeddings, recupero, esclusioni, citazioni | documentazione |
| AI | Conversazioni CISO, generazioni, etichette di fondatezza | documentazione |
| Chat | Verifica di Google Chat, associazione dell'identità, consegna | documentazione |
| Tasks | Lavoro umano richiesto nei vari moduli | documentazione |
| Audit | Log degli eventi append-only | documentazione |
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 con pgvector, Redis, worker Taskiq. Ogni modulo si suddivide in domain → application → infrastructure → presentation, con dipendenze unidirezionali. domain non dipende da nulla.
Frontend — React 19, TypeScript, Vite, Tailwind v4, shadcn/ui, Zustand. Lo stato di sessione e della shell dell'intera app vive in src/app; lo stato delle feature e della cache del server vive nei feature store; i workflow di pagina a lunga esecuzione vivono nei feature controller.
Entrambi i canali di recupero vivono in PostgreSQL. Non esiste un database vettoriale separato — un unico archivio significa un unico confine transazionale e un unico backup.
I fornitori esterni sono tenuti a debita distanza. Ogni integrazione separa un Platform Protocol (ciò che CAOS si aspetta, nel linguaggio del prodotto), un Adapter Protocol e una Vendor Implementation — l'unico livello che importa l'SDK. È per questo che embedding e reranking girano su modelli locali a versione fissa oppure su Bedrock, senza che alcun codice applicativo sappia quale dei due.
Dettaglio: architettura · confini di integrazione