Équipe et défi
Équipe apro : Jeremy Vong, Sheng He Ge, Bryan Sanchez. Défi : Loto-Québec – Projet 360 / NOVA.
Le problème
Les informations du projet NOVA sont dispersées dans 62 documents : courriels, comptes rendus, tickets, plans Excel, contrats, factures, décisions d'architecture et conversations Teams. Certaines sont périmées, d'autres se contredisent. Une personne qui reprend le projet ne sait pas quoi croire.
Ce que fait le projet
Une application web autonome qui sert de mémoire du projet au 30 septembre 2026, 9 h (Montréal) :
- Vue d'ensemble : la date de mise en production et ses trois conditions, les prochaines actions, les risques, le budget et les factures.
- Explorer : une recherche en langage naturel qui renvoie les passages sources, et le tableau des 62 documents, chacun avec sa page.
- Historique : les événements par jour, et un tableau qui réunit événements, décisions, contradictions et informations manquantes.
- Suivi : ce qui reste à faire, par qui, et ce qui change quand un nouveau document est importé. La version initiale est conservée.
- Rapports : brief de reprise d'une page, briefing exécutif, dossier décisions et preuves, comparaison avec le projet ORION.
- Documentation : le pipeline, les livrables du défi et les dix réponses.
Chaque affirmation pointe vers un passage précis (page, cellule, ligne horodatée, paragraphe de courriel ou ligne de capture). Un clic ouvre le document sur ce passage.
Comment on l'a construit
Un pipeline Python, lancé par python -m pipeline :
- Contrôle du corpus contre son manifeste (62 documents).
- Découpage en 379 passages, chacun avec son repère. Les captures sont transcrites par un modèle de vision local.
- Dédoublonnage : une pièce jointe identique à un fichier n'est pas une deuxième confirmation.
- JEV : chaque passage reçoit des décisions typées (
choice,score,noul) au contrat JEV : sujet, nature (proposition, décision, validation…), autorité, échéance, engagement, risque ; chaque paire de passages proches reçoit « contredit » et « remplace ». - Consolidation : état actuel, historique et contradictions, selon des règles écrites (autorité, puis date des faits).
- Vérification des preuves : les 469 citations des réponses sont retrouvées mot pour mot dans leur passage, sans aucun écart.
- Index de recherche avec EmbeddingGemma.
- Construction d'un seul fichier HTML, au design de Loto-Québec, qui s'ouvre hors ligne.
Un nouveau document (python -m pipeline --event <fichier>, ou le bouton Importer) produit une version 2 à côté de la version 1, avec la liste de ce qui change. Aucune approbation n'est inventée et aucune condition n'est fermée sans preuve.
Brief de reprise (30 septembre 2026, 9 h)
- Responsable : Nicolas Perron, chargé de projet depuis le 16 septembre (E06), après Élodie Caron (7 juillet – 16 septembre). Fournisseur : Julien Moreau, Boréal Numérique.
- Date et conditions : mise en production le 22 octobre 2026, approuvée par le comité de direction le 10 septembre (M04 15:25). Le comité du 26 septembre l'a rendue conditionnelle à trois éléments (M06 10:09) : acceptation sécurité de SEC-210, fermeture d'ACC-303, approbation du runbook avec retour arrière. Aucune n'est documentée comme remplie ; aucune échéance ferme.
- Portée : phase 1 (SSO, demandes, pièces jointes, workflow, tableau de suivi, rapports, plus les rapports avancés de CR-01). Hébergement Canada Central (ADR-007). L'optimisation mobile avancée (CR-04) est reportée en phase 2.
- Budget : 204 000 $ autorisés (contrat 180 000 $ + CR-01 24 000 $). CR-04 (18 000 $) n'est qu'un brouillon.
- Factures : INV-001 (60 000 $) et INV-002 (72 000 $) payées. INV-003 (54 000 $) non libérée : sa ligne CR-04 de 18 000 $ n'est pas autorisée. Facturé 186 000 $, admissible 168 000 $, payé 132 000 $.
- Priorités : dater le re-test SEC-210 ; obtenir la build qui corrige ACC-303 et son re-test ; obtenir et faire approuver le runbook final ; demander une facture corrigée ou une note de crédit de 18 000 $ ; corriger les documents périmés (plan v3, registre R-01, rapport du 21 septembre).
Les dix réponses
- Q01 — 22 octobre 2026, approuvée le 10 septembre (M04 lignes 17-24), conditionnelle depuis le 26 septembre à SEC-210, ACC-303 et au runbook (M06 ligne 11 [10:09]). Le plan v3 qui affiche encore le 15 octobre n'a pas été corrigé.
- Q02 — Le connecteur interne INT-101 (jeton expiré, erreurs 401) ; Boréal propose le 22 le 8 septembre (E05 §2). Corrigé et fermé le 17 septembre à 16:10 (INT-101, E12, M05 ligne 6). La ligne R-01 du registre est périmée.
- Q03 — Proposition : Julien Moreau, Boréal, 8 septembre 11:16 (E05 §4). Approbation : comité de direction, 10 septembre 15:22-15:25 (M04). Le 26 septembre maintient la date sans nouvelle approbation.
- Q04 — Nicolas Perron depuis le 16 septembre 2026 (E06 §2, Teams 16 sept. 08:45) ; Élodie Caron avant lui, du 7 juillet au 16 septembre.
- Q05 — 204 000 $ = 180 000 $ (contrat, p.1) + 24 000 $ (CR-01 approuvée le 14 août). CR-04 et INV-778 (ORION) exclus. Aucun avenant n'énonce ce total.
- Q06 — Ligne CR-04 de 18 000 $ facturée sans approbation (INV-003 p.1, E07, E10). Traitement : facture corrigée ou note de crédit de 18 000 $ ; le jalon 3 de 36 000 $ reste traitable après validation.
- Q07 — Canada Central (ADR-007, décision du 23 juillet). Preuve de mise en œuvre : migration vérifiée par l'équipe architecture le 27 août (M03 ligne 5). Aucun rapport détaillé de validation au corpus.
- Q08 — Non. Correctif livré le 19 septembre, mais SEC-210 reste EN VALIDATION et Sophie Lambert n'a pas donné l'acceptation (M06 [10:02]). Livré n'est pas accepté.
- Q09 — Non. ACC-301 et ACC-302 sont fermés ; ACC-303 reste ouvert : le bouton Enregistrer de la modale n'est pas atteignable au clavier (ACC-303, commentaire du 26 sept. 11:03).
- Q10 — Les trois conditions de M06 [10:09]. Sur la capture du runbook (version du 25 septembre), deux étapes manquent : l'étape 4 « Procédure de retour arrière » (TODO) et l'étape 5 « Validation fonctionnelle post-déploiement » (« À compléter »).
Chaque réponse complète, avec toutes ses sources, est dans l'application (Documentation › Réponses Q01-Q10).
Mode d'emploi
- Ouvrir :
index.htmldu ZIP joint (ouapp/dist/index.htmlaprès reconstruction) d'un double-clic, oupython -m http.server 8765 -d app/distpuis http://localhost:8765 (recherche sémantique si Ollama tourne). - Naviguer : la barre de gauche mène aux six sections ; le fil d'Ariane indique où l'on est ; chaque puce de source ouvre le document au bon passage.
- Reconstruire : placer le corpus dans
data/corpus/, puispython -m pipelineetpython app/build.py(détails dans le README du dépôt).
Outils utilisés
Python (PyMuPDF, openpyxl), Ollama en local (qwen3:8b pour les décisions au contrat JEV, qwen2.5vl:7b pour les captures, EmbeddingGemma pour la recherche), HTML, CSS et JavaScript sans framework. Claude (Anthropic) a servi au développement du code, à l'analyse du corpus et à la rédaction des réponses ; chaque citation est vérifiée automatiquement contre les sources.
Limites et incertitudes
- Aucun compte JEV : les décisions au contrat JEV sont exécutées par le modèle local. Avec une clé
TYPESAFE_API_KEY, le même contrat est envoyé à JEV. - Le classement automatique de la « nature » d'un passage reste imparfait ; les réponses, la chronologie et les contradictions affichées viennent du contenu rédigé, vérifié contre les sources.
- La recherche sémantique demande Ollama en local ; sinon, la recherche se fait par mots.
- Le corpus n'est pas publié dans le dépôt (accès réservé aux équipes).
- Informations absentes du corpus : compte rendu formel du comité du 26 septembre, dates des re-tests SEC-210 et ACC-303, date du runbook final, avenant qui énonce le plafond de 204 000 $.
Built With
- claude
- css3
- embeddinggemma
- html5
- javascript
- jev
- ollama
- openpyxl
- pymupdf
- python
- qwen2.5-vl
- qwen3
Log in or sign up for Devpost to join the conversation.