Un jour j’ai demandé à l’agent de dériver la palette du site depuis le logo du client. Le client n’avait pas de logo exploitable. L’agent n’a pas bloqué, il n’a pas demandé. Il a conclu que la marque n’avait aucune signature chromatique particulière, et il a inventé une palette à partir des photos de la page d’accueil. L’agent travaille dans une chaîne que je monte depuis juin 2026 : elle lit le site existant d’un client et en dérive des prototypes de refonte, que je départage ensuite.

Le résultat était joli. Il n’avait aucun rapport avec la marque.

Je posais la question à la mauvaise chose : la couleur d’un logo se mesure.

Trois questions qui n’auraient jamais dû être des prompts

Le tri est simple. Si deux personnes compétentes qui regardent la même donnée doivent tomber sur la même réponse, c’est un calcul. Trois cas sont sortis du prompt pour devenir des scripts.

La couleur de marque, d’abord. On ignore tout ce qui ne porte pas d’identité, les pixels trop transparents, les quasi-blancs, les quasi-noirs, les gris, puis on prend la teinte dominante par quantification. Les seuils sont écrits, discutables, et surtout stables : saturation minimale à 0,22, luminance entre 0,06 et 0,94. Le même logo rend toujours la même couleur.

Le tri des pixels d'un logo, par saturation et par luminance En haut, une bande en trait pointillé, portant en son centre le libellé « les pixels trop transparents ». En dessous, un grand rectangle de mesure : la saturation court de gauche à droite, la luminance de bas en haut. Trois traits en accent le découpent, un trait vertical au quart gauche marqué 0,22 sous le rectangle, un trait horizontal marqué 0,94 tout près du bord haut, un trait horizontal marqué 0,06 tout près du bord bas. La colonne étroite à gauche du trait vertical porte le libellé « les gris ». La bande mince du haut porte « les quasi-blancs » à sa gauche, celle du bas « les quasi-noirs ». La grande zone que les trois traits délimitent, en haut à droite du trait vertical, est teintée en accent. Une flèche en descend vers une boîte portant « la teinte dominante ». LA COULEUR DE MARQUE LES SEUILS SONT ÉCRITS les pixels trop transparents LUMINANCE les quasi-blancs les quasi-noirs les gris 0,94 0,06 0,22 SATURATION la teinte dominante
La couleur de marque se mesure sur ce qui reste après ces exclusions.

Le secteur d’activité ensuite, par un score sur les mots du contenu réel du client, les termes forts comptant triple et les termes courants pour un. Et l’exploitabilité des images enfin, par un plancher de largeur selon le rôle : un logo sous 200 px, un visuel de hero sous 1 200 px, c’est flou à l’affichage prévu.

Aucun des trois n’appelle un modèle. Et les trois peuvent être relancés sur deux mois d’archives pour vérifier qu’ils n’ont pas dérivé.

Le meilleur résultat d’un détecteur, c’est « rien »

Un logo strictement noir et blanc n’a pas de couleur de marque. Le script brand-color.mjs pouvait rendre un gris moyen, techniquement exact et complètement faux. Il rend null, et c’est cette absence qui déclenche la bonne décision en aval : un style monochrome, choisi, plutôt qu’une couleur inventée.

Même logique sur le secteur, avec deux garde-fous plutôt qu’un, parce qu’un mauvais secteur est pire que pas de secteur : il commande des exigences métier fausses et un ordre d’argumentation à contresens, que plus personne ne viendra corriger ensuite. Un seuil de 5 points, sous lequel on reste en profil générique. Un écart minimal de 3 points avec le second, sous lequel on déclare l’ambiguïté au lieu de trancher.

Une détection ambiguë journalise son abstention avec les deux têtes de classement, et un humain tranche. Le cas nominal, lui, reste muet, ni écriture ni ligne de log. Un outil qui parle quand il hésite et se tait quand il sait est un outil qu’on peut laisser tourner.

Les deux garde-fous du classement et leurs trois issues Un axe horizontal fléché vers la droite, nommé « un score » à son départ, coupé par deux traits verticaux en accent. Au-dessus du premier trait sont écrits « un seuil de » puis « 5 points » ; au-dessus du second, « un écart minimal de » puis « 3 points ». Sous chaque trait, une flèche descend vers une boîte : sous le premier, une boîte portant « profil générique » ; sous le second, une boîte portant « l'ambiguïté » puis « un humain tranche ». La pointe de l'axe entre dans une troisième boîte, posée à droite au niveau de l'axe, qui porte « le cas nominal » puis « reste muet ». LE SECTEUR D'ACTIVITÉ DEUX GARDE-FOUS PLUTÔT QU'UN un seuil de un écart minimal de 5 points 3 points un score le cas nominal reste muet profil générique l'ambiguïté un humain tranche
Trois issues, et celle du milieu est de ne pas trancher.

Le piège du mot entier

Les termes sont cherchés en mot entier. Sans cette garde, « coach » se déclenche sur « coaching », et le cas qui m’a fait rire jaune, « photo » se déclenche sur « photocopie ». Un imprimeur classé photographe, avec les exigences métier d’un photographe et un site qui montre avant de parler.

Un détecteur déterministe est fiable quand ses erreurs sont reproductibles, donc corrigeables. C’est la différence pratique avec un modèle : je peux écrire un test qui échoue sur « photocopie », je ne peux pas écrire un test qui échoue sur une intuition.

Le catalogue entre dans le prompt

La détection rattrapait après coup un problème dont la cause était en amont. Le prompt qui demandait à l’agent de remplir la fiche client ne mentionnait même pas le champ « secteur » dans sa liste. L’agent le complétait donc de mémoire, avec des mots qui n’existaient nulle part dans le catalogue.

Le correctif tient en une phrase : le catalogue réel est injecté dans le prompt, lu sur disque au moment du lancement. L’agent choisit dans une liste qui existe au lieu d’inventer une étiquette. Trois consignes l’accompagnent, toutes tirées d’erreurs constatées. Choisir sur ce que le client fait. Trancher sur le visiteur quand un métier relève de deux profils. Laisser le champ vide plutôt qu’approximer.

C’est devenu une règle générale de la chaîne. Tout ce qui est connu du système, le catalogue des secteurs, les styles déjà attribués aux autres clients, les images réellement présentes, est donné à l’agent, jamais deviné par lui.

Quand la mesure est juste et le transport cassé

Le brief de direction artistique rend un tableau de couleurs, chacune nommée par le rôle qu’elle alimente. Une entrée manquait à la table des libellés : l’encre, la couleur du texte courant. Résultat, tous les briefs générés contenaient une ligne sans nom en face d’un code hexadécimal. Le générateur découvrait une couleur sombre sans emploi. Sur un client, il l’a prise pour une couleur de panneau et en a peint des sections entières. La page était brune, terne, et personne ne comprenait pourquoi.

J’en ai tiré une phrase que j’ai laissée en commentaire dans le code : une couleur sans nom finit toujours par servir à tort.