Aller au contenu
Toutes les réalisations

Étude de cas 02 / 06

Bulq.ai

BTP · IA

Du no-code à une véritable plateforme logicielle

  • Ingénierie des données
  • Ingénierie logicielle
  • Cloud et infrastructure
Bulq.ai
Plateforme d’extractionDonnées démo
Tableau des documents de la plateforme d’extraction de Bulq.ai

Chiffres clés

Devis fournisseurs aux formats hétérogènes
Des milliers
Dépense LLM du pipeline refondu
Plafonnée
Cycle de rattrapage du pipeline refondu
5 min

En bref

  • L’enjeu

    Un produit de chiffrage par IA pour les entreprises du BTP, enfermé dans un front no-code WeWeb, avec des milliers de devis fournisseurs aux formats hétérogènes à transformer en prix structurés, et des consultations fournisseurs encore suivies à la main.

  • Notre réalisation

    La plateforme d’extraction de devis par IA qui transforme les devis fournisseurs des clients en prix structurés et validés ; les fondations du backend-for-frontend FastAPI qui a permis à Bulq.ai de quitter WeWeb client par client ; et S2C, un back-end de consultation fournisseurs automatisée. Le tout conçu pour la migration de Bulq.ai vers son propre environnement Google Cloud.

  • Le résultat

    Une plateforme maîtrisée et testée : un pipeline d’extraction refondu, conçu pour se rétablir seul après une panne et contenir les dépenses LLM sous plafond, avec une validation humaine réservée aux cas qui demandent du discernement, ainsi qu’un back-end testé pour les consultations fournisseurs automatisées.

Services associés : Développement full stackCollecte et analyse de donnéesInfrastructure cloud

Savoir-faire

Ce qu’il a fallu.

  • Ingénierie des données

    • PostgreSQL comme source de vérité unique pour le cycle de vie de chaque document : chaque fichier est enregistré une seule fois par empreinte de contenu et réservé par compare-and-set, si bien qu’une tâche en double ou périmée n’écrit rien.
    • Des plafonds de coût LLM par document et par jour, inscrits dans les données, ainsi que des verrous à durée limitée (leases) et une tâche de rattrapage toutes les cinq minutes qui récupèrent le travail perdu.
    • Une résolution d’entités pour les fournisseurs et les chantiers par similarité de trigrammes, et une grille de relecture synchronisée avec Google Sheets.
  • Ingénierie logicielle

    • Une API Flask d’extraction testée et une application React de validation humaine en trois étapes au plus ; les devis dont les lignes tombent juste sont validés automatiquement.
    • Les fondations d’un backend-for-frontend FastAPI : authentification par cookies httpOnly et SSO entreprise (l’équipe de Bulq.ai a depuis migré la connexion vers Zitadel), autorisation par rôle et propriété des données, envoi de fichiers directement vers le stockage par URL signées, et une couche repository conçue pour que le back-end de données puisse passer de Supabase à un accès PostgreSQL direct, la configuration qu’utilisent désormais les déploiements Cloud Run.
    • S2C : un back-end testé avec des machines à états explicites, un verrouillage optimiste, une outbox transactionnelle pour les e-mails et une API de portail fournisseur derrière des liens personnels hachés.
  • Cloud et infrastructure

    • Traitements d’extraction et de collecte intégrés à l’environnement de préproduction de la plateforme GCP de Bulq.ai, gérée en OpenTofu, avec un accès à la base de données authentifié par IAM via des proxys sidecar et des droits au moindre privilège.
    • Une file Cloud Tasks cadencée au rythme de son consommateur, préférée à Pub/Sub dans une ADR (Architecture Decision Record), et un job de collecte dimensionné à partir de 30 jours de mesures en production.
    • Une carte interactive de l’infrastructure, maintenue en phase avec le code OpenTofu par un contrôle de dérive en CI et prête à être servie derrière Identity-Aware Proxy.

Projet 01

Plateforme d’extraction

