Inventaire Vocal
Un outil qui permet à un traiteur de dicter son inventaire à voix haute sur Telegram, et de recevoir en retour un export Google Sheets structuré, avec les prix, en moins de 15 secondes.
Le contexte
En restauration, l'inventaire est une tâche qu'on fait souvent, qu'on n'aime pas faire, et qu'on fait quand même parce qu'on ne peut pas s'en passer. C'est long, répétitif, sujet aux erreurs. Il faut ouvrir un fichier, retrouver les bons onglets, saisir les quantités une à une, vérifier les prix fournisseurs - et recommencer à chaque session.
Le problème que j'ai voulu résoudre est simple : et si on pouvait dicter l'inventaire comme on compte à voix haute, et laisser la machine faire le reste ?
L'approche
J'ai commencé par cartographier ce que fait un inventaire manuellement, étape par étape : on compte, on note, on cherche le produit dans un catalogue, on récupère le prix, on entre tout dans une feuille. Autant d'étapes qui peuvent être automatisées, à condition de bien définir les règles.
La vraie difficulté n'était pas forcément la transcription, l'IA s'en charge très bien. C'était ce qu'on appelle le matching sémantique : quand quelqu'un dit "mayo", il peut vouloir dire mayonnaise. Mais "maillot" aussi se prononce presque pareil. Sans contexte, impossible de trancher.
La solution : donner ce contexte en amont. Le prompt système précise qu'on est dans le domaine de la restauration, et le cadencier (la liste des produits réels utilisés) est fourni au modèle avant qu'il commence à matcher. L'IA ne cherche pas dans le dictionnaire. Elle cherche dans ce catalogue précis, pour ce type d'établissement. "Mayo" devient donc automatiquement mayonnaise, parce que maillot n'est pas dans le cadencier d'un restaurant.
C'est ce cadrage initial qui rend le système fiable. Sans lui, le taux d'erreur serait bien plus élevé. Avec lui, on atteint 90 à 95 % de matching automatique réussi.
J'ai construit la solution en plusieurs itérations, en testant chaque étape avant de passer à la suivante.
La solution construite
L'architecture finale suit ce chemin : le restaurateur envoie un message vocal (ou texte) sur un bot Telegram. Le message est transcrit par l'IA. Puis elle structure le résultat en JSON propre et fait ensuite le matching sémantique avec le catalogue produits (+500 références, plusieurs fournisseurs). Le workflow enrichit chaque ligne avec les prix correspondants, puis exporte tout dans Google Sheets, dans un onglet mensuel créé automatiquement.
Tout ça tourne dans n8n, un outil d'automatisation qui permet de connecter des services entre eux sans avoir besoin d'un serveur dédié. Chaque étape est une brique que j'ai testée indépendamment avant de les assembler.
Ce que ça donne
Les premiers tests sont encourageants. Le système reconnaît automatiquement 90 à 95 % des produits dictés, sans intervention humaine. Le reste est marqué pour révision, avec un indicateur visuel dans le Sheets. Le traitement complet prend moins de 15 secondes.
| Flag | Produit | Qté | U. | Prix | Montant | Fiabilité | Statut |
|---|---|---|---|---|---|---|---|
FOURNISSEUR A Jus de veau lié 900 g |
3 | kg | 11,25 € | 33,75 € | 0.95 |
✓ auto | |
FOURNISSEUR B Fond de volaille 1 kg |
5 | kg | 8,50 € | 42,50 € | 0.91 |
✓ auto | |
FOURNISSEUR A Chorizo tranché |
2 | kg | 11,58 € | 23,16 € | 0.98 |
✓ auto | |
| ⚠️ | — à vérifier Oeuf entier |
12 | pce | 0,18 € | 2,16 € | 0.67 |
⚠ review |
FOURNISSEUR B Crème liquide 35 % |
4 | L | 3,20 € | 12,80 € | 0.93 |
✓ auto | |
FOURNISSEUR A Beurre doux |
3 | kg | 7,80 € | 23,40 € | 0.94 |
✓ auto | |
| ❌ | — non trouvé plaque de saumon |
2 | — | — | 0,00 € | 0.00 |
✗ failed |
| Total inventaire | 137,77 € | 5 auto · 1 review · 1 failed | |||||
Ce que j'ai appris
Le matching sémantique est plus difficile qu'il n'y paraît. La première version faisait du simple matching de mots — elle échouait sur "jus d'veau" ou "cuisse de poule". La version actuelle utilise GPT-4o pour comprendre l'intention, pas juste les mots. C'est plus lent, plus cher, mais beaucoup plus fiable.
J'ai aussi appris à décomposer un problème complexe en étapes indépendantes. Au lieu d'essayer de tout faire en un seul appel API, j'ai créé des briques spécialisées : une pour la transcription, une pour la structuration, une pour le matching. Chacune peut être testée et améliorée séparément.
La prochaine étape : tester avec plusieurs utilisateurs en parallèle, et construire une interface web pour remplacer Telegram.