Réalisations

Bons de commande par mail : comment on a supprimé la ressaisie avec n8n et un modèle d'IA

Retour d'expérience : un workflow n8n qui lit les bons de commande reçus par mail, les fait extraire par un modèle Anthropic et les contrôle avant classement.

Matteo ConsortiPublié le 3 min de lecture

Un distributeur B2B recevait ses bons de commande par mail, dans une dizaine de formats différents : PDF en pièce jointe, tableau collé dans le corps du message, parfois les deux. Une personne les ressaisissait à la main, tous les jours. Voici comment nous avons remplacé cette ressaisie par un workflow automatisé, et pourquoi l'IA n'en est qu'une étape.

Le vrai problème : l'hétérogénéité, pas le volume

Un connecteur classique ou un OCR à gabarits fonctionne très bien quand tous les documents se ressemblent. Ici, chaque client avait sa mise en page, ses libellés et ses habitudes. Maintenir un gabarit par client aurait déplacé le travail manuel plutôt que de le supprimer.

C'est précisément le cas où un modèle de langage apporte quelque chose : il lit un document qu'il n'a jamais vu et en extrait les informations utiles, à condition de lui imposer un format de réponse strict.

L'architecture du workflow

Le tout tourne dans n8n, que nous utilisons pour la plupart de nos automatisations. Le workflow suit quatre étapes :

  1. Réception : une boîte mail dédiée reçoit les bons transférés. n8n la surveille et déclenche le traitement à chaque nouveau message.
  2. Récupération : le workflow extrait les pièces jointes ou, à défaut, le corps du message.
  3. Lecture : le contenu est confié à un modèle Anthropic, avec une consigne qui impose une réponse structurée (client, référence, lignes, quantités).
  4. Contrôle et classement : chaque ligne est vérifiée contre le référentiel produits stocké dans PostgreSQL, puis le résultat est classé.
Vue d'ensemble du workflow n8n : déclencheur mail, extraction, appel au modèle, contrôle et classement
Le workflow complet dans n8n, de la réception du mail au classement.

Contraindre la réponse du modèle

La tentation, avec l'IA, est de demander « lis ce bon de commande » et d'espérer une réponse exploitable. En production, on ne peut pas se le permettre. Nous demandons au modèle une réponse dans un schéma fixe, que le workflow valide avant d'aller plus loin. Une réponse qui ne respecte pas le schéma n'est jamais traitée comme une commande.

{
  "client": "string",
  "reference_commande": "string",
  "lignes": [
    { "reference_produit": "string", "quantite": "number" }
  ]
}

Le contrôle contre le référentiel

Un modèle de langage peut mal lire une référence ou confondre deux colonnes. C'est pourquoi chaque ligne extraite est rapprochée du référentiel produits. Une référence inconnue ou une quantité incohérente ne bloque pas silencieusement le bon : elle le fait basculer dans une file à vérifier par un humain.

C'est ce qui rend le système digne de confiance : la personne qui ressaisissait les bons ne traite plus que les cas douteux, avec le document d'origine sous les yeux.

Ce qu'on retient pour les projets suivants

  • Commencer par le flux réel : récupérer une vraie semaine de bons avant d'écrire la moindre consigne. Les cas limites sont dans les données, pas dans le cahier des charges.
  • Garder l'humain dans la boucle pour les exceptions, plutôt que viser un taux d'automatisation de 100 % qui obligerait à accepter des erreurs.
  • Tracer chaque traitement : le mail d'origine, la réponse du modèle et le résultat du contrôle sont conservés, ce qui rend chaque décision explicable.

Vous recevez, vous aussi, des documents que quelqu'un ressaisit à la main ? C'est typiquement le genre de besoin que nous cadrons en un échange. Le détail de ce projet est aussi sur la page Réalisations.

  • n8n
  • IA
  • Automatisation
  • API Anthropic
  • PostgreSQL

Matteo Consorti

Développeur chez MC Development. Profil LinkedIn

À lire ensuite

Un besoin similaire ?

Décrivez-le en quelques lignes : nous revenons vers vous avec un périmètre, un prix et un délai écrits.