Étude de cas technique / Proveo

Construire un système de confiance pour photos où l'IA identifie les preuves mais ne décide jamais du verdict.

Les entrepreneurs de services vendent avec des photos avant/après. Le problème : n'importe qui peut les falsifier. Proveo avait besoin d'une couche de confiance vérifiable par conception.

Next.js + SupabaseGPT-4o VisionMoteur de provenanceArchitecture multi-modèle

Le problème des photos avant/après dans les services à domicile

Les photos avant/après sont le principal outil de vente pour les entrepreneurs de services. Elles sont aussi la chose la plus facile à falsifier. Un entrepreneur peut copier le travail de quelqu'un d'autre, le revendiquer comme le sien et construire un historique entièrement fabriqué. Les clients qui consultent un portfolio ne peuvent pas faire la différence. Il n'y a pas de métadonnées à inspecter, pas d'horodatage fiable. La réponse naïve est un filigrane ou un horodatage. Aucun ne prouve quoi que ce soit. Les filigranes peuvent être rognés, les horodatages peuvent être ajoutés en Photoshop. Le problème n'est pas l'étiquetage — c'est la preuve.

Couche 1 — Détection visuelle avec GPT-4o

La première couche IA résout un problème UX : les entrepreneurs qui téléchargent deux photos ne devraient pas avoir à étiqueter manuellement laquelle est « avant » et laquelle est « après ». GPT-4o Vision analyse les deux images simultanément et identifie laquelle montre l'état non traité et laquelle montre le résultat final. Le modèle détecte également la catégorie de service (lavage sous pression, peinture, paysagisme, etc.) et génère un titre de travail suggéré localisé dans la langue préférée de l'entrepreneur. La limitation de débit est étendue à l'espace de travail (30 requêtes/heure partagées entre tous les membres) pour éviter la multiplication des coûts IA.

Couche 2 — Le système d'état de preuve

Chaque préréglage d'amélioration qu'un entrepreneur peut appliquer à ses photos est classifié côté serveur dans l'un des trois niveaux de confiance. La classification est déterministe, pas pilotée par IA :

Niveau de confiance — Brut

Préréglage « original »

Aucun traitement appliqué. L'image est exactement ce qui est sorti de l'appareil photo. Éligible aux deux badges de confiance.

Niveau de confiance — Corrigé

bright_clean, cool_professional, job_site_clean, high_def, studio_light, definition

Corrections d'exposition, netteté ou balance des blancs qui n'altèrent pas la scène. Améliorent la lisibilité sans déformer le travail.

Niveau de confiance — Stylisé

warm, dramatic, daylight_pop, soft_glow, vivid, vintage, et 10+ autres

Traitements esthétiques qui changent l'ambiance ou l'apparence. L'éligibilité au badge de confiance est supprimée.

Le choix de conception clé : les préréglages inconnus tombent par défaut dans « stylisé ». Les nouveaux préréglages ne peuvent pas accidentellement hériter de l'éligibilité au badge. La confiance doit être accordée explicitement dans le registre côté serveur.

Couche 3 — Provenance côté client (la contrainte architecturale)

Les photos s'uploadent directement du navigateur vers Cloudinary. Le serveur Proveo ne reçoit jamais les octets du fichier — il obtient seulement l'URL Cloudinary après la fin de l'upload. Si le serveur ne voit jamais les octets, comment peut-il savoir ce qui a été uploadé ? La réponse : calculer les preuves avant l'upload. Avant que chaque photo quitte le navigateur, le client calcule : — Hash SHA-256 des octets bruts du fichier, via l'API Web Crypto (natif au navigateur) — Méthode de capture : 'guided' (prise dans l'appli), 'upload' (depuis la pellicule), ou 'import' — Horodatage de capture — depuis EXIF quand disponible, avec repli sur File.lastModified — Signal d'appareil — chaîne user-agent tronquée — ID de session de capture guidée — token aléatoire par session Ce payload de provenance signé est envoyé à l'API avec les données de comparaison. Le serveur valide chaque champ et dégrade tout ce qui est malformé vers la méthode la plus faible.

Couche 4 — L'algorithme de badge

Avec l'état de preuve et la provenance en main, le résolveur de badge effectue cinq vérifications en séquence. Toutes les cinq doivent passer pour le niveau supérieur — « Vérifié Authentique » :

Capture guidée

Les deux photos prises dans l'appli, pas depuis la pellicule

État de preuve brut

Aucune amélioration appliquée (préréglage original)

Écart de temps minimum

> 2 secondes entre avant et après

Écart de temps maximum

< 12 heures entre avant et après

Unicité SHA-256

Les octets avant et après ne sont pas identiques

Toute vérification échouée dégrade vers « Vérifié Non Filtré » ou supprime le badge. La fenêtre d'horodatage — 2 secondes minimum, 12 heures maximum — est conçue autour de la cadence réelle des chantiers. La décision de badge est entièrement déterministe. L'IA identifie les preuves ; l'algorithme décide du niveau.

La conception multi-modèle

Proveo utilise deux modèles délibérément, pour des raisons différentes : GPT-4o gère le raisonnement visuel — identifier avant vs. après, détecter la catégorie de service, générer des légendes depuis l'image composite. Claude gère toutes les tâches de langage et de raisonnement — explications d'audit de confiance, copilote d'opérations, réponses du centre d'aide, guidage d'intégration. Claude produit une prose lisible par les entrepreneurs plutôt qu'un texte IA générique. L'agent d'audit de confiance (Claude) est l'exemple le plus clair de la séparation : il lit le niveau de badge calculé et les signaux de provenance, puis explique le résultat à l'entrepreneur en langage simple. Claude interprète les preuves. Il ne les décide pas.

Ce qui a été livré

  • GPT-4o identifie automatiquement l'orientation avant/après — pas d'étiquetage manuel pour l'entrepreneur
  • Le registre d'état de preuve déterministe mappe chaque préréglage d'amélioration à un niveau de confiance ; les préréglages inconnus sont rejetés en toute sécurité
  • Le hachage SHA-256 côté client capture l'identité du fichier avant l'upload — le serveur peut vérifier des preuves qu'il n'a jamais directement reçues
  • Système de badge à deux niveaux (Vérifié Authentique, Vérifié Non Filtré) gagné par une chaîne de preuves qu'aucun modèle ne peut contourner
  • GPT-4o pour les tâches visuelles, Claude pour le raisonnement et l'explication — chaque modèle fait ce qu'il fait le mieux
  • L'agent d'audit de confiance explique l'état du badge en langage clair et indique aux entrepreneurs comment s'améliorer
L'IA identifie ce qu'il y a dans les photos. Le code déterministe décide si ces photos sont dignes de confiance. Nous n'avons jamais mélangé ces deux responsabilités.

Vous construisez quelque chose où la confiance est une fonctionnalité produit, pas juste une politique ?

C'est le type de travail d'architecture que nous faisons — des systèmes où l'IA et la logique déterministe sont chacune utilisées là où elles sont appropriées, pas de manière interchangeable.