
Customer Assurance Operating System. Répondez une seule fois aux questionnaires de sécurité que vous envoient vos clients.
Répondez aux questionnaires de sécurité que vos clients vous envoient, une seule fois.
Toute entreprise qui traite des données clients reçoit sans cesse les mêmes demandes : questionnaires de sécurité, évaluations de confidentialité, examens des risques fournisseurs, due diligence d'achat, demandes de preuves. La plupart des organisations y répondent à la main — un tableur du client, un dossier de politiques, un fil d'e-mails, et la mémoire de quelqu'un de ce qui a été dit la dernière fois.
CAOS transforme cela en un système de référence. Les questionnaires deviennent un travail structuré, auquel on peut répondre. Les réponses terminées et vos documents de conformité deviennent un corpus consultable et citable. Le questionnaire suivant part de ce que vous avez déjà dit, chaque affirmation étant traçable jusqu'au document ou à la réponse antérieure dont elle provient.
Il est auto-hébergé. Vos politiques, vos réponses et les questionnaires de vos clients restent sur votre infrastructure.
Statut : v0. CAOS fonctionne en production, mais ce dépôt est nouvellement public. Les interfaces, le schéma et la configuration évoluent encore. Les contributions externes ne sont pas encore ouvertes — voir Contribuer.
Lit les questionnaires sans deviner. Importez le XLSX d'un client et CAOS le restitue fidèlement — feuilles, lignes, cellules, colonnes masquées, listes déroulantes de validation. Vous marquez ensuite les lignes répondables et les cellules à remplir, par plages plutôt qu'une à la fois. Il n'y a pas d'analyseur par client, car il n'y a pas de standard : une ligne en gras peut être une question, une colonne vide peut être la cible de réponse, et chaque heuristique qui réussit sur un classeur se trompe avec assurance sur un autre.
Construit un corpus à partir du travail déjà terminé. La clôture d'un questionnaire publie ses lignes répondues comme Q&R réutilisables. Les politiques, certifications et rapports importés deviennent des passages citables. Ces deux éléments sont versionnés de manière immuable, de sorte qu'une réponse envoyée le trimestre dernier s'explique encore par rapport au document en vigueur à ce moment-là.
Trouve la bonne réponse antérieure. La recherche associe les recherches lexicale et sémantique, fusionne leurs classements et re-rank les meilleurs candidats. Le langage de conformité a besoin des deux : des jetons exacts comme « SOC 2 Type II » que les embeddings brouillent, et des paraphrases que la recherche par mots-clés rate complètement.
Rédige des réponses fondées. Optionnel. Le modèle parcourt votre corpus via des outils bornés et sur liste blanche, et rédige une réponse avec des citations — plus une étiquette indiquant d'où provient son autorité : Knowledge grounded, Mixed, General guidance ou Based on current answer. Une réponse General guidance ne fait aucune affirmation sur votre organisation, et le précise.
Répond dans Google Chat. Une commande slash /ciso interroge le même corpus fondé, avec un lien de retour vers une conversation persistante dans l'application web.
Exporte en retour dans le classeur du client. Les réponses sont écrites dans la structure de fichier d'origine, dans les cellules que vous avez mappées — pas dans une approximation aux allures de CAOS.
Consigne tout. Un journal d'audit en ajout seul (append-only), avec une immutabilité imposée par la base de données, portant les valeurs exactes avant/après des réponses.
CAOS est organisé en neuf modules de domaine. Trois d'entre eux — Evidence, Knowledge et Tasks — sont globaux : ils ne sont pas détenus par les projets, car leur valeur vient de la transversalité entre les engagements.
| Module | Possède | Docs |
|---|---|---|
| Identity | Modes d'authentification, sessions, rôles, utilisateurs, liaisons de sujets externes | docs |
| Projects | Le conteneur d'engagement ; cascade de clôture | docs |
| Questionnaires | Lecture des classeurs, mappage des lignes, espace de réponse, export | docs |
| Evidence | Dépôt global d'artefacts de conformité réutilisables | docs |
| Knowledge | Sources, passages, embeddings, recherche, exclusions, citations | docs |
| AI | Conversations CISO, générations, étiquettes de fondement | docs |
| Chat | Vérification Google Chat, liaison d'identité, livraison | docs |
| Tasks | Travail humain demandé à travers les modules | docs |
| Audit | Journal d'événements en ajout seul | 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 asynchrone, PostgreSQL avec pgvector, Redis, workers Taskiq. Chaque module se divise en domain → application → infrastructure → presentation, avec des dépendances à sens unique. domain ne dépend de rien.
Frontend — React 19, TypeScript, Vite, Tailwind v4, shadcn/ui, Zustand. L'état de session et de coque à l'échelle de l'application vit dans src/app ; l'état des fonctionnalités et du cache serveur vit dans les stores de fonctionnalités ; les workflows de page de longue durée vivent dans les contrôleurs de fonctionnalités.
Les deux canaux de recherche vivent dans PostgreSQL. Il n'y a pas de base de données vectorielle séparée — un seul stockage signifie une seule frontière de transaction et une seule sauvegarde.
Les fournisseurs externes sont tenus à distance. Chaque intégration sépare un protocole de plateforme (ce que CAOS attend, dans le langage produit), un protocole d'adaptateur et une implémentation fournisseur — la seule couche qui importe le SDK. C'est pourquoi l'embedding et le re-ranking s'exécutent sur des modèles locaux épinglés ou sur Bedrock, sans qu'aucun code applicatif sache lequel.
Détail : architecture · frontières d'intégration