Aller au contenu

BizComp Intelligence

Agent conversationnel IA et moteur d'analyse pour les entreprises belges

01

Présentation

BizComp Intelligence est la couche analytique et IA construite au-dessus de la plateforme de données BizComp. Elle combine un moteur d'ingestion de données officielles belges (BCE/KBO, bilans financiers) avec un agent conversationnel temps réel. Les utilisateurs peuvent interroger les données d'entreprises en langage naturel (« Montre-moi les finances de Colruyt », « Compare Delhaize et Carrefour »), avec classification automatique d'intention, résolution d'entités, exécution parallèle d'outils et rendu dynamique en streaming.

02

Architecture système

Le système repose sur une architecture en couches articulée autour d'un backend Fastify performant et d'une base PostgreSQL sous Google Cloud SQL. Le pipeline de traitement gère la classification d'intentions via LLM, la résolution d'entités avec recherche BCE, l'orchestration asynchrone des requêtes d'outils, la gestion de concurrence optimiste et l'assemblage de tableaux de bord financiers interactifs livrés en streaming Server-Sent Events (SSE).

  1. 01
    Requête utilisateurEntrée en langage naturel
  2. 02
    Classificateur d'intentionsAlimenté par LLM, 12 types d'intentions
  3. 03
    Résolveur d'entitésRecherche BCE, résolution spéculative parallèle
  4. 04
    Planificateur de requêtesSélection et orchestration d'outils
  5. 05
    Exécuteur d'outilsAppels parallèles avec retry et abandon
  6. 06
    Compositeur de mise en pageAssemblage du tableau de bord + suggestions
  7. 07
    Réponse en streamingSSE vers le client
Chaque étape supporte la propagation d'abandon et le contrôle de budget de requête

03

Fonctionnalités principales

  1. 01Classification d'intentions en langage naturel sur 12 types structurés (analyse financière, ratios de liquidité, alertes de risque, fiche d'identité, comparaison sectorielle)
  2. 02Orchestration asynchrone d'outils avec exécution parallèle (get_company_card, get_financials, get_risk_flags, search_companies)
  3. 03Streaming temps réel via Server-Sent Events (SSE) avec livraison progressive des étapes du pipeline
  4. 04Pipeline d'extraction multi-chemins pour bilans financiers (Fast Path textuel, fallback OCR, multimodal LLM structuré et modèle Donut)
  5. 05Contrôle de concurrence optimiste des sessions avec gestion de versioning sur PostgreSQL pour éviter les écrasements simultanés
  6. 06Gestion de file d'attente LLM avec limitation de débit, token bucket et délestage préventif en cas de surcharge
  7. 07Support trilingue complet (français, néerlandais, anglais) avec contextualisation culturelle et financière
  8. 08Composants visuels interactifs : graphiques de tendances (Recharts), grilles de comparaison, indicateurs de solvabilité

04

Stack technique

Next.js 15 · TypeScript · Fastify (Node.js) · Google Gemini AI · PostgreSQL · Google Cloud SQL · Docker · Tailwind CSS · Server-Sent Events · Recharts

05

Défis techniques & solutions

01

Classification d'intentions & résolution d'entités fiables

Les requêtes utilisateur sont ambiguës : « finances Colruyt » peut signifier un aperçu rapide ou un audit détaillé. J'ai conçu un classificateur qui associe chaque requête à l'un des 12 types d'intentions structurés, avec normalisation du contexte conversationnel. Le résolveur d'entités recherche les identifiants BCE officiels en parallèle de la classification pour minimiser la latence.

02

Pipeline de streaming avec sécurité d'abandon

Chaque requête traverse plus de 5 étapes asynchrones (classifier, résoudre, planifier, exécuter les outils, composer). J'ai mis en place un système de propagation d'abandon : si le client ferme la connexion ou que le délai expire, les appels LLM et requêtes SQL en vol sont immédiatement annulés, protégeant les ressources du serveur.

03

Concurrence optimiste des sessions

Lorsque plusieurs requêtes concurrentes touchent une même session utilisateur, le risque d'écrasement de contexte est élevé. J'ai implémenté un contrôle de concurrence optimiste avec colonne de version sur PostgreSQL. En cas de conflit de verrouillage, le système recharge l'état et réessaie automatiquement jusqu'à 3 fois.

04

Limitation de débit LLM & gestion de file d'attente

Face aux quotas stricts des API d'inférence, j'ai développé un gestionnaire de file d'attente avec token bucket et délestage intelligent. Le système priorise les requêtes interactives, gère les backoffs exponentiels et rejette proprement les requêtes excédentaires avant saturation.