Mode
Generation Engagee
Voix socio-educative du mouvement jeunesse. Corpus etanche dedie. Le porteur principal du projet.
Politist est un assistant conversationnel IA pour comprendre la politique belge. Trois modes commutables (Generation Engagee, Les Engages, Comparateur neutre par defaut), trois audiences (citoyen, militant, cadre), bilingue FR/NL. Conception design system, UX, architecture, developpement, deploiement — bout en bout.
Acces pilote derriere Cloudflare Access (code PIN par email). Sur demande.
Un programme de parti fait 200+ pages. Peu de gens le lisent. Les militants doivent repondre a des questions precises sur des themes qu'ils ne maitrisent pas tous. Les journalistes confondent programme de parti et accord de coalition. La desinformation prospere quand l'information officielle est illisible.
Politist repond a ces quatre problemes par un assistant IA qui cite ou se tait. Toute affirmation factuelle est ancree dans un extrait du corpus officiel, avec source cliquable. Aucun chiffre invente. Aucune position attribuee. Aucune recommandation de vote.
Projet porte d'abord par Generation Engagee (mouvement jeunesse), puis Les Engages — par et pour eux, mais a fonctionnement operationnellement neutre : le mode par defaut est le Comparateur.
Charte extraite du theme WordPress officiel gblmaster et de la feuille Adobe Typekit
ozc0ygx. Palette, typographie, espacements, animations — tout est verifie
contre lesengages.be plutot que reinvente.
Decider demain.
Mode pedagogique.
Un assistant qui cite ses sources, distingue ce que le parti promet de ce qu'il fait, refuse de recommander un vote.
PROGRAMME · 2024 · P.142
Chaque conversation est routee par un orchestrator qui detecte le mode (Generation Engagee, Les Engages, Comparateur neutre), l'audience (citoyen, militant, cadre), la langue (FR/NL), le theme et l'intention. Un prompt persona dedie genere la reponse, avec garde-fous regex. Le mode Comparateur est celui par defaut — la posture neutre prime.
Mode
Generation Engagee
Voix socio-educative du mouvement jeunesse. Corpus etanche dedie. Le porteur principal du projet.
Mode
Les Engages
Assistant pedagogique partisan. Repond depuis le programme, peut contre-argumenter en restant factuel. ADN centre humaniste, Renew Europe.
Mode · defaut
Comparateur
Voix la plus neutre possible, multi-partis. Met cote a cote les positions sur un meme theme. Distingue programme de parti et accord de coalition. Pas de recommandation de vote.
Citoyen
150 — 300 mots
Vulgarise, sans jargon. Pour comprendre rapidement, sans bagage politique requis.
Militant
300 — 500 mots
Argumentaire structure, contre-arguments anticipes. Pour preparer un debat ou une reunion.
Cadre
500 — 800 mots
Synthese dense, references chiffrees, articulation programme/coalition/agenda parlementaire.
Fonctionnalite · live
On soumet un document (PDF, DOCX, texte, URL, ≤ 10 Mo) et l'assistant le confronte aux sources officielles, passage par passage. Chaque affirmation ressort avec un statut : Confirme, Contredit, Complete ou Hors corpus. Ephemere — rien n'est stocke. Garde-fous SSRF + anti-denigrement inclus.
Pour ancrer le design dans une lignee plutot que de l'inventer ex nihilo, j'ai pioche 5 designers et 5 philosophes dans DesignersAtlas. Chaque reference apporte une regle concrete. Ces 10 noms ne servent pas a copier (on n'imite pas la NYC Subway Map). Ils servent de boussole quand une decision est ambigue.
Grilles strictes, typographie noble. "Less is more" applique a une interface politique : marges genereuses, hierarchie claire pour rendre lisible la complexite.
Sources affichees comme dans un appareil scientifique. Badges PROGRAMME · 2024 · P.142 mono uppercase. Confiance par la precision.
Modernisme humaniste, design pour tous. Aucune dependance lourde, vanilla JS pur, code accessible — coherent avec l'economie sociale du parti.
Pictogrammes JO Munich 1972. Iconographie en mode service public. Le mode Comparateur s'inspire de cette neutralite bienveillante.
"Emptiness as design" — l'espace n'est pas absence de contenu, c'est respect du destinataire. Vide spacieux. Le citoyen doit pouvoir penser dans l'interface.
Honorer la pluralite des positions politiques. Le mode Comparateur traite chaque parti avec le meme soin, sans hierarchie visuelle implicite.
"Que sais-je ?" Honnetete quand on ne sait pas. Les reponses sans source disent "je n'ai pas de position officielle verifiee" plutot que d'inventer.
Democratie de la raison, joie active. Ton positif sans naivete dans le copywriting des erreurs, suggestions, refus de garde-fous. Pas de moralisation.
Rectification du sens (zhèng míng). On dit "Les Engages" (post-2022), pas "cdH". On dit "Renew Europe" (post-juin 2024), pas "PPE". Lexique = acte civique.
Stoicisme applique. Calme dans les animations : pas d'effet ressort, pas de bounce. Toute transition est cubic-bezier(0.4, 0, 0.2, 1), jamais "spring".
01
Toute affirmation factuelle ancree dans une source du corpus, avec extrait cliquable. Pas de chiffre invente.
02
Les autres partis sont decrits avec leurs propres mots. Insultes, doxxing, attaques personnelles bloques par garde-fous regex FR/NL.
03
Distinction systematique entre position du parti et compromis d'accord gouvernemental (4 niveaux : federal, wallon, FWB, bruxellois).
04
Disclaimer IA permanent, sources transparentes, pas de profilage par opinion. Conversations locales par defaut, cloud opt-in.
05
Le Vlaams Belang est indexe pour la comparaison factuelle, mais jamais cite verbatim sur les passages sensibles, toujours contextualise, et sa charte graphique n'est pas reproduite (chip grise, pas leur jaune).
Choix volontaire : zero LangChain, zero LlamaIndex, zero React. RAG ecrit a la main, vanilla JS pur cote front. Moins de surface d'attaque, controle total, deployable sur un mini-PC.
Le moteur cote serveur : il recoit la question, orchestre la recherche et la redaction, et renvoie la reponse.
L'interface visible : ecrite sans framework, elle reste legere, rapide a charger et facile a maintenir.
La chaine qui transforme un document brut (PDF, page web) en extraits propres, decoupes et etiquetes, prets pour la recherche.
La mise en production et le maintien en service : comment l'app reste accessible, protegee et fiable au quotidien.
Aucune reponse n'est generee « de tete ». Chaque message passe par un pipeline de recuperation (RAG — Retrieval-Augmented Generation) ecrit a la main, sans LangChain ni LlamaIndex. Le modele ne voit que des extraits reels du corpus, et doit citer ses sources.
Un premier passage detecte le mode (Engages / Comparateur), les partis cibles, l'audience (citoyen / militant / cadre), la langue (FR/NL) et le theme. Tout le reste en decoule.
Ollama (local sur le mini-PC, modele nomic-embed-text:v1.5) transforme la
question en un vecteur de 768 dimensions qui capture le sens, pas les mots.
Sur 5 299 chunks indexes, similarite cosinus. Passe 1 stricte (parti + langue + theme, seuil 0.30) ; passe 2 relachee si vide (parti + langue, seuil 0.20). Les filtres expliquent pourquoi le mode Engages ne renvoie pas de chunks d'un autre parti.
On garde le top-6. Un reranker cross-encoder (bge-reranker-v2-m3) a ete
mesure : gain reel de +10% (MRR 0.66 → 0.725), mais latence
de 80 ms a ~20 s sur CPU. Desactive en prod, reserve aux
benchmarks offline / futur GPU. Mesure, pas intuition.
Les 6 extraits + le persona + la question partent vers glm-5.2:cloud
(Ollama Cloud, routage par tache). Regle d'or imposee par le prompt : si l'info n'est pas
dans les extraits, l'assistant le dit plutot que d'inventer.
Lire le score (similarite cosinus)
Chaque source est cliquable : metadata complete (parti, type, date, langue, score) + le chunk integral, pas juste l'extrait.
Chaque mode croise a chaque audience donne un prompt persona distinct. L'orchestrator en choisit un par conversation. La longueur, le ton et la structure changent — jamais l'exigence de citation.
150 — 300 mots
Vulgarise depuis le programme, sans jargon. Comprendre vite.
300 — 500 mots
Argumentaire structure, contre-arguments anticipes. Preparer un debat.
500 — 800 mots
Synthese dense, articulation programme / coalition / agenda parlementaire.
150 — 300 mots
Voix neutre. Met les positions cote a cote, sans pencher.
300 — 500 mots
Comparaison multi-partis structuree sur un meme theme.
500 — 800 mots
Analyse dense. Distingue programme de parti et accord de coalition.
Comment ces personas sont fabriques
Plutot qu'un prompt fige par case, chaque persona est compose a la volee a partir de deux briques independantes — on change un reglage a un seul endroit, jamais 9.
Identite, posture et corpus interroge. Le mode Engages parle programme ; le Comparateur reste neutre. Ajouter un mode = ajouter une brique, pas reecrire trois prompts.
Longueur et registre uniquement : Citoyen (vulgarise, 150–300 mots), Militant (argumente, 300–500), Cadre (dense, 500–800). Independante du mode.
Etat reel de l'instance live au moment de la redaction — pas des estimations.
La matiere premiere : les documents officiels decoupes en petits morceaux (chunks) que l'IA peut retrouver. Chaque mode a son propre lot etanche, pour ne jamais melanger les voix.
Comment on retrouve les bons extraits. La question est traduite en vecteur (une empreinte de sens), puis comparee aux morceaux du corpus pour ne garder que les six plus proches.
La redaction de la reponse. Le modele ne voit que les six extraits retrouves — jamais « de tete » — et des garde-fous filtrent l'entree comme la sortie.
Ce qui prouve que ca marche et que ca tient. Des tests automatises, une evaluation chiffree de la pertinence, et un hebergement maison controle de bout en bout.
Ces chantiers ne sont pas encore live — ils sont en cours ou planifies. Ils figurent ici pour montrer la trajectoire, pas pour la faire passer pour l'existant.
Deux corpus distincts — Generation Engagee et Les Engages — jamais melanges au retrieval ni a la restitution, chacun avec sa propre hierarchie de sources.
Graduation primaire / secondaire / tertiaire visible dans chaque citation, plus la datation de chaque source pour situer la fraicheur d'une position.
Ingestion des votes nominatifs federaux sur 24 mois — la donnee la plus irrefutable : « le parti X a vote oui/non le Z ».
Extension a la Communaute germanophone apres le pilote, pour couvrir les trois langues nationales belges.
L'app est derriere Cloudflare Access (acces pilote sur invitation).
Acces pilote ou demo sur demande : [email protected]