Skip to content
··9 min de lecture

4 Semaines plus tard : Construire une plateforme marketing à 10 agents en faisant des siestes

J'ai construit 3 agents marketing IA avec une architecture multi-tenant en 4 semaines—autant que ce que j'avais accompli en un mois sur mon produit précédent, qui a mis 7 mois à être lancé.

MISE À JOUR (novembre 2025) : STRAŦUM est maintenant en ligne ! Ce qui avait commencé comme un "sprint de 4 semaines" a évolué en une application de veille marketing à 9 agents. Lis toute l'histoire du lancement : STRAŦUM : L'application marketing à 9 agents que j'ai construite en 75 jours

Essaie maintenant : sur stratum.chandlernguyen.com (Alpha privé - accès sur invitation uniquement)

Six jours. C'est le temps que j'ai attendu après le lancement de DIALØGUE avant de commencer mon prochain projet.

Tu penses peut-être : « tu ne devrais pas, je sais pas moi, faire la promotion de ton générateur de podcast ? Acquérir des utilisateurs ? Corriger des bugs ? » Et tu aurais absolument raison. Mais voilà la chose — je voulais voir jusqu'où et à quelle vitesse je pouvais me pousser avec les nouveaux outils d'IA. Appelle ça un speed run, appelle ça de l'excès d'ambition, appelle ça ce qui se passe quand Claude Code et Gemini 2.5 Pro rendent le développement fun à nouveau.

La chronologie qui ne devrait pas être possible

Mettons les choses en perspective :

- DIALØGUE : 6-7 mois du premier commit au lancement

- Marketing Suite : 4 semaines plus tard, j'ai déjà 3 agents IA fonctionnels qui communiquent entre eux

En regardant l'historique git, à la fin du premier jour, j'avais :

- Une architecture multi-tenant avec une hiérarchie organisation → client → campagne

- Un frontend React initial avec authentification

- Un Agent Stratégie d'Entreprise fonctionnel utilisant 11 frameworks différents, couvrant différentes régions. Ces frameworks sont utilisés par les plus grands cabinets de conseil mondiaux et régionaux. Par exemple :

- Une intégration Supabase avec Row Level Security

C'est plus que ce que j'avais accompli lors du premier mois de développement de DIALØGUE.

Les chiffres qui me font continuer

Quelques métriques rapides des 4 dernières semaines :

- Fonctionnalités livrées : 3 agents complets + architecture multi-tenant

- Lignes de code : ~117 000 (Python : 39k, TypeScript : 58k, SQL : 20k, Javascript : le reste)

