Automatisation & workflows

Vos tâches répétitives confiées à des workflows fiables, avec de l'IA là où il faut du jugement, et des alertes quand quelque chose coince.

Tout ne mérite pas un agent. Une grande partie du back-office se règle avec un workflow bien conçu: je connecte vos outils, j'automatise les enchaînements répétitifs (tri, saisie, relances, reporting) et je n'ajoute l'IA que là où elle apporte du jugement. Le tout supervisé: un workflow qui échoue doit prévenir, pas continuer en silence.

Repères

0

ressaisie manuelle sur les process automatisés

7 j

pour un premier workflow utile en production

100 %

des échecs visibles: alertes, journaux, statuts

Automatisation & workflows

Ce que je construis

01

Automatisation de process métier

Tri et dispatch d'e-mails, saisie, relances, reporting: les enchaînements répétitifs exécutés par des workflows branchés sur vos outils.

n8n · Workflows · Back-office

02

Workflows augmentés par l'IA

L'IA insérée au bon endroit du workflow pour classer, extraire, résumer ou rédiger un brouillon. Le reste reste déterministe, donc prévisible.

LLM · Classification · Extraction

03

Intégrations sur mesure

CRM, ERP, e-mails, tableurs, outils internes: je les relie par API et webhooks, y compris quand le connecteur tout fait n'existe pas.

API · Webhooks · CRM · ERP

La promesse

Le travail répétitif tourne tout seul, sous contrôle.

Démonstration

Une facture fournisseur arrêtée avant la saisie comptable

Un bureau d'études en bâtiment reçoit ses factures fournisseurs par e-mail, dans autant de formats qu'il a de fournisseurs, puis les ressaisit à la main dans l'outil comptable. Le contrôle du bon de commande se fait de tête, et une ligne facturée en trop finit payée.

Cas inventéCe cas n'est pas une mission. Il est inventé de bout en bout, et le code plus bas est le vrai code qui le ferait tourner.

  1. HumainLa demande du matin

    Les factures fournisseurs arrivées ce matin sont dans la boîte comptabilité. Je veux les montants sortis, comparés au bon de commande, et seulement ce qui coince sur mon bureau.

  2. Appel d'outilExtraction du document

    {
      "outil": "extraction.document",
      "source": {
        "canal": "email",
        "boite": "comptabilite",
        "message_id": "AAMkAGI3f21b4c9a",
        "piece_jointe": "facture-aout.pdf",
        "recu_le": "2026-09-03T07:41:12+02:00"
      },
      "champs_attendus": [
        "numero_facture",
        "date",
        "devise",
        "montant_ht",
        "montant_ttc",
        "reference_commande",
        "lignes"
      ],
      "score_minimum_par_champ": 0.85
    }

    Aucun gabarit par fournisseur. Le format du document n'est pas une hypothèse du système, c'est une donnée qu'il subit.

  3. Retour de l'outilChamps extraits

    {
      "statut": "extrait",
      "fournisseur_metier": "fabricant de menuiseries aluminium",
      "numero_facture": "F-2026-3184",
      "date": "2026-08-28",
      "devise": "EUR",
      "montant_ht": 4968.40,
      "montant_ttc": 5962.08,
      "reference_commande": "BC-2026-0771",
      "lignes": [
        {
          "libelle": "Chassis aluminium serie 60",
          "quantite": 12,
          "pu_ht": 386.20,
          "total_ht": 4634.40
        },
        {
          "libelle": "Frais de livraison chantier",
          "quantite": 1,
          "pu_ht": 334.00,
          "total_ht": 334.00
        }
      ],
      "scores": {
        "numero_facture": 0.98,
        "montant_ht": 0.97,
        "reference_commande": 0.93
      },
      "champs_sous_le_seuil": []
    }
  4. L'agentLecture de l'écart

    La facture porte la référence du bon de commande, lue au-dessus du score exigé. Je lis donc la commande dans l'ERP par cette référence, plutôt que de la chercher par le fournisseur. Elle contient les douze châssis, pas les frais de livraison facturés en plus. Je ne tranche pas cet écart moi-même : je passe les deux montants à la fonction de rapprochement, qui applique une tolérance écrite et testée.

  5. Appel d'outilAppel du rapprochement

    {
      "outil": "rapprochement.executer",
      "facture": {
        "numero": "F-2026-3184",
        "devise": "EUR",
        "montant_ht": 4968.40
      },
      "bon_de_commande": {
        "reference": "BC-2026-0771",
        "lu_par": "erp.commandes.lire",
        "statut": "ouvert",
        "devise": "EUR",
        "montant_ht": 4634.40
      }
    }

    Le modèle n'évalue pas l'écart et ne transmet pas le seuil. Il appelle une fonction déterministe, dont la tolérance ne dépend pas de la formulation de la facture.

  6. Réponse rendueRetour à la comptabilité

    La facture F-2026-3184 n'est pas saisie. Elle part en revue humaine : l'écart avec le bon de commande BC-2026-0771 est de 334,00 EUR, pour une tolérance retenue de 15,00 EUR. La ligne en cause est nommée : des frais de livraison chantier absents de la commande. La personne qui ouvre la tâche voit les deux montants, la ligne fautive, et deux issues : accepter l'écart et intégrer, ou renvoyer la facture au fournisseur.

    La séquence s'arrête sur une facture non intégrée. C'est le comportement attendu : l'automate sait ce qu'il ne sait pas trancher.

