CONTRAT PACK PRODUIT CGRP SPOT ANNONCEUR BRIEF SELECT * FROM Contrat c JOIN Cgrp g ON c.id_cgrp = g.id JOIN Spot s ON g.id_spot = s.id JOIN Annonceur a ON c.id_ann = a.id WHERE a.nom = 'Peugeot' OFFRE MANDAT

Discutez directement avec vos données et recevez des rapports instantanées

Système de RAG orchestré par Agent IA destiné au requêtage des bases de données

L'utilisateur métier pose sa question en langage naturel Client métier Le système d'information crée un ticket de demande SI Création ticket File d'attente des demandes en attente de traitement BACKLOG Demande 1 Demande 2 Demande 3 Demande 4 Demande 5 Demande 6 Analyste SQL spécialisé Analyste 3 Rédige la requête SQL Analyste 1 Vérifie et valide la requête Analyste 2 allers-retours Réponse (jours / semaines plus tard)
La problématique
Pourquoi ?

Les équipes média passent des heures à formuler des requêtes SQL pour extraire des données de planification TV. Chaque question nécessite une connaissance approfondie du schéma, des jointures entre dizaines de tables et des règles métier complexes.

Résultat : un goulot d’étranglement entre le besoin business et la donnée. Les analystes sont surchargés, les décideurs attendent.

pubGPT supprime cette barrière. Une question en français suffit pour interroger la base, obtenir des tableaux, des graphiques et des plans de suivi complets — sans écrire une seule ligne de SQL.

Client métier ~20s pubGPT Question en français → Réponse Réponse instantanée
La solution
Que faire ?

Remplacer le circuit ticket → analystes → allers-retours par un accès direct à la donnée. L’utilisateur pose sa question en français, pubGPT s’occupe du reste.

Plus de backlog, plus d’attente. Le pipeline multi-agents identifie les bonnes tables, génère le SQL, exécute la requête et restitue la réponse — en ~20 secondes.

L’outil
Découvrez pubGPT

Une interface conversationnelle qui transforme vos questions en requêtes SQL, affiche les résultats sous forme de graphiques et vous laisse explorer le schéma librement.

pubGPT
+
</> SQL 98% 0.4s
H
Donne moi l’évolution du CA net de Peugeot entre 2023 et 2026 ?
Analyse d’intention
Recherche schéma
Génération SQL
Exécution
P
Évolution du CA net de Peugeot :
2023 2024 2025 2026 12.4M 15.8M 18.2M 22.1M
AnnéeCA BrutCA NetSpotsGRPCoût/GRPPDMÉvol.
202318.6 M€12.4 M€1 24784214 726 €8.2%
202423.1 M€15.8 M€1 5841 06314 863 €9.1%+27%
202526.8 M€18.2 M€1 8101 19815 192 €9.8%+15%
202632.4 M€22.1 M€2 1561 40215 763 €11.3%+21%
Donne moi l'évolution du CA net de Peugeot entre 2023 et 2026 ?
query.sql ×
SELECT EXTRACT(YEAR FROM e.DATE_ECRAN) ANNEE, SUM(ts.NET) AS CA_NET FROM ANNONCEUR a JOIN PRODUIT p ON p.ID_ANN = a.ID_ANN JOIN TARIF_SPOT ts ON ts.ID_SPOT = s.ID_SPOT WHERE a.NOM = 'Peugeot' AND e.DATE_ECRAN BETWEEN '01/01/23' AND '31/12/26' GROUP BY EXTRACT(YEAR FROM e.DATE_ECRAN) ORDER BY ANNEE;
query.sql
SELECT TRUNC(e.DATE_ECRAN) DATE_JOUR,
COUNT(s.ID_SPOT) NB_SPOTS,
SUM(ts.BRUT) TARIF_BRUT
FROM ANNONCEUR a
JOIN PRODUIT p ON p.ID_ANN = a.ID_ANN
JOIN SPOT s ON s.ID_BRIEF = b.ID_BRIEF
JOIN TARIF_SPOT ts ON ts.ID_SPOT = s.ID_SPOT
WHERE a.NOM = 'Peugeot'
AND e.DATE_ECRAN BETWEEN '01/01/25' AND '31/01/25'
GROUP BY TRUNC(e.DATE_ECRAN);
SQL générée & transparente