- Tables de base de données : 39 (chacune servant un objectif précis - j'en parle plus loin)

- Commits Git : 232 (en environ 26 jours)

- Café consommé : Ne pose pas la question

Pourquoi ce projet est en réalité 10 fois plus difficile

DIALØGUE était complexe, certes. Des fonctions AWS Lambda, des Step Functions, puis la migration de tout ça vers Google Cloud Run. Mais fondamentalement, c'était un outil à usage unique : générer des podcasts. Un seul type d'utilisateur. Un seul workflow. Un seul chemin heureux.

Cette Marketing Suite ? Laisse-moi te montrer ce que je veux dire :

Un scénario réel : Une agence gère Nike et Adidas (hypothétiquement). Le stratège de l'agence utilise l'Agent Stratégie d'Entreprise pour analyser la position de Nike. Cette analyse se sauvegarde automatiquement dans la table strategy_outputs. Quand il passe à l'Agent Persona, celui-ci récupère la stratégie de Nike pour éclairer le développement des personas — mais il NE PEUT PAS voir les données d'Adidas. Pendant ce temps, les directives de marque de Nike dans la table brand_guidelines se propagent en cascade vers l'Agent Content, garantissant que chaque contenu utilise la voix de Nike, pas celle d'Adidas.

Cela nécessite :

- Une table organizations avec les types SME et AGENCY

- Une table clients (uniquement pour les agences)

- Des campagnes avec des clés étrangères vers l'org ET le client

- Des strategy_outputs avec isolation au niveau de la campagne

- Des brand_guidelines avec héritage hiérarchique

- Des politiques Row Level Security sur chaque table

Et ça, c'est juste un workflow. Maintenant multiplie ça par 10 agents, chacun avec ses propres besoins en données.

Ce qui fonctionne vraiment (et ce qui est encore du chaos)

Ce qui fonctionne (les 3 agents en production + Business Intelligence)

Agent Stratégie d'Entreprise : Ce n'est pas ton générateur de SWOT ordinaire. Il applique 11 frameworks complets :

- Analyse SWOT

- Les cinq forces de Porter (Rivalité concurrentielle, Pouvoir des fournisseurs, Pouvoir des acheteurs, Menace de substitution, Menace des nouveaux entrants)

- Business Model Canvas (9 blocs de construction de la conception d'entreprise)

- Priorisation ICE (Impact, Confiance, Facilité)

- Matrice BCG Growth-Share (Étoiles, Vaches à lait, Dilemmes, Poids morts)

- Framework VRIO (Valeur, Rareté, Imitation, Organisation)

- Modèle des Trois Horizons (Cœur actuel, Opportunités émergentes, Paris futurs)

- Stratégie Océan Bleu (Grille Éliminer, Réduire, Renforcer, Créer)

- Framework McKinsey 7S (Stratégie, Structure, Systèmes, Valeurs partagées, Compétences, Style, Personnel)

- Framework OKRs (Objectifs et Résultats Clés)

- Jobs to Be Done (Travaux des clients, Douleurs, Gains)

Chaque framework génère des données structurées qui alimentent les autres agents. Quand tu effectues une analyse SWOT, les « Opportunités » informent automatiquement les tactiques de croissance de l'Agent Stratégie Marketing.

Agent Persona : Génère des personas clients détaillés avec 15+ attributs ET — voilà la partie dingue — tu peux les interviewer. Une vraie conversation :

Toi : « Qu'est-ce qui vous frustre le plus dans les outils de gestion de projet actuels ? »

Persona (Fondateur de Startup Tech) : « Le changement de contexte constant. Je dois vérifier Slack, puis Asana, puis notre tableau de bord analytique. Le temps que je comprenne ce qui nécessite de l'attention, j'ai perdu 30 minutes. »

Chaque réponse d'interview devient plus intelligente car elle s'appuie sur l'historique persona_interactions. Les utilisateurs passent 20 à 30 minutes dans ces interviews. Un utilisateur a dit : « C'est comme des groupes focus, mais instantané et vraiment utile. »

Agent Stratégie Marketing : C'est le pont. Il prend ta stratégie d'entreprise, comprend tes personas, et crée des plans de mise sur le marché actionnables. Il ne dit pas juste « utilise les réseaux sociaux » — il associe des personas spécifiques à des canaux spécifiques avec des messages spécifiques. Tactiques zéro budget pour les startups bootstrappées. Allocation budgétaire 70-20-10 pour les PME. Orchestration multicanale pour les grandes entreprises.

Business Intelligence (le héros méconnu) : Chaque conversation avec n'importe quel agent extrait automatiquement des insights et construit la connaissance organisationnelle. Tu parles à l'Agent Stratégie d'une expansion sur le marché européen ? Cet insight est sauvegardé dans la table ai_insights. La semaine prochaine, quand tu utilises l'Agent Content, il connaît déjà tes plans d'expansion en Europe. Pas de répétition. Aucun contexte perdu.

En cours de construction (les 7 prochains agents)

Agent Exécution de Campagnes : C'est là que ça devient effrayant. Comment stocker en toute sécurité les clés API pour Google Ads, Meta, LinkedIn, TikTok ? Le plan actuel implique un stockage chiffré dans la table platform_credentials avec des journaux d'audit pour chaque appel API. Mais le modèle de permissions me tient éveillé la nuit.

Agent Analytics : Quelles API intégrer en premier ? Google Analytics 4 ? Les annonces Meta ? LinkedIn Analytics ? Le défi n'est pas seulement de récupérer les données — c'est de les normaliser entre les plateformes pour pouvoir vraiment comparer des pommes avec des pommes.

Agent ROI & Budget : Suivi en temps réel sur plusieurs plateformes avec différents modèles d'attribution. Comment réconcilier l'attribution data-driven de Google avec le modèle de Meta ? Je cherche encore la réponse.

Les 4 autres agents : Quick Wins (trouver des opportunités immédiates), Veille Concurrentielle (analyse éthique des concurrents), Succès Client (stratégies de fidélisation), et Agent Content (qui fonctionne déjà mais a besoin de peaufinage).

Les questions difficiles qui me tiennent éveillé

- Nom de la marque : comment devrais-je appeler cette application ? :P Si tu as de bonnes suggestions, dis-le moi ci-dessous !

- Sécurité des API : Comment gérer les clés API pour plusieurs plateformes publicitaires sans créer un cauchemar de sécurité ?

- Expérience cohérente : Comment faire en sorte que 10 agents spécialisés ressemblent à une plateforme unifiée plutôt qu'à 10 outils différents assemblés avec du scotch ?

- Et bien d'autres encore :)

L'évolution de l'architecture : apprendre de la douleur

Avec DIALØGUE, j'ai appris à la dure ce que sont les conditions de course. Tu te souviens du bug de 3 minutes à l'inscription ? Les nouveaux utilisateurs attendaient indéfiniment car le trigger d'auth et l'Edge Function se disputaient la création du même enregistrement utilisateur.

Cette fois-ci, je l'ai bien construit dès le premier jour. Voici un exemple concret de ces derniers jours :

Le problème : L'Agent Stratégie Marketing doit savoir quels personas existent, quelles stratégies ont été créées, et quelles directives de marque suivre — tout en maintenant une isolation complète des données.

La solution : Au lieu d'avoir chaque agent interroger plusieurs tables (lent, complexe, source d'erreurs), j'ai construit un Enterprise Context Service qui fait office de source unique de vérité :

// Avant : Chaque agent faisant plusieurs requêtes
  const personas = await supabase.from('personas').select()
  const strategies = await supabase.from('strategies').select()
  const guidelines = await supabase.from('brand_guidelines').select()

  // Après : Un service intelligent
  const context = await getEnterpriseContext(campaignId)
  // Retourne des données filtrées, mises en cache, correctement délimitées en 45ms

Le résultat ? L'Agent Content peut instantanément accéder aux directives de voix de marque, voir pour quels personas écrire, et comprendre la stratégie marketing — le tout en un seul appel qui respecte les frontières des données.

La différence de vitesse est réelle

Le 14 septembre, c'était dingue. Regarde le vrai journal git avec les horodatages :

08h04 - Migré le frontend vers un client API standardisé
08h19 - Standardisation API complète (100% de couverture)
11h34 - Phase 1 : Configuration centralisée des routes
            (plus d'URLs codées en dur nulle part)
13h00 - Phase 2 : Standardisation de toutes les 10 pages d'agents
            (patterns d'URL cohérents comme /agents/strategy/:campaignId)
13h10 - Phase 3.1 : Gestion centrale du contexte
            (hiérarchie workspace → client → campaign dans les URLs)
16h31 - Phase 3.2 : Les composants de navigation sont devenus context-aware
            (les fils d'Ariane affichent "Nike › Campagne Été › Agent Stratégie")
16h38 - Phase 3.3 : Tous les agents intégrés avec le système de contexte
            (changer de campagne conserve ta position)
17h03 - Phase 3.4 : Tests & Peaufinage
            (réduction de 92% de la taille du bundle par code splitting)

Six améliorations architecturales majeures. Le système d'URLs seul a touché plus de 40 fichiers dans toute la base de code. Avant l'assistance IA, c'aurait été une semaine de refactorisation avec probablement quelques fonctionnalités cassées au passage.

Et j'étais en réalité absent de l'ordinateur la plupart du temps :D

C'était un dimanche donc on est allé à l'église, au supermarché, on a pris un long déjeuner avec des fruits de mer, fait une sieste, été chez Costco et joué à des jeux sur mon iPad. Tout ça est possible grâce au développement assisté par IA. Merci à Claude Code et Gemini CLI !

Voici ce que cette standardisation des URLs signifie concrètement pour les utilisateurs :

// Avant : Contexte perdu lors du changement d'agent
  "/strategy" // Quelle campagne ? Quel client ? Mystère.

  // Après : Contexte préservé dans l'URL
  "/workspace/nike/campaign/summer-2025/agents/strategy"
  // Mets-la en favori, partage-la, rafraîchis-la - le contexte reste intact

Pourquoi construire ça alors que DIALØGUE vient d'être lancé ?

Parce que je peux. Parce que les outils sont devenus tellement bons. Parce qu'après 20+ ans dans la publicité, j'ai enfin les compétences pour construire la plateforme marketing que j'ai toujours voulu utiliser.

Mais surtout ? Parce que je veux documenter ce qui est possible quand on combine expertise métier et outils d'IA modernes. Ce n'est pas une question de remplacer les développeurs — c'est de les amplifier. Il y a quatre semaines, construire quelque chose d'aussi complexe aurait nécessité une équipe. Maintenant, ça demande de la détermination, de bons assistants IA, et une quantité dangereuse de caféine. (Bien que, comme je l'ai découvert plus tard en construisant une app iOS native sans connaître Swift, l'IA t'amène à environ 60% du chemin — les derniers 40% de goût et de finition sont encore entièrement humains.)

Et maintenant ?

Je vise un lancement alpha en octobre/novembre. Voici ce qui doit se passer :

- Finir les 7 agents restants

- Construire l'interface de planification de campagnes

- Résoudre la sécurité de l'intégration avec les plateformes publicitaires

- S'assurer que l'interface/flux agence est logique

- Tout tester avec de vrais utilisateurs (effrayant)

L'Agent Analytics seul devra agréger les données de Google Analytics, des plateformes publicitaires, et des métriques internes dans des tableaux de bord unifiés. L'Agent ROI a besoin d'un suivi budgétaire quasi en temps réel sur plusieurs plateformes.

Chacun est un projet en soi. Mais à ce rythme ? C'est vraiment en train de sembler possible ???

Tu veux suivre l'aventure ? Je partagerai plus de mises à jour au fur et à mesure que je construis.

Construire en public signifie partager le chaos autant que les victoires. En ce moment, c'est surtout du chaos. Mais c'est du chaos productif, et c'est ce qui compte.

Reviens dans un mois. Si tout se passe bien, tu pourras tester une plateforme marketing avec des agents IA qui font le travail d'un département marketing entier. Si ça ne se passe pas bien... au moins les articles de blog seront divertissants. :P

Cordialement, Chandler

Continuer la lecture

Mon parcours
Me suivre
Langue
Preferences