Jules Charles
Toutes les études de cas

Étude de cas, application

Plateforme d'analyse média

Une plateforme d'analyse et de reporting pour les agences média : tableaux de bord pour plusieurs clients, back-office de configuration sans code, connexion sécurisée par lien magique et rapports hebdomadaires rédigés par l'IA.

Client
Éditeur SaaS dans l'adtech, projet sous accord de confidentialité
Mon rôle
Développeur full-stack : interface, authentification, back-office et intégration de l'IA
Durée
Depuis décembre 2025
Lieu
Paris, à distance

Le contexte

Mon client développe une plateforme qui réunit en un seul endroit les performances publicitaires des agences média et de leurs annonceurs : Google Ads, Meta, TikTok, Google Analytics et d'autres canaux. Les données sont centralisées dans un entrepôt de données géré par l'équipe data. Je m'occupe de tout le reste : ce que l'utilisateur voit, la façon dont il se connecte, l'outil qui permet à l'agence de tout configurer sans développeur, et le moteur qui rédige les analyses écrites.

Au départ, le projet était un tableau de bord conçu pour un seul annonceur. Il devait devenir une vraie plateforme, capable d'accueillir un nouveau client en quelques minutes, avec ses pages, ses indicateurs, ses utilisateurs et ses droits.

Ce projet est couvert par un accord de confidentialité : les captures et les noms des clients ne peuvent pas être montrés.

Le problème

Il fallait régler quatre difficultés en même temps.

Ouvrir la plateforme à plusieurs clients sans multiplier le code. Chaque annonceur a ses indicateurs, ses pages et ses filtres. Écrire un tableau de bord à la main pour chaque nouveau client ne tenait pas dans la durée.

Sécuriser l'accès à des données sensibles. Les résultats et les budgets d'un annonceur ne doivent jamais être visibles par un autre. La connexion devait rester simple pour des utilisateurs non techniques, avec des droits précis : lecture seule, édition, administration, et parfois un accès limité à une seule partie du périmètre.

Rendre l'équipe autonome. Les chefs de projet de l'agence devaient pouvoir créer un client, composer ses pages, choisir ses indicateurs et inviter ses utilisateurs sans ouvrir de ticket à chaque changement.

Faire gagner du temps aux consultants. Chaque semaine, les consultants passaient des heures à lire les tableaux de bord pour rédiger les bilans de leurs clients. Il fallait automatiser ce travail, avec des analyses fiables, sans chiffres inventés et adaptées aux usages de chaque client.

