Skip to main content
Retour aux billets
Oct. 20268 min de lecture

Swatchless : répondre à « quelle teinte me va? » avec la cliente qui la porte, vérifié contre les propres stylistes de Luxy Hair

On ne retourne pas des cheveux portés, alors les clientes en ligne commandent un anneau d'échantillons à 127,50 $ et attendent une semaine. Swatchless donne une courte liste à la styliste en deux minutes : YouCam mesure et rend chaque choix sur la cliente, Claude choisit parmi 973 vraies pièces, et le code refuse ce qui est en rupture. La teinte des stylistes de Luxy était dans la liste pour 13 personnes sur 16.

YouCam APIPerfect CorpVirtual Try-OnClaudeMCPeCommerceNext.jsHackathon
J'ai écrit ce billet pour le YouCam API Skin AI & eCommerce VTO Hackathon (Perfect Corp, Devpost, octobre 2026), et j'ai bâti Swatchless pour la même soumission. Le code, les données du banc d'essai et chaque exécution sont sur GitHub à github.com/JonathanSolvesProblems/swatchless. Le comptoir en ligne dépense des crédits d'API payants et sera retiré après le jugement, alors il n'y a pas de bouton vers une version en ligne ici; la vidéo de démo montre une consultation complète.
La revendication en une phrase : sur 16 vraies personnes que les stylistes de Luxy Hair ont photographiées puis coiffées, corrigé par la teinte que ces stylistes ont publiée, le comptoir avait leur teinte dans sa courte liste pour 13 sur 16 et en premier choix pour 8 sur 16, et YouCam a rendu 15 des 16 personnes avec les teintes choisies. Seize personnes, c'est un petit échantillon, le choix des stylistes est une bonne réponse plutôt que la seule, et avec YouCam désactivé, le premier choix concordait encore pour 8 sur 16 : nommer la teinte, c'est le travail du modèle, et ce que YouCam ajoute, c'est la cliente qui la porte avant d'acheter.
Le comptoir Swatchless : une rangée de 30 échantillons de teintes Luxy Hair en haut avec une étiquette Off Black, matched for the customer below, le titre Answer "which shade?" with the customer wearing it, et un formulaire Start a consult pour un égoportrait et une photo du dessus de la tête.
Le comptoir. En haut, les 30 teintes Luxy qu'il peut rendre; l'étiquette nomme le premier choix de la dernière consultation.

Le comptoir, un lundi à 9 h 40

Dana (un personnage composite, pas une vraie styliste) répond à la ligne « Écrivez à une styliste » d'un détaillant de cheveux en ligne. Presque chaque matin, le même message arrive : un égoportrait, une photo du dessus de la tête, et « ma raie s'élargit, quelles rallonges vont avec ma couleur? » La réponse honnête aujourd'hui, c'est un anneau d'échantillons par la poste (celui de Luxy Hair coûte 127,50 $), une semaine de livraison, et un achat qu'on ne peut pas retourner, parce que les rallonges ne sont pas retournables une fois ouvertes.

Swatchless donne à Dana une autre réponse en deux minutes environ. Elle dépose les deux photos. YouCam mesure la densité des cheveux de la cliente sur la photo du dessus de la tête et leur longueur sur l'égoportrait. Claude lit les mesures, regarde l'égoportrait et les échantillons du magasin, choisit les pièces qui valent un essai, et demande à YouCam de rendre chacune sur la cliente à partir de la propre photo produit du magasin. Il examine chaque rendu, écarte ceux qui ont changé le visage ou raté la teinte, et remet à Dana une courte liste avec la cliente qui porte chaque choix, un lien de panier vers le vrai magasin, et une réponse dans sa voix.

La page de consultation : sous What YouCam measured, l'égoportrait et la photo du dessus de la tête de la cliente à côté de deux cartes, densité 2,3 sur 4, moyenne, et longueur sous la poitrine ou plus, une note indiquant que les deux photos sont générées par IA, puis une rangée Shortlisted avec la cliente telle qu'envoyée, rendue en Off Black, un toupet Espresso Mix montré en échantillon, et rendue en Dark Brown.
YouCam lit la densité et la longueur. Claude choisit des rallonges à cause de la densité; YouCam rend les teintes sur la cliente. La cliente est un personnage composite généré par IA.