Flask · React · Cloud Run · Cloud Tasks · LLM

L’application d’exploitation derrière les données de Bulq.ai. Elle se connecte au SharePoint, au OneDrive, au Google Drive ou aux partages réseau sur site de chaque client, lance des synchronisations planifiées ou à la demande, suit chaque devis pendant l’extraction par LLM et le soumet à une validation humaine, en trois étapes au plus, avant qu’il n’arrive dans la recherche. DataGem en a écrit la quasi-totalité, puis a refondu le pipeline (la V3, présentée ici, développée et testée avant son déploiement) autour de PostgreSQL comme source de vérité unique.

Objectif
Industrialiser le traitement de milliers de devis fournisseurs aux formats hétérogènes, pour que seules des données vérifiées arrivent dans la recherche.
Points clés
  • Une tâche Cloud Tasks par document, réservation par compare-and-set et jusqu’à trois passes par fichier
  • Plafonds de coût LLM par document et par jour
  • Doublons de fournisseurs et de chantiers suggérés par similarité de trigrammes
  • Validation ligne par ligne à côté du document source
Technologies
  • Python
  • Flask
  • React 19
  • PostgreSQL + RLS
  • Cloud Tasks
  • Cloud Run Jobs
  • API Google Sheets
Plateforme d’extractionDonnées démo
Écran de validation des lignes d’un devis, avec le PDF source
(taille réelle, dans un nouvel onglet)
Validation ligne par ligne d’un devis extrait, à côté de son document source.
Plateforme d’extractionDonnées démo
Tableau des documents de la plateforme d’extraction
(taille réelle, dans un nouvel onglet)
Le parcours de chaque document dans l’extraction : tableau des statuts, passes utilisées et étape en cours.
Plateforme d’extractionDonnées démo
Écran de résolution d’entités avec scores de similarité
(taille réelle, dans un nouvel onglet)
Nettoyage des fournisseurs et des chantiers, avec les doublons potentiels classés par similarité.
Plateforme d’extractionDonnées démo
Grille de relecture des métadonnées des devis extraits
(taille réelle, dans un nouvel onglet)
Grille de relecture des métadonnées, synchronisée avec un Google Sheet par client.
Plateforme d’extractionDonnées démo
Planning et historique des synchronisations
(taille réelle, dans un nouvel onglet)
Synchronisations planifiées et à la demande sur les sources documentaires des clients, avec le décompte par source.
Schéma du pipeline d’extraction
(taille réelle, dans un nouvel onglet)
Le pipeline V3 : une tâche en file par document, PostgreSQL comme source de vérité unique.

Projet 02

Application principale : de WeWeb à FastAPI

Backend-for-frontend FastAPI (front Next.js par l’équipe de Bulq.ai)

DataGem a conçu et développé les fondations du backend-for-frontend de la nouvelle application React de Bulq.ai : un proxy d’authentification qui gardait les jetons dans des cookies httpOnly, avec SSO SAML entreprise (l’équipe de Bulq.ai a depuis migré la connexion vers Zitadel) ; l’autorisation par rôle et propriété des données ; les premières API métier (statistiques de prix, chantiers, devis, entreprises) ; l’envoi de fichiers directement vers le stockage par URL signées ; et la bascule par entreprise qui a permis aux clients de quitter l’application WeWeb un par un. L’interface Next.js est l’œuvre de l’équipe interne de Bulq.ai.

Objectif
Remplacer le front no-code WeWeb par une stack maîtrisée et testée, sans tout basculer d’un coup.
Points clés
  • Couche repository qui fait passer le back-end de données de Supabase à un accès PostgreSQL direct par simple configuration
  • Statistiques de prix avec médiane et détection des valeurs aberrantes par écart absolu médian (MAD)
  • Appels de service à service en OIDC vers le microservice de recherche
Technologies
  • Python
  • FastAPI
  • PostgreSQL
  • Supabase
  • Cloud Storage