Ce que j'ai fait

  1. Authentification et contrôle d'accès. J'ai mis en place la connexion avec NextAuth : connexion Google et lien magique envoyé par e-mail via Resend, avec des modèles d'e-mail personnalisés. Chez les clients équipés de Microsoft 365, le scanner de sécurité d'Outlook (Safe Links) ouvrait les liens magiques avant l'utilisateur et les rendait inutilisables. J'ai revu le parcours pour que la connexion fonctionne aussi dans ces environnements. L'accès est réservé aux domaines autorisés, et toutes les routes d'API sont protégées par un middleware et un contrôle centralisé qui renvoie les bonnes réponses 401 et 403.

  2. Rôles et isolation entre clients. J'ai conçu des permissions à deux niveaux : des administrateurs pour toute la plateforme et, pour chaque client, des rôles lecteur, éditeur et administrateur. Un utilisateur peut aussi être limité à une partie du périmètre, pendant que la direction garde la vue d'ensemble. L'isolation entre clients est vérifiée côté serveur, pas seulement dans l'interface.

  3. Back-office de configuration sans code. C'est le cœur du projet. J'ai construit une interface d'administration qui permet de :

    • créer un nouveau client et le relier à ses sources de données ;
    • composer ses pages de tableau de bord et réorganiser les blocs par glisser-déposer ;
    • choisir les indicateurs affichés, leur ordre et les colonnes des tableaux ;
    • définir des filtres par page, des filtres prédéfinis et des alias pour renommer les campagnes ou les marchés ;
    • inviter des utilisateurs et leur attribuer un rôle ;
    • suivre l'utilisation de la plateforme et vider le cache quand la configuration change.

    Toute la configuration est stockée en base (PostgreSQL avec Prisma et Neon). Ajouter un client ne demande plus de toucher au code.

  4. Une architecture fondée sur des registres. Pour qu'un nouvel indicateur ou une nouvelle dimension apparaisse partout sans rien réécrire, j'ai regroupé les définitions dans trois registres : indicateurs, dimensions et plateformes publicitaires. Les libellés, les formats, les colonnes des tableaux, les filtres disponibles et les options du back-office en sont tirés automatiquement. Une centaine d'indicateurs se gèrent aujourd'hui depuis un seul fichier.

  5. Interface des tableaux de bord. Indicateurs clés comparés à la période précédente ou à une période personnalisée, graphiques de tendance, tableaux de ventilation par marché, plateforme ou campagne, classement des meilleures créations publicitaires, vues détaillées par point de vente. L'interface s'adapte au mobile et propose un mode sombre.

  6. Reporting hebdomadaire par l'IA. J'ai conçu le moteur qui rédige les bilans hebdomadaires avec Vertex AI (Gemini). Chaque semaine, une tâche planifiée rassemble les données de la période, assemble le prompt et génère un rapport structuré en sections. Ce prompt réunit le cadre d'analyse, le format propre au client, le schéma des données, le contexte métier enregistré en base et les documents partagés par l'agence sur Google Drive. Le modèle insère des balises qui deviennent des graphiques et des tableaux interactifs. Les données sont figées au moment de la génération : un rapport s'affiche toujours avec ses chiffres d'origine, sans relancer de requête.

  7. Fiabilité du moteur IA. Un rapport destiné à un client ne peut pas contenir de chiffre inventé. J'ai donc mis en place :

    • des tests de non-régression qui comparent la structure des données envoyées au modèle à une version de référence ;
    • un test qui garantit que le moteur reste générique et ne contient aucune règle propre à un client, puisque ces règles vivent dans la configuration de chaque client ;
    • un script de vérification qui contrôle qu'un client est prêt pour le reporting et rédige sa configuration à partir de ses vraies données ;
    • une méthode de travail fondée sur la mesure : taille réelle du prompt, un seul changement à la fois, et des conclusions tirées de plusieurs générations plutôt que d'une seule.
  8. Édition et suivi des rapports. Les consultants relisent et corrigent chaque rapport dans un éditeur avant de l'envoyer. Leurs corrections sont suivies, et un récapitulatif régulier montre ce qu'ils modifient pour améliorer les consignes données au modèle. Les rapports s'exportent en PDF.

  9. Assistant IA. Une interface de discussion intégrée au tableau de bord permet d'interroger les données du client en langage naturel, d'y joindre des documents et de s'appuyer sur la documentation de l'agence grâce à une recherche documentaire (RAG). La qualité des réponses est contrôlée par une tâche automatique.

  10. Performance. Chargement des clients en parallèle, plus aucun appel bloquant pendant le rendu serveur, cache Redis côté serveur et TanStack Query côté client, invalidé automatiquement dès qu'un administrateur modifie la configuration.

  11. Qualité du code. Découpage des gros composants, types centralisés, gestion d'erreurs uniforme sur toutes les routes d'API, logique métier isolée dans des modules testés et préversion de chaque branche sur Vercel avant la mise en production.

Next.jsTypeScriptReactNextAuthPrismaPostgreSQL (Neon)Vertex AI (Gemini)TanStack QueryRedis (Upstash)Tailwind CSSResendVercel

Le résultat

Multi-clientUn nouveau client configuré depuis le back-office, sans nouvelle ligne de code
Reporting automatiséUn bilan hebdomadaire rédigé par l'IA pour chaque client, puis relu et ajusté par les consultants
SécuriséConnexion sans mot de passe, rôles par client et accès limités à un périmètre

Un projet similaire ?
Parlons-en.

Vous avez un besoin proche de celui de ce client ? Décrivez-le-moi en quelques lignes : je réponds sous 24 heures avec mes questions et une première estimation.