Retour au portfolio
● Réalisé n8n · OpenAI · Telegram · Google Sheets

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.

Exemple de message vocal envoyé sur Telegram pour déclencher l'inventaire
L'utilisateur envoie un message vocal ou texte sur Telegram

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.

Le workflow n8n complet — de la réception du message Telegram à l'export Google Sheets
Le workflow n8n — de la réception du message à l'export Google Sheets

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.

90–95% de matching automatique réussi
< 15s du message vocal à l'export Sheets
+1h de temps manuel économisé par session
+500 références produits dans le catalogue
🔒 docs.google.com/spreadsheets/inventaire-vocal/2026
📊
Inventaire du 19-02-2026 ✓ Enregistré
FichierModifierAffichage InsertionFormatDonnées
📦 Inventaire — 19 février 2026
Inventaire Vocal  ·  Traitement : 11 s
7 produits 137,77 €
Flag Produit Qté U. Prix Montant Fiabilité Statut
FOURNISSEUR A
Jus de veau lié 900 g
3kg 11,25 € 33,75 €
0.95
✓ auto
FOURNISSEUR B
Fond de volaille 1 kg
5kg 8,50 € 42,50 €
0.91
✓ auto
FOURNISSEUR A
Chorizo tranché
2kg 11,58 € 23,16 €
0.98
✓ auto
⚠️
— à vérifier
Oeuf entier
12pce 0,18 € 2,16 €
0.67
⚠ review
FOURNISSEUR B
Crème liquide 35 %
4L 3,20 € 12,80 €
0.93
✓ auto
FOURNISSEUR A
Beurre doux
3kg 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
Annotations IA
⚠️
Ambiguïté — "Oeuf entier"
L'utilisateur a dit "oeuf". Plusieurs correspondances existent dans le cadencier — l'outil a retenu la plus probable.
⚠ Oeuf entier Jaune d'œuf Blanc d'œuf
Non reconnu — "plaque de saumon"
Ce libellé n'existe pas dans le cadencier. Des produits proches ont été trouvés mais sans correspondance suffisante.
plaque de saumon Filet de saumon Saumon fumé
📅 février 2026
Résultat dans Google Sheets — produits, quantités, prix, et indicateurs de confiance

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.

Stack & outils

n8n OpenAI Whisper GPT-4o Mini GPT-4o Telegram Bot API Google Sheets API JavaScript
Retour au portfolio