Chaque réponse est accompagnée de la requête SQL sous-jacente. Vous gardez un contrôle total sur ce qui est exécuté.

Compatible avec
Oracle
MySQL
MariaDB
PostgreSQL
Aurora
Budget
Tendance
35% Répartition
BI et Charts

Générez automatiquement des visualisations à partir de vos requêtes. Barres, courbes, camemberts — les résultats prennent forme instantanément.

Excel
CSV CSV
PDF PDF
PowerPoint
{ } JSON
Image
Export varié

Exportez vos résultats dans le format de votre choix. Tableaux Excel, rapports PDF, présentations PowerPoint, données brutes en CSV ou JSON — un clic suffit pour partager vos analyses.

Fig 0.1
0%
0 Tokens max
Tracking des tokens

Suivi en temps réel de la consommation de tokens par requête. Les seuils visuels alertent avant d’atteindre les limites du modèle.

Fig 0.2
Gestion des conversations

Historique structuré de toutes les sessions. Retrouvez, poursuivez ou archivez vos échanges avec la base de données.

Fig 0.3
Admin FULL
Éditeur WRITE
Lecteur READ
Gestion des privilèges

Contrôlez l’accès au système par niveau : administrateur, éditeur ou lecteur. Chaque rôle définit les actions autorisées.

L’approche
Comment ?

pubGPT repose sur un pipeline multi-agents où chaque agent est spécialisé dans une tâche précise. Aucun agent ne voit l’ensemble — c’est leur orchestration qui produit la réponse.

01
Comprendre — L’intent et le workspace sont identifiés pour cibler les bonnes tables parmi 200+.
02
Vérifier — Des agents de contrôle détectent les ambiguïtés et sollicitent l’utilisateur si nécessaire.
03
Générer — Le SQL est produit, validé syntaxiquement et exécuté sur la base Oracle.
04
Restituer — Les résultats sont transformés en tableaux, dashboards et réponses en français.
01
Compréhension
Intent & workspace
02
Vérification
Ambiguïtés & contrôles
03
Génération
SQL & validation
04
Restitution
Tableaux & dashboards
La stack technique
Avec quoi ?

Chaque brique a été choisie pour sa robustesse en production. Survolez un élément pour découvrir son rôle dans le pipeline.

Angular 18 Java 17 Spring Boot 3 Langchain4j OpenSearch Oracle DB AWS Bedrock Cohere Rerank
Angular 18

Interface utilisateur construite avec Angular 18 et les signaux réactifs. Composants standalone, streaming SSE pour les réponses en temps réel, et un design system sur mesure avec des animations CSS fluides.

Les modèles
Quels cerveaux ?

Trois modèles spécialisés, chacun assigné à ce qu’il fait de mieux.

Claude Opus
Orchestration

Pilote le pipeline multi-agents. Analyse la complexité de la question, décide du plan d’exécution et coordonne les étapes jusqu’à la réponse finale.

Mistral Large
Génération SQL & Filtrage

Génère les requêtes SQL Oracle à partir du contexte enrichi et alimente les agents de contrôle — BoundCheck, PreFlight et validation syntaxique.

CamemBERT
Cross-Encoder • Reranking

Modèle français finetuné sur notre corpus métier. Réordonne les tables candidates par pertinence sémantique pour maximiser la précision du contexte envoyé au générateur SQL.

Protection des données
Et la sécurité ?

La sécurité est au cœur de l’architecture. Les données ne quittent jamais le périmètre de l’entreprise et chaque requête est contrôlée avant exécution.

SELECT uniquement — les requêtes INSERT, UPDATE, DELETE et DROP sont bloquées systématiquement.
Aucune donnée exportée — le schéma et les résultats restent dans le VPC AWS.
Protection anti-injection — validation syntaxique, blocage des multi-statements et des mots-clés dangereux.
Auditabilité complète — chaque étape du pipeline est tracée et consultable.
SELECT
INSERT
DROP
ALTER
UPDATE
DELETE
SELECT uniquement
Seules les requêtes de lecture sont autorisées. Toute modification est bloquée.
Table
CAMPAGNE
Colonne
NOM_ANNONCEUR
Envoyé au LLM
Cryptage des métadonnées
Les noms de tables et colonnes sont chiffrés avant tout envoi au modèle.
LLM
SCHÉMA
CAMPAGNE (id, nom...)
SPOT (id, durée, grp)
ANNONCEUR (id, lib)
DONNÉES
Peugeot | 208 | 2024
Renault | Clio | 2023
Citroën | C3 | 2024
Accès au schéma uniquement
Le LLM voit la structure des tables, jamais les données réelles.
AWS VPC
Oracle DB
Données
OpenSearch
AWS Bedrock
Données dans le VPC
Les données restent dans le VPC AWS, communiquant uniquement avec Bedrock.
Agent LLM
Appel LLM
Table retenue
Table éliminée
Clarification utilisateur
Routage SIMPLE / COMPLEX
Sous le capot
L’architecture