Ce que le comptoir a fait pour la cliente de démo

La cliente de démo est un personnage composite : les deux photos sont générées par IA, et chaque page qui les montre le dit. Dans l'exécution en direct du 27 octobre, YouCam a mesuré une densité moyenne, avec le cuir chevelu visible à la raie, et une longueur sous la poitrine ou plus. Claude a choisi des rallonges et un toupet pour la raie à cause de la densité, a retenu Off Black et Dark Brown de Luxy Hair et demandé à YouCam de rendre les deux sur la cliente, et a ajouté le toupet Espresso Mix d'Ellen Wille sans rendu. La page dit pourquoi : les seules photos que le magasin affiche pour ce toupet montrent une autre teinte, plus pâle, alors un rendu aurait montré la mauvaise couleur. Ensuite, il a rédigé la réponse.

La courte liste de près : la cliente telle qu'envoyée, puis rendue en Off Black et en Dark Brown de Luxy, chacune étiquetée Rendered from Luxy Hair's photo avec un bouton Add to Luxy Hair cart, et entre les deux le toupet Espresso Mix d'Ellen Wille montré seulement en échantillon, avec une note indiquant qu'aucun aperçu n'est montré parce que les photos du magasin montrent une autre teinte, plus pâle.
Ce qu'il ne peut pas montrer, il le dit : les photos de ce toupet montrent une autre teinte, alors le comptoir ne montre aucun rendu et explique pourquoi sous l'échantillon.
Sous la courte liste, une carte Reply to send avec le message rédigé qui explique chaque choix, des boutons Send from my email et Copy the reply, et un panneau replié How the desk got there: 14 steps.
La réponse part de la propre boîte de courriel de la styliste, avec un lien de panier sous chaque choix rendu.

Ce que le modèle décide, et ce que le code refuse

Claude pilote directement le serveur MCP YouCam hébergé par Perfect Corp, par le connecteur MCP d'Anthropic. Il décide quelle catégorie convient à la densité mesurée, quelles teintes essayer et quelle photo du magasin prendre comme référence; si un rendu est assez bon, doit être refait ou est écarté, après avoir examiné chacun avant de pouvoir le citer; et quand s'arrêter pour demander une meilleure photo. Le code décide du reste, et le modèle ne peut pas le contourner : un rendu cité doit être un rendu que YouCam a retourné dans cette consultation, fait à partir d'une photo du magasin de la même teinte, pour qu'un rendu d'un produit ne soit jamais montré sous un autre; un choix sans rendu doit dire pourquoi; aucun produit en double, trois articles au plus; et la variante doit être en stock sur le site du magasin à ce moment-là.

Le panneau How the desk got there déplié à côté de la réponse : densité mesurée sur la photo du dessus de la tête au niveau 2 sur 4, longueur sous la poitrine ou plus, type de cheveux non mesuré parce qu'il faut trois photos, une lecture de la couleur, et une liste Dropped, and why qui explique le toupet sans rendu et l'aperçu Dark Brown fait à partir d'une photo produit plus courte.
Chaque décision est consignée : ce que YouCam a mesuré, ce qu'il n'a pas pu mesurer et pourquoi, et chaque étape jusqu'à la courte liste.

Contre les propres stylistes de Luxy

Luxy Hair photographie de vraies personnes avant qu'elles portent ses cheveux et publie la teinte que ses stylistes leur ont mise. Cette teinte est la réponse. Le comptoir ne reçoit que la photo « avant » de Luxy, ne voit jamais cette personne comme référence, et choisit parmi les 30 teintes Luxy qui ont une photo sur mannequin fiable. Les 18 personnes ont été traitées. Pour 2 d'entre elles, chaque photo fiable de leur teinte était une photo d'elles-mêmes, alors une fois ces photos exclues, le comptoir ne pouvait pas du tout se voir proposer la teinte; ces lignes sont déclarées non proposables et ne comptent d'aucun côté. Des 16 autres, la teinte des stylistes était dans la courte liste pour 13 et en premier choix pour 8. Un choix au hasard tomberait juste environ une fois sur trente. Dans 5 des 8 premiers choix ratés, la teinte de Luxy était le deuxième choix du comptoir : Off Black avant Jet Black, Light Gray avant Dark Gray, Dark Brown avant Chocolate Brown.

