Aller au contenu

ADR-002 — Consolidateur par agent

Statut Accepted (vision cible)
Date 07/05/2026 (S19 mid-week)
Décideurs Romain BAZIL, Nicolas Léonard
Origine Synchro S19 mid-week §2

Contexte

La fiche consolidée V1 (livrée S18-S19 par Nicolas) résout la réconciliation per-data-point : 4 sources (override AM, déclaratif Bubble, messagerie CRM, data extraction) → précédence → output unique.

Mais cette logique reste limitée à l'étage data_extraction. Les agents tier 2/3 (estimate_value, réputation, financial_projections, etc.) lisent un seul output consolidé, sans embarquer eux-mêmes de logique de réconciliation. Or chaque agent va à terme devenir une multitude d'agents avec des workflows différents (V3, V4, Manus, freelance approach…) qui produisent des résultats potentiellement divergents.

Sans logique de consolidation au niveau agent, on revient au problème : un seul output, prendre ou laisser, pas de garde-fou.

Décision

Chaque agent embarquera à terme sa propre cascade de fiabilisation interne, sur le modèle de la fiche consolidée mais appliqué à son output et pas à ses inputs.

Pattern cible

Pour un agent donné (ex. estimate_value) :

[Inputs consolidés via ADR-001]
┌──────────────────────────────────┐
│  Sub-node 1 : workflow A (V4)    │──┐
│  Sub-node 2 : workflow B (Manus) │──┤
│  Sub-node 3 : workflow C (V3)    │──┤
└──────────────────────────────────┘  │
                          ┌──────────────────────┐
                          │ Comparateur global   │
                          │ LLM-as-a-judge       │
                          │ entre workflows      │
                          └──────────────────────┘
                          [Output consolidé + traçabilité]

Éléments à implémenter

  1. Sub-nodes par agent : encapsuler chaque workflow alternatif comme un sub-node isolé
  2. Comparateur global LLM-as-a-judge entre les workflows alternatifs (V3 vs V4 vs Manus, etc.)
  3. Traçabilité : enregistrer l'output de chaque sub-node + l'arbitrage du judge + le critère de décision
  4. Capture passive : si tous les sub-nodes convergent, c'est de la ground truth pour le golden dataset

Rationale

  • Application au niveau agent du pari fiabilité : ce qu'on fait pour les données extraites, on le fait pour les jugements/calculs
  • Le pipeline interne n'a pas un seul "meilleur" workflow : on a des V3, V4, Manus, etc. qui sont meilleurs sur des typologies différentes. On veut le bénéfice du meilleur de chacun, pas le sacrifice systématique de l'un pour l'autre
  • Permet de mesurer V3 vs V4 vs autre sans devoir choisir le default — chaque appel produit les N outputs simultanément
  • Maintenabilité : Nicolas a flagué le risque (S19) : « attention à ne pas le complexifier de ouf ». Le pattern doit être simple à instancier pour ne pas devenir un fardeau

Conséquences

Ce qui change

  1. La fiche consolidée actuelle devient un POC du pattern, pas la cible finale
  2. Chaque nouvel agent doit être conçu avec sub-nodes dès le départ (V2)
  3. Le golden dataset doit pouvoir comparer N workflows par agent (eval system supporte déjà via section_versions.workflowId)
  4. Les freelances livrant un nouvel agent livrent un sub-node, pas un agent monolithique

Ce qu'il faut faire

  • Refactor estimate_value V4 + V3 en sub-nodes d'un même agent parent (priorité S20+)
  • Définir le format type d'un sub-node (interface, traçabilité, output schema)
  • Activer un premier comparateur LLM-as-a-judge sur estimate_value quand on aura V3 + V4 + Manus en parallèle
  • Documenter en wiki/stack/ la convention sub-nodes (à créer)

Ce qu'il faut éviter

  • Implémenter le pattern en V0 avant que la matière justifie : less is more — d'abord la fiche consolidée fonctionne, ensuite on l'étend
  • Faire des agents monolithiques sans sub-nodes : on se referme la porte de la cascade niveau agent

Alternatives écartées

  • Garder un seul workflow par agent et choisir le meilleur via dataset : fragile, oblige à arbitrer prématurément
  • Multiplier les agents indépendants (un agent V3, un agent V4) : explose le pipeline, fait perdre la lisibilité, anti-pattern LIDAR #1

Verbatims

« Pour moi, ces consolidateurs, ils vont venir sur chaque step d'une analyse. Si tout le monde est d'accord, parfait. S'il y a désaccord, analyser. S'il y a doute, alors human-in-the-loop. » — Romain

« Faire tourner des agents même imparfaits met en lumière les trous dans la raquette et dicte l'évolution du pipeline. Mais attention à ne pas le complexifier de ouf — il faut s'interroger sur la maintenabilité. » — Nicolas

Voir aussi

Sources