Aller au contenu

Comment ça marche

L’assistant a pour consigne de ne répondre qu’à partir de fiches sur Mathis. Voici comment, en version courte puis en version pour un CTO, et comment le site anonymise les questions qu’il garde.

La version courte

L’assistant s’appuie sur des fiches qui décrivent le parcours de Mathis, ses projets et sa façon de travailler. Seules les fiches relues par Mathis lui sont confiées. Quand vous posez une question, il la reçoit avec ces fiches et a pour consigne de ne répondre qu’à partir d’elles. Sa réponse s’affiche au fil de l’écriture. Quand elle s’appuie sur des fiches, le bouton « Sources » montre celles qu’il cite. Les esquives, ces réponses prévues pour les questions sensibles comme le salaire, n’ont pas de source : leur fiche n’est jamais affichée. Si l’information n’est dans aucune fiche, il a pour règle de le dire et de vous renvoyer vers Mathis sur LinkedIn. Le site garde vos questions 90 jours, une fois anonymisées : la page Confidentialité dit exactement ce qu’il en garde.

La version pour un CTO

Le site est une application Astro, où seul le chat est un îlot React. Les fiches sont des fichiers Markdown versionnés avec le code, chacune avec un statut dans son en-tête : le serveur ne charge que celles marquées relu, et écarte toute fiche dont l’en-tête est invalide. Pas de base vectorielle : à chaque question, les consignes et toutes ces fiches partent entières dans un appel au modèle Claude Sonnet 5.5 d’Anthropic, toujours dans le même ordre, avec un point de cache en fin de préfixe pour que le prompt caching d’Anthropic le resserve d’une question à l’autre. Si Anthropic refuse la requête, un modèle de repli prend le relais. La réponse revient en streaming, morceau par morceau.

Le détail des mises en production, mois par mois, ne part pas avec ces fiches : l’assistant le cherche par mots-clés dans des fiches annexes, relues elles aussi, deux fois au plus par question, et le serveur lui rend au plus cinq extraits courts, ou les titres des mois demandés, présentés comme des données et non comme des consignes. En fin de réponse, il peut proposer jusqu’à trois questions de suivi : le serveur les retire du texte, écarte celles qui sont trop longues, contiennent un lien ou touchent un sujet sensible, et le site les affiche sous la réponse, prêtes à être posées d’un clic.

Le modèle rédige, le code décide : un filtre côté serveur retire du flux tout lien hors d’une liste blanche (LinkedIn, ce site et celui de son entreprise), les sources affichées sont vérifiées contre les fiches réellement chargées, et le serveur plafonne la longueur des questions, des réponses et de l’historique transmis. Une limite par adresse IP, gardée en mémoire, et un plafond quotidien de réponses pour tout le site tiennent la facture en laisse. Chaque question est gardée 90 jours dans une base SQLite sur le serveur, une fois anonymisée, sans la réponse ni le reste de la conversation.

Comment une question est anonymisée

Avant d’écrire une question dans son journal, le serveur la fait passer par un anonymiseur, sans l’envoyer à un autre service. Il travaille en trois couches. D’abord, des règles écrites pour les formats français repèrent les adresses de courriel, les numéros de téléphone, les IBAN, les numéros de sécurité sociale, les numéros SIRET, les numéros de carte, les adresses IP, les liens et les adresses postales. Ensuite, une liste des prénoms courants, tirée du fichier des prénoms de l’INSEE, repère un prénom et le nom de famille qui le suit ; une autre règle repère le nom qui suit une civilité, comme « Mme » ou « Dr ». Enfin, Rampart, un petit modèle de détection publié par National Design Studio, lit la phrase entière et repère ce qu’une règle ne peut pas prévoir : des noms, des adresses, des identifiants écrits autrement. Tout ce qu’elles trouvent est remplacé par une étiquette, comme [NOM] ou [COURRIEL]. Comme les noms publics, quelques mots courants que le modèle prend parfois pour des noms, tel « fait », restent lisibles, à condition d’être écrits en minuscules ou en début de phrase.

Une courte liste blanche laisse lisibles les noms déjà publics sur ce site, comme Mathis, Angel Start ou Kiwiid : sans elle, le journal ne dirait plus de qui parle la question. Si l’anonymiseur tombe en erreur, si son modèle manque ou s’il met plus de cinq secondes, la question n’est pas écrite du tout, et jamais le texte brut à sa place. Il tourne après la réponse, pas avant.

Un exemple, sur une question inventée : le nom, l’adresse de courriel et le numéro sont fictifs. Un visiteur tape :

Mon frère Antoine Roux veut contacter Mathis, son mail : antoine.roux@example.com, son tel 0033 1 99 00 12 34

Le journal en garde :

Mon frère [NOM] veut contacter Mathis, son mail : [COURRIEL], son tel [TÉLÉPHONE]

La méthode a ses limites. D’après ses auteurs, Rampart laisse passer environ une donnée personnelle sur 64 sur leur jeu de test, soit un rappel publié de 98,4 %. À l’inverse, l’anonymiseur masque parfois des mots qui n’en sont pas : dans « Rose est sa couleur préférée ? », il remplace « Rose » par [NOM]. Le journal n’est donc pas anonyme à coup sûr, et mieux vaut ne rien écrire de personnel dans une question. Les licences de Rampart et de la liste des prénoms sont citées dans les mentions légales.

Poser une question