Contexte
Un plombier de démonstration reçoit des demandes imprécises. Le pack couvre tout son cycle sans qu'il touche un logiciel : il valide depuis Telegram, le reste part tout seul — estimation, créneaux de visite, devis, facture, relances, demande d'avis.
Ce que j'ai construit
- Estimation IA d'une demande : catalogue de 53 prestations, modèle en sortie JSON, quatre garde-fous déterministes, repli explicite quand la nature des travaux n'est pas reconnaissable.
- Validation par l'artisan depuis Telegram : boutons à retour instantané, routeur de callbacks, e-mail nominatif au demandeur au nom de l'artisan.
- Visite : proposition de créneau, confirmation par le demandeur d'un clic, validation de l'artisan, annulation possible jusqu'au bout — chaque étape trace une activité.
- Devis pré-rempli depuis les briques de l'estimation, catalogue avec autocomplétion, remise, conditions, envoi et acceptation en ligne.
- Acceptation → chantier lancé d'un bouton Telegram ; chantier terminé depuis le cockpit ; facture acompte puis solde, bascule automatique en retard, relances.
- Avis Google demandé au bon moment, réception simulée pour la démo, relances dues chaque semaine sur Telegram.
- Un cockpit (Worker Cloudflare : lecture, écriture, calcul) alimenté chaque matin par un feeder, un briefing matinal Telegram, un agent terrain de 35 nœuds.
- Un prompt versionné et une batterie de dix cas rejouée après chaque modification — parce qu'un modèle varie d'une exécution à l'autre.
Preuves
- En service depuis juin 2026 sur un client de démonstration (accès sur demande).
- Les 29 workflows sont listés, avec leur déclencheur et leur rôle, dans l'inventaire.
- Incident A-007 détecté par un contrôle qualité hebdomadaire automatique, corrigé, vérifié contre le code déployé.
Un incident réel, et comment je l'ai réglé
A-007 — les fourchettes absurdes
- Constat
- La même demande — un réseau de plomberie cuisine et salle de bain — donnait successivement 130–391 €, 110–181 €, puis un refus. 181 € pour un réseau complet, c'est moins qu'une journée de travail.
- Cause
- Le modèle mobilisait les briques en quantité unitaire (une heure, un mètre linéaire) ; le garde-fou G4 prenait cette somme pour un plafond fiable et écrasait dessus la borne haute — pourtant juste — du modèle. Il existait un plancher sur la borne basse, rien de symétrique sur la haute.
- Correctif
- Un ratio : si la borne haute du modèle dépasse deux fois la somme catalogue, cette somme est manifestement unitaire et n'est plus un plafond — on bascule en repli explicite. Le bloc corrigé a été extrait du workflow déployé et rejoué tel quel sur quatre exécutions réelles : quatre sur quatre.
Stack
n8n · OpenAI · Notion · Telegram · Cloudflare Pages · Cloudflare Workers · Python