Bulq.aiDonnées démo
Page de statistiques de prix de Bulq.ai
(taille réelle, dans un nouvel onglet)
Statistiques de prix par ouvrage standardisé, issues de l’API développée par DataGem (interface par l’équipe de Bulq.ai), valeurs aberrantes (MAD) exclues des chiffres.
Bulq.aiDonnées démo
Résultats de recherche Bulq.ai
(taille réelle, dans un nouvel onglet)
Recherche dans les lignes de devis extraites, avec prix unitaires et facettes (interface par l’équipe de Bulq.ai ; le BFF appelle le service de recherche en OIDC).

Projet 03

S2C : consultation fournisseurs automatisée

FastAPI · PostgreSQL RLS · Cloud Tasks · Brevo

Un back-end conçu pour automatiser ce que les acheteurs suivent encore à la main : documents de consultation versionnés, allotissement par IA, recommandation de fournisseurs et analyses de conformité (exécutées par le service d’IA de Bulq.ai, orchestrées par ce back-end), invitations rédigées à partir de modèles avec liens personnels, API de portail fournisseur pour les questions et les offres par lot, comparaison des offres et attribution. Les écrans acheteur et fournisseur sont la prochaine étape.

Objectif
Faire passer les consultations fournisseurs d’un kanban manuel à un processus automatisé et traçable, des documents de consultation jusqu’à l’attribution.
Points clés
  • Sécurité au niveau des lignes (RLS) qui cloisonne les données de chaque tenant, l’accès fournisseur passant uniquement par des routines SQL dédiées
  • Traitements IA lancés via Cloud Tasks, avec verrous à durée limitée, suivi d’avancement et tâches de rattrapage
  • Outbox d’e-mails avec quota quotidien partagé et suivi de la délivrance
  • Liens fournisseurs stockés uniquement sous forme d’empreintes SHA-256
Technologies
  • FastAPI
  • PostgreSQL + RLS
  • Cloud Tasks
  • Cloud Scheduler
  • Brevo
  • Cloud Storage
Schéma du back-end S2C de consultation fournisseurs
(taille réelle, dans un nouvel onglet)
Architecture du back-end S2C : traitements IA en files d’attente, outbox transactionnelle pour les e-mails et API de portail fournisseur derrière des liens hachés.
Bulq.aiDonnées démo
Kanban manuel de consultation fournisseurs
(taille réelle, dans un nouvel onglet)
Le tableau de consultation manuel d’aujourd’hui (un écran existant de Bulq.ai), où les acheteurs suivent les fournisseurs à la main : le processus que S2C est conçu pour automatiser.

Projet 04

Intégration à la plateforme cloud

OpenTofu · Google Cloud

L’équipe infrastructure de Bulq.ai a reconstruit son environnement Google Cloud en code OpenTofu. DataGem a intégré les traitements d’extraction et de collecte de données à son environnement de préproduction selon le même standard, sans clé et au moindre privilège, et a construit une carte interactive de la plateforme qu’un contrôle en CI maintient en phase avec le code.

Objectif
Faire tourner les traitements de DataGem sur la plateforme durcie du client sans l’affaiblir.
Points clés
  • File Cloud Tasks cadencée au rythme de son consommateur ; job de collecte dimensionné à partir de mesures en production
  • Accès à la base de données authentifié par IAM via des proxys sidecar
  • Option Identity-Aware Proxy ajoutée au module de point d’entrée partagé
  • Carte de l’infrastructure vérifiée par rapport au code en CI, empaquetée pour un déploiement par digest d’image derrière IAP
Technologies
  • OpenTofu
  • Cloud Run
  • Cloud SQL
  • Cloud Tasks
  • IAP
  • GitHub Actions
Schéma de la plateforme cloud de Bulq.ai
(taille réelle, dans un nouvel onglet)
La plateforme Google Cloud de Bulq.ai, avec en surbrillance les briques que DataGem a intégrées ou construites.

Et maintenant, à vous.