La page du banc d'essai titrée The shade Luxy's own stylists chose was on the desk's shortlist for 13 of 16 people they styled, avec trois cartes : 13 sur 16 dans la courte liste, 8 sur 16 en premier choix exact, et 15 sur 16 rendues par YouCam.
Vérifié contre les propres stylistes de Luxy : leur teinte était dans la courte liste pour 13 personnes sur 16, et YouCam en a rendu 15.

Les mêmes 18 personnes ont été traitées de nouveau avec YouCam désactivé : le même modèle, la même photo et les mêmes échantillons, sans les outils YouCam. Avec YouCam désactivé, la teinte de Luxy était dans la courte liste pour 12 sur 16 et le comptoir ne pouvait montrer aucune des 16 personnes portant quoi que ce soit. Le premier choix concordait pour 8 sur 16 dans les deux cas. Avec YouCam, 15 des 16 ont été rendues; la seule photo impossible à rendre avait été prise de dos, sans visage.

Le tableau personne par personne : la photo « avant » de Luxy pour chaque personne, la teinte choisie par Luxy, le premier choix du comptoir avec YouCam et sans YouCam, plein quand il concorde et en contour quand il diffère, avec la personne 4 marquée non proposable.
Personne par personne, sur les propres photos « avant » de Luxy Hair, à côté du même comptoir sans YouCam. Une teinte non proposable ne compte d'aucun côté.

Après la réponse, il continue de surveiller

Un choix en rupture de stock est refusé et va sur la liste d'attente. Une tâche quotidienne relit le stock du magasin et, quand la pièce revient, la rend de nouveau sur la cliente et rédige le suivi que la styliste enverra. Le catalogue derrière tout ça compte 973 rallonges, toupets, postiches et couvre-chefs en 230 teintes, tirés des flux de produits publics de Luxy Hair, Halo Couture et Ellen Wille, avec chaque photo produit classée une fois pour que l'agent ne se voie proposer que des photos de face utilisables par l'essayage. Swatchless n'est affilié à aucun de ces magasins.

La page Watch list, The shades a customer is waiting on, qui explique que les choix en rupture de stock sont refusés et revérifiés chaque jour, avec une rangée des teintes recommandées jusqu'ici : Off Black, Espresso Mix, Dark Brown et Jet Black, toutes en stock à la dernière vérification.
Après la réponse, le comptoir continue : un choix en rupture est refusé, son stock relu chaque jour, et il est rendu de nouveau quand le magasin l'a.

Ce qui n'est pas revendiqué

Le 13 sur 16 est corrigé par les stylistes de Luxy, pas par moi, mais seize personnes, c'est un petit banc d'essai, et la teinte des stylistes est le choix d'une équipe plutôt que la seule bonne réponse. Un écart d'une personne entre l'exécution avec YouCam et sans (13 contre 12 dans la courte liste) est dans ce qu'un échantillon de cette taille peut faire varier par hasard, et le premier choix concordait pour 8 sur 16 avec ou sans, alors je ne prétends pas que YouCam choisit de meilleures teintes; il mesure la densité qui décide entre rallonges et longueur, met la teinte sur la cliente avant qu'elle achète des cheveux qu'elle ne peut pas retourner, et donne au comptoir un rendu à rejeter quand il change le visage. Un rendu montre le résultat final, pas la façon dont une pièce s'attache ni ce qu'elle cache de la raie, et le site le dit sous chaque courte liste. La densité demande une photo du dessus de la tête et le type de cheveux, trois photos; sans elles, le comptoir dit ce qu'il n'a pas pu mesurer au lieu de deviner. La cliente de démo est un personnage composite généré par IA, et la styliste de l'histoire est aussi un personnage composite.

Projet associé

Swatchless: a hair retailer's stylist answers "which shade matches me?" with the customer wearing it, measured and rendered by YouCam, picked by Claude from 973 real pieces

Voir le projet