Chaque question traverse un pipeline multi-agents avant de devenir une requête SQL. Voici le parcours complet, de l’intent à la réponse.

Pipeline Architecture
Cliquez sur les étapes pour plus de détails
Exemple concret
Exemple d’une exécution étape par étape
Utilisateur
Question en langage naturel
John Doe
Donne moi pour les briefs Peugeot la somme des spots et le GRP moyen
Cliquez pour lancer le pipeline
Question brute
texte libre
Analyse d’intention
Comprend le type de question et décide si elle concerne les données TV publicitaires
IntentAgent Mistral Large
Type détecté
SQL_SEARCH / OUT_OF_SCOPE
Analyse d’intention
SQL_SEARCH
Question identifiée comme recherche de données TV publicitaires
Question validée
Routage de complexité
Évalue si la question nécessite une décomposition en sous-étapes
ComplexityRouter Mistral Large
Ici : COMPLEX → pipeline orchestrateur
Complexité
SIMPLE / COMPLEX
Routage de complexité
COMPLEX
Agrégations multiples (SUM + AVG) sur tables croisées → orchestrateur
Question + contexte
Vérification des bornes
Vérifie les périodes, entités et détecte les multi-entités
BoundCheckAgent Mistral Large
Bornes validées
bornes complètes
Vérification des bornes
« Sur quelle année souhaitez-vous filtrer les briefs Peugeot ? »
Utilisateur → 2024
Année: 2024 Annonceur: Peugeot
Question + bornes
Identification du workspace
Détermine le domaine métier pour cibler la recherche
WorkspaceClassification Mistral Large
Domaine
workspace
Identification du workspace
PLANNING
Domaine: planification et suivi TV (briefs, spots, audiences)
Question + workspace
~200 tables
Recherche de tables
Identifie les tables pertinentes via un pipeline de retrieval en 3 étapes
BM25 Lucene
Recherche lexicale full-text
OpenSearch · ~50 candidats
Cross-Encoding Cohere
Reranking sémantique
Cohere Rerank API · top 20
Graph Cohesion
Renforce les tables liées par jointures
Graph scoring · top 12
Tables pertinentes
top 12
Recherche de tables
BM25 → 50 tables → Cohere Rerank → 20 → Graph → 12 retenues
SPOT SPOT_TARIF BRIEF ECRAN ECRAN_AUDIENCE ANNONCEUR PRODUIT CONTRAT ENGAGEMENT_CGRP CAMPAGNE CHAINE TRANCHE_HORAIRE
Tables candidates
Sélection & digest
Ne garde que les tables essentielles et génère un résumé structuré
TablePrunerAgent Claude Opus 4.5
Schéma simplifié
schema digest
Sélection & digest
Éliminées : non pertinentes pour le calcul GRP + spots
SPOT SPOT_TARIF BRIEF ECRAN ECRAN_AUDIENCE ANNONCEUR PRODUIT CONTRAT ENGAGEMENT_CGRP CAMPAGNE CHAINE TRANCHE_HORAIRE
Question + digest
Orchestrateur
Décompose en sous-tâches, exécute et synthétise
OrchestratorAgent Claude Opus 4.5
Boucle max 6 itérations
CONTINUECOMPLETE BLOCKEDNEEDS_CLARIFICATION
Tools
Recherche tables
Schéma & relations
Calcul réalisé
Docs métier
Suivi critères MP
Orchestrateur
🔧
Tool: Docs métier
« Comment croiser le GRP moyen avec les spots d’un brief ? »
« Sur quelle cible souhaitez-vous calculer le GRP ? »
Utilisateur → FRDA<50
🧠
Réflexion
Jointure SPOT → ECRAN → ECRAN_AUDIENCE pour récupérer le GRP par écran sur la cible FRDA<50, puis AVG. Filtrer BRIEF par annonceur Peugeot via ANNONCEUR.
Sous-tâche
Génération SQL
Traduit chaque sous-tâche en requête SQL Oracle valide
SqlGeneratorAgentV2 Claude Opus 4.5
SQL SELECT
SQL Oracle
Génération SQL
SELECT b.LIBELLE_BRIEF, COUNT(s.ID_SPOT) AS nb_spots, SUM(st.TARIF_NET) AS ca_total, ROUND(AVG(ea.GRP), 2) AS grp_moyen FROM BRIEF b JOIN ANNONCEUR a ON a.ID = b.ID_ANNONCEUR JOIN SPOT s ON s.ID_BRIEF = b.ID JOIN SPOT_TARIF st ON st.ID_SPOT = s.ID JOIN ECRAN e ON e.ID = s.ID_ECRAN JOIN ECRAN_AUDIENCE ea ON ea.ID_ECRAN = e.ID WHERE a.LIBELLE = 'PEUGEOT' AND b.ANNEE = 2024 GROUP BY b.LIBELLE_BRIEF
Requête SQL
Exécution SQL
Exécute la requête sur Oracle avec retry si erreur
SqlExecutionService Oracle DB + MyBatis
Résultats bruts
données tabulaires
Exécution SQL
Requête exécutée sur Oracle en 1.2s — 3 lignes retournées
BriefSpotsCA totalGRP moy.
Peugeot 2081 2473 842 100 €4.82
Peugeot 30088922 715 400 €5.14
Peugeot e-3086341 923 700 €3.97
Résultats + question
Génération de la réponse
Transforme en réponse française avec graphique si pertinent
LLM Answer Mistral Large
ChartAgent Mistral Large
Réponse + chart
texte + chart
Réponse générée
Pour les briefs Peugeot en 2024, voici le récapitulatif :
BriefSpotsCA totalGRP moy.
Peugeot 2081 2473 842 100 €4.82
Peugeot 30088922 715 400 €5.14
Peugeot e-3086341 923 700 €3.97
Nombre de spots par brief
1 200 900 600 300 208 1 247 3008 892 e-308 634
Le brief 3008 affiche le meilleur GRP moyen (5.14), tandis que le 208 cumule le plus grand nombre de spots.
Réponse affichée
Types de questions supportées
Quelques exemples de ce que pubGPT sait traiter.
Requêtage simple
Interrogation directe des données avec filtres, agrégats et tris.
Combien de spots Peugeot ont été diffusés en 2024 sur TF1 ?
Analyse croisée
Croisement de plusieurs métriques avec jointures complexes.
GRP moyen et CA net par brief Peugeot, ventilé par cible et chaîne ?
Plan de suivi
Génération de dashboards et plans de suivi complets.
Dresse-moi un plan de suivi des briefs Renault pour le S1 2025.
Connaissance métier
Questions sur les règles métier, calculs et définitions.
Comment est calculé le coût GRP dans un engagement ?
Observabilité
Traçabilité ? Dashboard Langfuse

