OuiDire : un pipeline de preuve (sources, mecanismes, citations, vault chiffre)
Qu’est-ce que c’est, OuiDire.app?
Un workflow pour transformer des PDF psychiatriques/juridiques en cartes d’allégations auditables avec citations exportables.
Pipeline :
- PDF → extraction OCR/layout → segmentation en cartes d’allégations
- Chaque carte : tag Source (provenance) + verdict macro mecanisme (8) + tags fins (~30) au besoin
- Sortie : extrait copiable + ancre de citation (justification courte optionnelle)
Sources + macros de mecanisme (8) + tags (~30)
Couche Source (provenance) :
- Oui-dire / Hearsay
Macros de mecanisme = couche “verdict” (exportable) :
- Déviation narrative (propos du patient réécrits)
- Fabrication / extrapolation
- Réécriture biographique
- Recyclage d’antécédents psychiatriques (RAP)
- Contradictions internes
- Omissions critiques
- Amplification
- Canonisation (faux récit qui se durcit par répétition)
Tags = couche “instrumentation” (indices mécanistes), utile pour recherche/filtres, justifications concises, heuristiques et features ML. Exemples de familles : attribution (“selon / rapporté par”), ancrage temporel (sauts/flou), hedging vs inflation de certitude, marqueurs de contradiction, signaux de recyclage, patterns d’omission.
Macros = “quel type de défaillance”. Tags = “comment ça se manifeste”.
Auditabilité (le contrat central)
Chaque carte a :
- un UID stable :
${doc_id}:${alle_id} - des ancres de citation (spans/offsets ; idéalement aussi page/layout)
- une justification courte optionnelle (pas de prose)
Les exports incluent :
- texte de l’extrait
- doc_id (+ page si disponible)
- UID de la carte
- macro (+ tags optionnels)
- justification optionnelle
Objectif : répondre vite à “cette allégation, ça vient d’où ?”.
La “privacy” comme pouvoir d’action
Dans ce contexte, “privacy-first” n’est pas une préférence : c’est du contrôle opérationnel. Quand des droits civils peuvent être suspendus, le risque concret, c’est de perdre l’accès, perdre des copies, perdre le contrôle narratif. La sauvegarde locale et un vault chiffré servent la continuité : garder un dossier utilisable, des exports reproductibles, et limiter l’exposition à des tiers. But : empêcher qu’un dossier psychiatrique demeure toujours une histoire non vérifiable ré-écrite par d’autres.
Cloud-first, avec des frontières claires
On démarre cloud-first pour :
- la vitesse d’exécution nettement supérieure
- la qualité d’extraction (OCR/layout, surtout sur scans)
- la persistance + sync (multi-device, fiabilité ; partage contrôlé plus tard)
Frontières :
- action explicite de l’utilisateur (pas d’upload caché)
- minimisation (seulement ce qui est requis)
- stockage chiffré côté client (le vault n’est pas un “dossier plateforme” en clair)
- la machine suggère, l’humain vérifie (les exports suivent la couche vérifiée)
OCR / extraction (Azure Document Intelligence)
- déclenché par document, sur action explicite
- renvoie une structure OCR/layout utilisée pour segmentation + ancres
- résultats mis en cache pour auditabilité (sur l’appareil et/ou dans le vault)
Stockage (Azure Vault)
Cible : un vault optionnel qui stocke des blobs chiffrés :
- chiffrement côté client (WebCrypto) avant upload
- le vault stocke :
ciphertext + iv + salt + version - le serveur gère l’auth + accès scoped (ex. SAS) ; il ne peut pas lire le contenu
Fallback local-only (plus tard, dégradé)
Un mode strict local-only peut exister plus tard :
- pas d’OCR cloud
- qualité moindre sur scans
- contraintes offline/privacy maximales
C’est un compromis, pas la trajectoire principale.
Humain vs machine (signal propre)
Deux couches parallèles :
- Machine : suggestions + confiance (utilité immédiate)
- Vérifié : décisions humaines (vérité exportable)
On mesure par carte :
- confirmé / rejeté / ignoré
- par macro et familles de tags
- par type de document
Ça produit un signal de calibration/apprentissage sans centraliser des dossiers bruts par défaut.
v0 → v1 → v2
v0 :
- cartes + batching/pagination + checkpoint
- tri-état (neutre → ✅ → ✕ → neutre)
- UIDs stables + persistance de l’état de travail
- exports (extrait + citation)
v1 :
- télémétrie opt-in : suggestion/confiance → verdict humain
- matrices de confusion macros, utilité des tags, “rule lift”
- pas de texte brut par défaut
v2 :
- pipeline heuristiques → reranker
- détection explicite de contradictions intra-document
- cross-document seulement sur demande
- le modèle reste subordonné à la couche vérifiée
Prochains billets (pas dans cet ordre précisément)
- représentation des ancres/spans pour des citations stables à l’export
- familles de tags (~30) + mapping vers macros
- design du Vault Azure (chiffrement côté client, sync, threat model)
- boucle “humain vs machine” : ce qu’enseignent confirmations et rejets