Un système qui n’affiche que son état final demande qu’on lui fasse confiance. Voici plutôt la trace : chaque défaut constaté sur ce moteur, sa cause, ce que j’en ai fait, et d’où le constat est venu. Les dates portent sur les constats, pas sur le site.
01 · 2026-08-14mesure
La similarité seule s’attribuait des compétences absentes
Constat. Une annonce Java faisait citer mon passage en ESN, une annonce Swift faisait citer un projet d’interfaces IA.
Cause. Les scores de similarité de ce corpus s’écrasent entre 0,83 et 0,91 : tous les textes parlent d’informatique. Aucun seuil ne sépare « accessibilité » à 0,863 de « Swift » à 0,860.
Correctif. Un nom de technologie est une entité nommée, pas une notion : traitement par correspondance exacte, avant toute similarité. La liste hors périmètre est calculée — le lexique moins les tags du corpus — donc elle ne peut pas se désynchroniser.
33,3 % d’attribution abusive → 0 %
02 · 2026-08-14trace réseau
La page de transparence affirmait une chose fausse
Constat. Elle annonçait que le moteur d’inférence venait de ce domaine. Une trace réseau dans un vrai navigateur a montré une requête vers un CDN tiers non documenté.
Cause. La bibliothèque d’inférence va chercher ses binaires WebAssembly sur un CDN par défaut. Rien dans le code ne le disait.
Correctif. Moteur servi depuis le domaine, et la page corrigée. Une affirmation sur le réseau ne se vérifie que par une trace réseau — jamais par lecture du code.
03 · 2026-08-14annonce réelle
L’intitulé du poste était traité comme une exigence
Constat. « Développeur Full Stack JavaScript — CDI, Paris » ressortait « hors tolérance ». Le site répondait au recruteur que je ne suis pas développeur full stack.
Cause. Le jeu de tests ne contenait que des exigences déjà propres. Une annonce réelle contient aussi un titre, une ville et un type de contrat.
Correctif. Filtre d’en-tête au relevé : contrat, lieu, rémunération, intitulé.
04 · 2026-08-14mesure
Une réserve écrite dans le corpus faisait revendiquer son contraire
Constat. La phrase « je n’ai jamais encadré d’équipe » était citée comme preuve d’encadrement.
Cause. Une similarité sémantique ne comprend pas la négation : la phrase ressemble à la demande, donc elle est retenue.
Correctif. Le corpus ne contient que des affirmations positives — ce qu’il ne contient pas est déjà la réponse. Six fiches réécrites. Les réserves vivent sur les pages écrites, jamais dans ce qui est citable.
0 % → 4,3 % d’attribution abusive, puis retour à 0 %
05 · 2026-08-14mesure
Ajouter des fiches vraies dégradait le système
Constat. Vingt-deux entrées exactes et sourcées ont fait remonter l’attribution abusive.
Cause. Un corpus plus dense offre à n’importe quelle requête un voisin plus proche. Un seuil absolu dérive donc mécaniquement à mesure que le corpus grossit.
Correctif. Voir le constat suivant : c’est l’approche entière qui devait changer.
0 % → 7,1 % d’attribution abusive
06 · 2026-08-14mesure
La mesure a réfuté l’approche par seuil
Constat. Test d’une normalisation statistique censée être insensible à la taille du corpus. Ni elle ni le score brut ne séparent : dans les deux cas, le point couvert le plus faible tombe sous le point à refuser le plus fort.
Cause. La similarité sémantique ne porte pas l’information qu’on lui demandait de porter.
Correctif. Renversement : le lexique décide de la couverture, la similarité ne choisit plus que la preuve à citer. Une exigence qui nomme ce que mon corpus porte en étiquette est couverte ; la similarité sert seulement à savoir lequel de mes travaux la démontre.
7,1 % → 0 % d’attribution abusive
07 · 2026-08-14annonce réelle
Le niveau demandé était purement et simplement ignoré
Constat. « Développeur Senior React » ressortait « couvert ». Le système trouvait React et ignorait le mot Senior — il répondait à une version rétrécie de la demande.
Cause. Le niveau fait partie de l’exigence, et rien dans le corpus ne le portait.
Correctif. La séniorité est désormais reconnue et rattachée à aucune fiche — et ne le sera jamais. Je ne m’attribue pas un niveau : c’est au lecteur d’en juger.
08 · 2026-08-14annonce réelle
Le cœur du métier ressortait « hors tolérance »
Constat. « Développer et tester les fonctionnalités » et « analyser les besoins et concevoir les solutions techniques » n’étaient couverts par rien.
Cause. Mon lexique enregistrait des groupes nominaux — « tests unitaires », « conception technique » — alors que les annonces écrivent des verbes. Défaut de dictionnaire, pas de règle.
Correctif. Formes verbales ajoutées, plus une notion large « développement ». Élargir un lexique est risqué : un cas de contrôle vérifie qu’une notion large ne neutralise jamais le refus d’une technologie inconnue.
09 · 2026-08-14mesure
J’ai conclu à tort qu’un composant fonctionnait
Constat. Comparaison de deux étages de décision sur la même annonce : quatorze verdicts identiques, l’étage lourd quatre fois plus lent. J’ai failli publier « le modèle ne change rien ». En instrumentant la sortie, la vérité est apparue : le modèle n’avait pas tourné du tout, zéro ligne sur quatorze.
Cause. Le tableau affichait le mode demandé et non le mode réellement exécuté, et je ne relevais pas les motifs. Or « le modèle n’a rien changé » et « le modèle n’a pas tourné » produisent exactement le même tableau.
Correctif. L’en-tête rapporte désormais ce qui a réellement décidé, pas ce qui était coché. Et l’instrument de mesure compte explicitement les lignes arbitrées, au lieu de comparer des verdicts.
10 · 2026-08-14mesure
Un étage entier retiré faute de fonctionner
Constat. Un second étage optionnel confiait l’arbitrage à un modèle génératif tournant sur la carte graphique du visiteur. Il n’a pu être exécuté dans aucune des quatre configurations essayées : navigateur d’usine sans accélération disponible, avec accélération forcée et échec de compilation, en mode expérimental et même échec, et un second navigateur qui n’expose pas l’interface du tout.
Cause. Le support de cette interface graphique est encore inégal selon le système, le pilote et le navigateur. Sur une machine récente et bien équipée, elle demandait déjà d’activer un réglage à la main.
Correctif. Retiré. Pas désactivé ni caché : supprimé du code, avec sa dépendance d’un gigaoctet et ses modes de panne. Une fonctionnalité que son auteur ne parvient pas à faire tourner n’a rien à faire dans un portfolio, et les règles déterministes rendaient déjà les mêmes verdicts.
4 configurations essayées, 0 exécution réussie
11 · 2026-08-14suite de tests
Le correctif précédent a causé une régression
Constat. La notion large « développement » faisait ressortir « Développement d’interfaces avec Vue.js » en « couvert », en citant une fiche en cours — mon Vue s’arrête en 2021.
Cause. Une notion large allait chercher une preuve récente et faisait échapper la compétence au plafond d’ancienneté.
Correctif. Une technologie nommée prime sur une notion large pour le choix de la preuve : elle est plus spécifique. Défaut attrapé immédiatement par le jeu de régression — c’est exactement ce à quoi il sert.
12 · 2026-08-18annonce réelle
Une preuve sans rapport citée sous un verdict défendable
Constat. Sur une annonce réelle, la ligne « collaborer avec les Product Owners, DevOps et QA » recevait « partiel », appuyée sur un extrait qui parle de mon travail avec l’IA. Le verdict se discutait ; la preuve, elle, n’avait aucun rapport avec la ligne.
Cause. Deux extraits dont les scores sont proches sont tenus pour des preuves équivalentes, et c’est alors le plus récent qui est cité. Mais sur ce corpus tous les scores se tiennent à quelques millièmes : presque tout le classement devenait « équivalent », et la règle citait le premier extrait en cours venu. Elle faisait de plus échapper le verdict au plafond d’ancienneté — la vraie meilleure preuve datait de 2019 et devait le faire basculer en « daté ».
Correctif. Cette règle ne s’applique plus qu’entre extraits portant ce que l’exigence nomme, c’est-à-dire entre preuves du même point. Partout ailleurs, c’est l’extrait le mieux classé qui est cité, et rien d’autre. Aucun seuil n’a été déplacé.
verdict corrigé de « partiel » à « daté », preuve de 2019 rétablie