Chaque requête, chaque appel LLM, chaque étape du pipeline est tracée, mesurée et visible en temps réel. Langfuse nous donne une observabilité complète sur les coûts, la latence, la qualité des réponses et le comportement des agents.

// ChatStreamingService.java
// Chaque appel LLM est automatiquement tracé

@Observe(name = "pipeline-execution")
public Flux<String> streamChat(String question) {

    // 1. Bound Check Agent
    @Observe(name = "bound-check")
    BoundCheckResult bounds = boundCheckAgent
        .analyze(question);

    // 2. PreFlight Check Agent
    @Observe(name = "preflight-check")
    PreFlightResult preflight = preFlightAgent
        .validate(question, bounds);

    // 3. SQL Generator Agent
    @Observe(name = "sql-generation")
    String sql = sqlGeneratorAgent
        .generate(question, preflight);

    return executeAndStream(sql);
}
Timeline
pubGPT-Pipeline 18.4s
sql-valid 1.00 quality 0.92 tokens 4,218 cost $0.034
BoundCheckAgent 2.1s 824 → 156 tokens
PreFlightCheckAgent 3.7s 1,102 → 243 tokens
TablePruner 0.8s 12 tables → 4
CrossEncoder.rerank 1.2s CamemBERT ONNX
SqlGeneratorAgent 8.3s 1,847 → 445 tokens
SqlExecution 1.4s Oracle • 342 rows
ResponseStream 2.9s SSE • 445 → 189 tokens
Évolution des coûts & tokens — 14 derniers jours
Coût / requête (USD)
Tokens / requête
$0 $0.01 $0.02 $0.03 $0.04 0 1.5k 3k 4.5k 6k 7 fév 10 13 16 20 fév $0.044 pic
$0.034USD
Coût moyen / requête
4,218tokens
Tokens moyens / requête
$510/mois
Budget estimé (500 req/j)
-12%
Tendance 14 jours
Question
0.0s
input utilisateur
BoundCheck
2.1s
980 tokens
PreFlight
3.7s
1,345 tokens
Pruner
0.8s
12 → 4 tables
Reranker
1.2s
CamemBERT
SQL Gen
8.3s
2,292 tokens
Execute
1.4s
342 rows
18.4s
Latence totale pipeline — 4,218 tokens — $0.034 USD
sql-validity
1.00
SQL syntaxiquement correct
is-french
1.00
Réponse en français
response-quality
0.92
Pertinence de la réponse
tables-relevant
0.88
Tables sélectionnées pertinentes
helpfulness
0.85
Utilité de la réponse
is-ambiguous
0.00
Clarification non nécessaire
error-analysis
0.00
Aucune erreur détectée
Changelog
L’évolution du projet, sprint après sprint.
Février 2025
Idéation & Recherche
Naissance de l’idée. Étude de QueryGPT (Uber), prototypage papier du pipeline multi-agents et recherche sur les approches Text-to-SQL.
Juin 2025
Benchmark LLM
Tests comparatifs de Claude, Mistral et GPT-4 sur la génération SQL Oracle. Sélection du duo Claude Opus + Mistral Large.
Septembre 2025
Début du développement
Mise en place du backend Spring Boot, intégration AWS Bedrock et premiers agents : Intent, Workspace et SQL Generator.
Octobre 2025
Premier POC
Première démo fonctionnelle : une question en français génère une requête SQL valide et renvoie des résultats depuis Oracle.
Novembre 2025
MVP
Pipeline complet avec orchestrateur, gestion des ambiguïtés, split multi-entités, interface Angular avec streaming SSE et dashboards interactifs.
Décembre 2025
Cross-encoder fine-tuning
Génération d’un dataset triplet synthétique et entraînement d’un modèle de reranking pour améliorer la précision du workspace retrieval.
Janvier 2026
Evals à 92 %
Campagne d’évaluation sur 200+ questions réelles. Le pipeline atteint 92 % de précision SQL correcte, validé par les équipes métier.
2026 & au-delà
La suite…
Amélioration continue : nouveaux post-processors, couverture de tables élargie, fine-tuning Mistral et intégration de feedbacks utilisateurs en boucle.
Qui sommes-nous ?
Trois profils complémentaires, une seule obsession : rendre la donnée TV accessible à tous.
Hassen Barbouche
Hassen Barbouche
Software Engineer

Architecte du pipeline multi-agents et du backend Spring Boot. Responsable de l’intégration LLM, du streaming SSE et de l’orchestration bout-en-bout.

8 ans · Canal+ / Pub TV
CANAL+
Myriam Benkhelifa
Myriam Benkhelifa
BA / Product Owner

Garante de la vision produit et du cadrage fonctionnel. Traduit les besoins métier en spécifications claires et pilote les priorités du backlog.

8 ans · Multi-clients
BNP Paribas VINCI SFR
Anas Mazouni
Anas Mazouni
Expert BI & Data

Référent données et modèle Oracle. Conçoit les schémas analytiques, valide la cohérence SQL et structure les métadonnées du RAG.

7 ans · BI & Data
BIC
Demander une démo
Remplissez le formulaire ci-dessous et notre équipe vous contactera pour planifier une démonstration personnalisée.
Demande envoyée !
Merci pour votre intérêt. Notre équipe vous recontactera sous 24h.
Repository en maintenance
Le repository GitHub de pubGPT est actuellement en cours de préparation. Nous finalisons le nettoyage du code, la documentation et les exemples de configuration avant de rendre le projet accessible publiquement.

Laissez-nous votre email via « Get a demo » et nous vous notifierons dès que le repo sera disponible.