Girafe
Rendre visible les initiatives d’un territoire et créer des liens.
Le projet
Girafe est une plateforme publique où des associations, des institutions, des chercheurs et des habitants déposent leurs projets et découvrent qui, autour d’eux, peut y contribuer. Chaque projet liste ce qu’il cherche et ce qu’il peut apporter, afin d’encourager la complémentarité entre les projets.
Le site existait déjà quand la mission a commencé. Le cadrage s’est fait avec le président, Éric Firley, et a couvert toute la refonte : clarifier ce que la plateforme devait faire, en tirer le cahier des charges, puis arbitrer avec lui, lot après lot, ce qui passait en premier.
Quatre mois de travail, sur un site qui n’a jamais cessé de tourner : chaque lot passe par une préproduction, s’y vérifie, puis part en ligne.
Créer un projet en le racontant
Pour s’inscrire, pas de formulaire : on décrit ce qu’on veut faire, l’assistant pose des questions et accompagne la personne dans la clarification de son projet, puis propose un récapitulatif de l’échange avant publication.
L’inscription est intégrée à ce même parcours. La création du compte, les consentements et l’abonnement à la lettre d’information sont des étapes de la conversation, pas un formulaire séparé qu’il faudrait remplir avant ou après. Une structure qui vient se présenter suit une variante du même chemin.
Le chatbot d’origine tenait dans un seul fichier où l’affichage, l’état, les appels réseau et la logique de chaque étape étaient mêlés. Il a été redécoupé en modules déclarés dans un registre, avec un enchaînement piloté par des données plutôt qu’écrit en dur : ajouter une étape — un consentement, une inscription, un formulaire structure — revient à déclarer un module, et l’ordre se change sans toucher au moteur.
Deux défauts de l’assistant ont demandé plus de travail que le reste : il ne s’arrêtait jamais, et il relançait à côté de ce qu’on venait d’écrire. La clôture de la conversation est désormais garantie côté serveur, quoi que réponde le modèle.
Une initiative, et les projets qui s’y rattachent
La page ci-dessous est celle d’une initiative : un pilote public, animé par quelqu’un qui a déjà une communauté. Elle a sa page, son chatbot unique et personnalisable par le porteur de l’initiative, et les projets qui y naissent lui restent rattachés — visibles depuis l’initiative comme depuis le projet.
On y lit l’intention du porteur, ce qu’il cherche et ce qu’il peut apporter, puis quatre façons de participer, pensées comme autant de niveaux d’engagement : suivre l’avancée, commenter, contacter, proposer un projet en lien.
Les fonctionnalités de cette page ont été définies avec les deux porteurs d’initiative, à partir de ce que leur mission exigeait d’eux. Ce qu’ils avaient à faire dictait ce que le site devait leur donner : une audience qu’ils peuvent tenir informée par des actualités, des retours publics qu’ils modèrent, des contacts directs, et des projets qui viennent se greffer sur le leur. Ceux-là leur arrivent en brouillon — ils les relisent avant qu’ils rejoignent la carte.
Leur poste de travail a été construit en même temps : un rôle dédié dans le back-office WordPress, un courriel dès qu’une personne signale son intérêt, un chatbot qu’ils règlent eux-mêmes, et les actualités qui partent d’elles-mêmes à celles et ceux qui suivent l’initiative.
Sous le titre, une ligne de compteurs donne accès à ce que l’initiative a produit : la discussion se déplie sur place, les projets rattachés et les actualités mènent à leur section.
La carte
On filtre par type de projet et par enjeu, on ouvre un point, on va sur la fiche ou on écrit au porteur sans quitter la carte.
Les fiches de la carte ont été refaites. Au clic, une carte réduite : la photo, le titre, un résumé court et deux actions. Pour qui veut en savoir plus, une vue développée donne les besoins, les enjeux et le lien vers l’initiative rattachée si c’est le cas.
Chaque projet a aussi sa propre adresse publique, partageable et référençable, avec une image de partage fabriquée depuis la carte. Un projet peut donc circuler hors de la plateforme — dans un courriel, sur un réseau social, dans la lettre d’une collectivité — sans perdre ni son contexte ni son point sur la carte.
Le même écran, avant et après
L’ancienne entrée demandait de se décrire soi, et concluait par « Créer mon portrait ». Le vocabulaire — prélude, révélez-vous, portrait, planet — demandait d’être traduit avant d’être compris, et le panneau de discussion restait vide tant qu’on n’avait pas deviné par où commencer.
Le fond du problème n’était pas le ton. La plateforme fabriquait des portraits de personnes, alors que ce qu’elle met en relation, ce sont des projets. Le profil a été réduit au minimum et le projet est devenu l’objet central : c’est lui qui porte les besoins, l’offre, les rattachements, les échanges et la place sur la carte. Un seul objet à comprendre pour le visiteur, un seul à modérer pour l’équipe.
Le même chantier a ramené les instructions données au modèle de 25 000 à 2 000 caractères, et déplacé l’hébergement vers un hébergeur souverain qui ne journalise pas la navigation.
Ce qu’il a fallu construire autour
La sécurité, avant tout le reste. La version en place exposait la clé du fournisseur d’IA, laissait plusieurs routes publiques sans jeton ni limite de débit, et permettait de détourner l’import d’images pour faire appeler au serveur des adresses qu’il était seul à joindre. Six correctifs livrés avant d’ajouter la moindre fonctionnalité.
Les comptes n’existaient pas. Un rôle dédié, une connexion par lien envoyé par courriel, et la reprise d’une session commencée sur un autre appareil — parce que les gens lisent leurs mails sur leur téléphone et remplissent leurs projets sur un ordinateur.
Le suivi d’une initiative a demandé de trancher plusieurs fois. Un abonné n’est pas un compte : créer un utilisateur à chaque clic aurait rempli la base de comptes fantômes et alourdi toute demande de suppression. Les commentaires passent par le système natif de WordPress, avec sa file de modération et ses outils déjà éprouvés, plutôt qu’une file maison. Les notifications sont regroupées en un courriel quotidien par abonné et par projet, et la file d’attente ne stocke que des identifiants — jamais du texte : une actualité corrigée part corrigée, une actualité supprimée ne part pas.
Le fournisseur d’IA a été changé. Les conversations partaient chez OpenAI ; elles passent maintenant par EdenAI, derrière une couche unique qui isole le reste du code du fournisseur choisi. Girafe atteint ainsi des modèles servis depuis la France, dans un cadre conforme au règlement européen — et peut en changer sans toucher au chatbot.
Le site est bilingue, et ne l’était qu’à moitié. Environ cent soixante textes d’interface étaient écrits en dur dans le code, en français : ils s’affichaient tels quels sur la version anglaise — l’écran d’accueil, les formulaires d’inscription, les messages d’erreur, les relances du chatbot. Ils ont été extraits, rassemblés et traduits, et toute chaîne ajoutée depuis passe par le même mécanisme.
Le site entier a été mis en conformité RGAA — contrastes, navigation au clavier, dialogues annoncés aux lecteurs d’écran, cibles tactiles. Les trois fenêtres de la section « Participer » avaient chacune leur gabarit et leur comportement ; elles partagent maintenant le même, avec le piège à focus, la fermeture par Échap et le retour au bouton d’origine.
Et une ligne de confidentialité tenue de bout en bout. Aucun contact direct entre membres : tout passe par la plateforme, y compris depuis les courriels groupés. L’adresse exacte d’un projet n’est publiée que si la case est cochée, et elle est décochée par défaut — une adresse publiée ne se retire pas des copies déjà faites.
Ce qui a été livré
- CadrageCahier des charges établi avec le président ; fonctionnalités et poste de travail des pilotes définis avec les deux porteurs d’initiative.
- SécuritéSix failles de la version en place fermées avant tout ajout : clé exposée, routes publiques ouvertes, import d’images détournable.
- ComptesRôle dédié, connexion par lien courriel, reprise de session d’un appareil à l’autre.
- ChatbotArchitecture modulaire, moteur conversationnel v3, prompts divisés par douze, clôture fiable.
- Pivot produitDu portrait de personne au projet : profil minimal, projet portant besoins, offre, liens et échanges.
- PilotesPage d’initiative, contexte de mission injecté côté serveur, conversation anonyme plafonnée, publication en brouillon rattaché.
- Pages publiquesUne adresse par projet, données structurées, image de partage générée depuis la carte.
- SuiviAbonnement sans compte, commentaires modérés, notification quotidienne regroupée.
- ConfidentialitéContacts toujours via la plateforme, adresse exacte publiée seulement sur demande.
- CarteFiltres par type et par enjeu, fiches unifiées, saisie d’adresse assistée.
- AccessibilitéMise en conformité RGAA du site entier : contrastes, clavier, dialogues annoncés, cibles tactiles.
- MultilingueFrançais et anglais sur tout le parcours, y compris les libellés générés.
- LivraisonPréproduction dédiée, déploiement ciblé après validation, journal de session à chaque mise en ligne.
WordPress extensions maison, PHP et JS sans étape de compilation · Mapbox GL · MySQL · Polylang · modèle de langue derrière une couche fournisseur · envois groupés isolés des courriels critiques