Le coderapprochement_facture_commande.pypython

La règle de rapprochement

"""Rapprochement d'une facture fournisseur avec son bon de commande."""

from dataclasses import dataclass
from decimal import Decimal

TOLERANCE_ABSOLUE = Decimal("15.00")
TOLERANCE_RELATIVE = Decimal("0.01")
SEUIL_REJET_RELATIF = Decimal("0.25")

INTEGRATION = "integration"
REVUE_HUMAINE = "revue_humaine"
REJET = "rejet"


@dataclass(frozen=True)
class Decision:
    statut: str
    ecart: Decimal
    tolerance: Decimal
    motif: str


def _montant(source, champ):
    valeur = source.get(champ)
    if valeur is None:
        raise ValueError("montant absent : " + champ)
    return Decimal(str(valeur))


def rapprocher(facture, bon_de_commande):
    if facture.get("devise") != bon_de_commande.get("devise"):
        return Decision(REJET, Decimal("0"), Decimal("0"), "devises différentes")

    montant_facture = _montant(facture, "montant_ht")
    montant_commande = _montant(bon_de_commande, "montant_ht")
    ecart = abs(montant_facture - montant_commande)

    # La plus stricte des deux tolérances gagne, sinon un gros bon de commande
    # achète le droit à un gros écart.
    tolerance = min(TOLERANCE_ABSOLUE, montant_commande * TOLERANCE_RELATIVE)

    if ecart > montant_commande * SEUIL_REJET_RELATIF:
        return Decision(REJET, ecart, tolerance, "écart hors d'une erreur de saisie")

    if ecart > tolerance:
        return Decision(REVUE_HUMAINE, ecart, tolerance, "écart au-dessus de la tolérance")

    return Decision(INTEGRATION, ecart, tolerance, "écart dans la tolérance")

Un automate qui n'a pas le droit de s'arrêter ne supprime pas la ressaisie : il la déplace vers la correction d'écritures, plus tard et plus cher.

Automatisation & workflows

Avant, après

Automatisation & workflows

La stack

n8n

Make

Zapier

Python

TypeScript

API

Webhooks

Claude

Automatisation & workflows

Questions franches

01

Quels processus automatiser en premier ?

Les tâches répétitives à fort volume et à faible jugement: tri d'e-mails, saisie, relances, reporting, synchronisation entre outils. Un audit rapide identifie celles qui rapportent le plus, souvent en quelques jours.

02

n8n, Make, Zapier ou code sur mesure ?

n8n pour la plupart des cas: auto-hébergeable, versionnable, extensible en code. Make et Zapier pour les besoins simples et rapides. Du code sur mesure quand la logique dépasse ce qu'un outil visuel maintient proprement. Je choisis selon votre cas, pas selon mes habitudes.

03

Que se passe-t-il quand un workflow échoue ?

Il prévient. Alertes, journaux, statut de chaque exécution, reprise possible: je conçois d'abord la façon dont ça échoue. Un workflow qui plante en silence coûte plus cher que la tâche manuelle qu'il remplace.

04

Faut-il de l'IA dans mes automatisations ?

Pas toujours. Si la règle est claire, un workflow déterministe suffit et coûte moins cher. L'IA entre en jeu quand il faut du jugement: classer un e-mail ambigu, extraire des données d'un document, rédiger un brouillon.

À lire sur ce sujet

Contact

Prêt à passer de la démo à la production ?

Réponse sous 24 h · premier échange gratuit et sans engagement.