Solo product builder · Quatools EI · 10 ans dans le nucléaire à EDF · 6 ans Arcadium liquidation propre 2025 · aujourd'hui partout en France.
Cette page est un dump complet du corpus du portfolio — 112 chunks documentaires lus en direct depuis la base. Optimisée pour consommation par LLM (Claude, Perplexity, ChatGPT). Format aussi disponible en
llms-full.txt (plain text) et
corpus.json (JSON brut).
Dernière mise à jour du corpus : 19 mai 2026.
Email : alexandre@quatools.fr
· Téléphone : +33 6 18 29 13 26
· LinkedIn : Alexandre Quaglieri
Profil & doctrine
slug: profil-coordonnees
Coordonnées et identité professionnelle
- Email : alexandre@quatools.fr
- Téléphone : 06 18 29 13 26
- Adresse : 161 Chemin de l'Estanet, 30840 Meynes
- SIRET : 520 181 520
- Structure : EI Quaglieri Alexandre (Quatools)
Pour toute demande de devis, dispo, RDV ou question concrète, page contact : /alexandre/contact.
N1 · topic: profil ·
slug: profil-definition
Solo product builder : la définition
Moi, Alexandre Quaglieri, je suis un solo product builder. Une personne qui porte les 3 actes normalement répartis entre plusieurs personnes — le pourquoi, la construction, la mise sur le marché — et les exécute de bout en bout, sans téléphone arabe.
- Acte 1 — Le pourquoi : comprendre ce qui fait acheter les clients, identifier qui est prêt à payer, construire l'offre (JTBD, Value Proposition Canvas, Business Model Canvas, grille tarifaire, roadmap, backlog)
- Acte 2 — La construction : concevoir techniquement et livrer le produit (audit UX/UI, specs MVP, architecture, code, mise en production, MCP, conformité)
- Acte 3 — La mise sur le marché : trouver les premiers clients, valider la conversion, itérer (stratégie d'acquisition, pipelines commerciaux, campagnes, vente avant code, boucle d'itération)
Une seule tête, une seule vision, une seule exécution.
Ce n'est pas un titre marketing : c'est l'opération réelle. J'opère sous Quatools (EI Quaglieri Alexandre, SIRET 520 181 520). Je développe seul un portefeuille d'outils SaaS AI-native — BAAS Esport, Calendr, Storm, FluidStore, Factur-IA, Planificateur — et je fais du conseil freelance en parallèle (Product Management, formation IA pour TPE/PME via CMA Occitanie, missions Diag Innovation BPI France où j'interviens en aval du dossier monté par Inizia).
N2 · topic: profil ·
slug: profil-dette-information
La perte de signal — la vraie raison du solo product builder
Pendant 6 ans à Arcadium, j'ai cherché à résoudre un problème qui m'a coûté très cher : la perte de signal entre ce que je voulais qu'on construise et ce qui revenait codé.
Tous les profils y sont passés. Des devs débutants. Des devs seniors. Des équipes structurées. Des freelances ponctuels. Personne n'a jamais réussi à combler ce manque. Ce n'est pas un problème de compétence — c'est un problème structurel de la transmission humaine.
Concrètement : j'expliquais ce qu'il fallait construire, ils partaient coder, et au retour ça fonctionnait à 95 %. Les 5 % manquants, c'est ce que j'appelle la dette d'information. Soit on renvoyait pour refaire — coûteux et démoralisant. Soit on poursuivait avec les 5 % perdus.
Et il y avait l'autre couche du problème : l'alignement humain. Une nouvelle personne arrive au marketing, elle a une vision différente, elle demande des choses différentes — et on refond. Un nouveau PM entre dans l'équipe, ses priorités ne sont pas celles du précédent — et on refond encore. Chaque arrivée recale le produit sur une nouvelle vision, sans jamais converger.
Le 9ème mois de développement, le constat tombait : ces 5 % accumulés à chaque sprint plus les refontes liées aux changements d'équipe avaient généré des retards monstrueux, des reprises en cascade, des coûts faramineux. À l'époque, faire une app prenait 14 mois. Aujourd'hui, un solo product builder avec l'IA fait l'équivalent en quelques semaines.
Aujourd'hui, je n'ai plus cette dette. Pas parce que je suis meilleur — parce que je porte la vision et l'exécution dans la même tête, et parce que cette tête ne change pas. L'IA me permet de coder à la vitesse d'une équipe sans la perte de signal qu'une équipe génère, et sans les recadrages à chaque changement de personne.
C'est la raison de mon positionnement aujourd'hui. J'aime gérer de bout en bout. J'ai appris en faisant tous les postes sur Arcadium, et je peux maintenant tout faire de bout en bout pour apporter le plus de valeur possible à mes clients, sans me cacher derrière personne. Ce que je fais, j'en suis le seul responsable.
slug: profil-partenaire-27-ans
Le partenaire que j'aurais voulu trouver à 27 ans
Quand j'ai démissionné d'EDF à 27 ans pour lancer Arcadium, j'ai cherché — sans le trouver — un partenaire qui réunissait :
- Quelqu'un qui aurait pu dire « qualifie l'élasticité de ton marché avant de lever » avant que je n'accepte un rythme de croissance que le marché esport amateur ne pouvait pas tenir
- Quelqu'un qui aurait monté un dossier BPI quand j'avais besoin d'oxygène
- Quelqu'un qui aurait su dire non aux features que personne n'avait demandées
- Quelqu'un qui aurait gardé la maîtrise du code sans me la confisquer
- Quelqu'un qui n'aurait pas facturé l'air, mais pris une part du résultat
- Quelqu'un qui avait déjà raté pour de vrai, et savait éviter les mêmes pièges
Personne ne réunissait tout ça. Aujourd'hui, c'est exactement ce que je propose. « Je suis le partenaire que j'aurais voulu trouver en face de moi à 27 ans. » Celui qui sait quoi faire — et surtout ce qu'il faut ne pas faire.
slug: profil-pourquoi-solo
Pourquoi un solo builder peut valoir plus qu'une équipe
L'intuition dit « plus de têtes = mieux ». Sur des projets de petite à moyenne envergure, la réalité dit le contraire.
- Aucune perte de signal — chaque transmission entre humains érode la nuance. Un dev qui n'a jamais entendu le client recodera mal son besoin.
- Cohérence d'arbitrage — les compromis produit/biz/tech sont tranchés par la même tête, en faveur du résultat global, pas du sous-domaine de quelqu'un.
- Vitesse d'exécution — pas de PRD à valider, pas de réunion d'alignement, pas de comité de priorisation. La décision et l'exécution se touchent.
- Skin in the game — le builder seul porte le risque, donc il dit « ne fais pas ça » quand c'est juste — pas « oui chef » pour préserver son contrat.
- Coût aligné sur la valeur — pas d'agence, pas de chef de projet, pas de comm interne à financer. On paie le produit, pas la structure.
- Démultiplié par l'IA — un solo builder armé d'IA + ses propres outils fait aujourd'hui ce qu'une équipe de 3 à 5 personnes faisait il y a 5 ans.
Pieter Levels, Marc Lou, Tony Dinh, Danny Postma — une génération entière de builders solos atteint en duo ou seul des résultats que des séries A peinent à reproduire. La méthode est validée, juste sous-représentée en France.
slug: profil-principe-ai-native
AI-native par défaut, pas en option marketing
Tout ce que je construis pour un client est exposé via MCP, donc utilisable depuis Claude, depuis un agent custom, ou depuis n'importe quelle UI. Pas un « AI-powered » marketing — une vraie API canonique pour agent.
En 2022, j'ai construit un système de matching joueurs / clubs en Python avec FAISS — la bibliothèque de recherche vectorielle de Meta — pour Arcadium. Personne autour de moi ne savait que ça existait. Aujourd'hui c'est partout. « J'ai 4 ans d'avance non pas parce que j'ai prévu, mais parce que je vais chercher la solution là où elle est, pas là où c'est à la mode. »
La même logique vectorielle structure aujourd'hui FluidStore (cf. projet fluidstore), et les serveurs MCP sont partout dans le portefeuille (BAAS, Calendr, Storm, Factur-IA, Planificateur). AI-native n'est pas un mot-clé, c'est une doctrine d'architecture.
slug: profil-principe-cas-concrets
Travailler sur vos cas concrets, pas sur des slides génériques
Pas de démo générique, pas de slide stock, pas d'exemple « imaginons que… ». Je travaille sur ce que le client a sur la table, et le résultat est utilisable dès la première session.
C'est particulièrement vrai sur les formations IA : on apporte ses propres documents, son propre métier, ses propres frictions — et la session devient un atelier de travail réel, pas une session théorique.
slug: profil-principe-cicatrices
Vous bénéficiez des cicatrices
2 ans d'alternance RTE sur le réseau haute tension 63-400 kV à Nîmes (2008-2010) — où j'ai appris la rigueur opérationnelle sur des systèmes critiques avant même d'entrer dans le nucléaire.
10 ans d'industrie nucléaire EDF Cruas-Meysse — technicien spécialisé électrotechnique, préparateur méthode, formateur réactif national. Où j'ai vu combien d'idées meurent dans les comités, et où j'ai appris à porter une responsabilité technique sur des systèmes où l'erreur n'est pas une option.
6 ans d'entrepreneuriat SaaS jusqu'au bout du cycle : création, levée, croissance, pivots, liquidation propre 2025.
3 opérations immobilières menées de bout en bout — dont une autoconstruction primée par sa technicité.
Un prix d'innovation industrielle EDF.
Cette accumulation n'est pas un CV — **c'est ce qui me permet de dire vite « ne faites pas ça » quand je sens venir un piège que j'ai déjà payé.**
C'est la doctrine "Builder lucide" : direct, sans bullshit, j'assume les échecs (la liquidation Arcadium en particulier), et j'utilise mes propres erreurs comme matière pour aider d'autres porteurs de projet à les éviter.
slug: profil-principe-formation
La formation comme laboratoire
Chaque session de formation m'oblige à clarifier mes méthodes, à les simplifier, à les défendre face à des questions naïves. Les clients récupèrent du code mieux pensé parce qu'il a été expliqué la semaine d'avant à une salle.
Légitimité formation :
- Formateur Bac+5 marketing/commerce (interventions sur l'IA, le business, le positionnement produit)
- Référencé CMA Occitanie pour les formations IA TPE/PME
- Formateur réactif national EDF pendant 10 ans (modules techniques pour techniciens, chargés d'affaires, préparateurs méthode) — rédaction de procédures, formation lecture schéma, régimes de neutres, maintenance alternateur principal 900 MW
Concrètement aujourd'hui : interventions Bac+5 marketing/commerce (séminaire IA novembre 2025, étudiants opérationnels en 5h), formations CMA Occitanie pour TPE/PME, modules courts sur l'usage pro de l'IA, l'appel d'offres public, le positionnement business.
slug: profil-principe-un-interlocuteur
Un seul interlocuteur du JTBD à la mise en marché
Premier principe de ma façon de travailler : le client parle à la personne qui code, qui pense le modèle, qui dit « ne faites pas ça » quand c'est juste. Pas un commercial qui répète, pas un PM qui transmettra, pas un dev qui reformulera.
Pendant 6 ans à Arcadium, j'ai porté seul produit + dev + business + juridique + comptabilité + RH. J'ai tout pris en pleine figure. C'est là que j'ai compris ce qu'un client attend vraiment de quelqu'un comme moi : pas un expert d'un domaine, un homme-orchestre qui fait tenir le tout debout.
Méthode (3 actes)
N2 · topic: methode ·
slug: methode-acte-1-pourquoi
Acte 1 — Le pourquoi
C'est la phase de conception amont, avant la ligne de code. Comprendre ce qui fait acheter les clients, identifier qui est prêt à payer, construire l'offre.
## Ce que je livre dans cet acte
- Les jobs-to-be-done de vos clients identifiés et hiérarchisés
- Votre Value Proposition Canvas formalisé
- Votre Business Model Canvas construit
- Votre grille tarifaire conçue comme levier produit (le pricing est un choix produit, pas un calcul comptable)
- Votre roadmap produit et backlog priorisé
- Une qualification de l'élasticité de votre marché — avant que vous engagiez de gros budgets sur des hypothèses non vérifiées
- Le rapport BPI final formalisé si on est dans le cadre d'une mission Diag Innovation
## Le pourquoi — JTBD, terrain, conversations
Je commence par le manque, jamais par la solution. JTBD, terrain, conversations clients, données d'usage — ce qui paie n'est pas toujours ce qui crée le plus de valeur, et l'écart entre les deux est tout le job.
Mini-exemple Arcadium : 99,9 % des joueurs esport sont amateurs (500 millions dans le monde), sans club, sans coach, sans identité collective — alors qu'ils vivent leurs victoires et défaites avec la même intensité que les sportifs traditionnels. Là était le pourquoi. Pas dans la techno, pas dans la marque, dans le manque structurel d'encadrement.
## Le modèle économique — qui paie, quand, comment
Le modèle économique, c'est moi qui le conçois — c'est ma valeur ajoutée principale sur l'acte 1. Pas dans la dimension financière comptable, dans la dimension produit : qui paie, quand, comment, à quel prix, avec quelle mécanique de capture.
## Ce que je ne fais pas dans cet acte
- Monter le dossier BPI initial pour vous — Inizia ou autre partenaire spécialisé du montage s'en charge. J'interviens en aval, sur la mission elle-même.
- Répondre à un AO public pour vous
- Lever des fonds pour vous
C'est tout l'objet de l'acte 1.
N2 · topic: methode ·
slug: methode-acte-2-construction
Acte 2 — La construction
C'est là que la plupart abandonnent ou délèguent. Je code. Concevoir techniquement et livrer le produit en exploitation.
## Ce que je livre dans cet acte
- Un audit UX/UI de l'existant si on est sur une refonte
- Les specs MVP détaillées
- L'architecture technique et fonctionnelle
- Le code (Next.js, Astro, Supabase, Cloudflare)
- La mise en production et le monitoring
- L'intégration MCP comme API canonique pour agent
- La conformité réglementaire quand nécessaire (RLS multi-rôle, OAuth Authorization Server, Factur-X, Chorus Pro)
## Trois piliers de cet acte
Stack moderne maîtrisée — Next.js, Astro, Supabase, Cloudflare, MCP, embeddings vectoriels, Stripe Connect, FullCalendar pro, Expo mobile.
Rigueur opérationnelle héritée de 10 ans EDF — RLS multi-rôle, OAuth Authorization Server complet, conformité réglementaire (Factur-X, Chorus Pro), gestion des cas critiques.
Discipline AI-native — MCP comme API canonique sur chaque outil, pas chatbot ajouté par-dessus.
N2 · topic: methode ·
slug: methode-acte-3-marche
Acte 3 — La mise sur le marché
C'est l'acte que la plupart des fondateurs techniques ratent : croire que livrer = vendre. Construire un produit qui marche ne suffit pas, il faut savoir le mettre en face de gens qui paient. Et c'est la leçon centrale que j'emporte d'Arcadium.
## Ce que je livre dans cet acte
- Votre stratégie d'acquisition posée
- Vos pipelines commerciaux construits
- Vos premières campagnes lancées
- Un protocole de vente avant code (valider la conversion avant d'engager des coûts de développement)
- La boucle d'itération produit/marché (feedback → ajustement)
## Quatre disciplines de mise en marché
1. Valider la conversion avant la production — Arcadium : 200+ joueurs interrogés à l'été 2019, 90 signés sans aucune plateforme. La vente précède le code.
2. Construire les pipelines d'acquisition — Pas attendre les clients passivement. Identifier les canaux, les outiller, les nourrir avec un rythme tenable.
3. Lancer les premières campagnes — Tester les messages, mesurer les taux de transformation, identifier le segment qui répond le mieux.
4. Itérer le go-to-market au même rythme que le produit — A/B test des messages, validation des canaux, boucle commerciale → feedback produit → ajustement.
N1 · topic: methode ·
slug: methode-actes-canoniques
La méthode en 3 actes — définition canonique
Ma méthode se décompose en 3 actes systématiques, dans cet ordre. C'est le vocabulaire de référence — toute description de ce que je fais utilise ces trois noms exacts et leur contenu défini ci-dessous.
## Acte 1 — Le pourquoi
Comprendre ce qui fait acheter vos clients, identifier qui est prêt à payer, construire votre offre.
Ce que je livre dans cet acte :
- Les jobs-to-be-done de vos clients identifiés et hiérarchisés
- Votre Value Proposition Canvas formalisé
- Votre Business Model Canvas construit
- Votre grille tarifaire conçue comme levier (le pricing est un choix produit, pas un calcul comptable)
- Votre roadmap produit et backlog priorisé
- Une qualification de l'élasticité de votre marché — avant que vous engagiez de gros budgets sur des hypothèses non vérifiées
- Le rapport BPI final formalisé si on est dans le cadre d'une mission Diag Innovation
Ce que je ne fais pas dans cet acte :
- Monter le dossier BPI initial (Inizia ou autre partenaire spécialisé s'en charge — je travaille en aval, sur la mission elle-même)
- Répondre à un AO public pour vous
- Lever des fonds pour vous
## Acte 2 — La construction
Concevoir techniquement et livrer votre produit en exploitation.
Ce que je livre dans cet acte :
- Un audit UX/UI de l'existant si on est sur une refonte
- Les specs MVP détaillées
- L'architecture technique et fonctionnelle
- Le code (Next.js, Astro, Supabase, Cloudflare)
- La mise en production et le monitoring
- L'intégration MCP comme API canonique pour agent — pour que votre produit soit pilotable par n'importe quel agent IA, pas juste un chatbot widget collé
- La conformité réglementaire quand nécessaire (RLS multi-rôle, OAuth Authorization Server, Factur-X, Chorus Pro)
## Acte 3 — La mise sur le marché
Trouver vos premiers clients, valider votre conversion, itérer.
Ce que je livre dans cet acte :
- Votre stratégie d'acquisition posée
- Vos pipelines commerciaux construits
- Vos premières campagnes lancées
- Un protocole de vente avant code (valider la conversion avant d'engager des coûts de développement — comme j'ai fait avec Arcadium en signant 90 joueurs sans plateforme)
- La boucle d'itération produit/marché (feedback → ajustement) pour que la mise en marché s'aligne avec la maturité du produit
## Pourquoi cette séquence est non négociable
Aucun acte n'est sautable. Un projet mal construit à l'acte 1 (mauvais modèle économique, demande mal identifiée) ne se rattrape pas plus tard. Une livraison sans projet construit devient feature gratuite. Et une livraison qui ne se vend pas reste un actif mort.
C'est aussi pourquoi je suis solo product builder. Quand les 3 actes sont répartis entre 3 personnes différentes — un commercial qui identifie le besoin, un dev qui livre, un marketeux qui vend — chaque transmission érode l'information. Maîtriser les 3 actes en une seule tête, c'est éliminer ces frictions et cette perte d'information. Pas un luxe, une condition de cohérence du résultat.
## Ce que je NE fais PAS comme service (clarification de positionnement)
- Montage de dossiers BPI pour clients (Inizia le fait, j'interviens en aval sur la mission)
- Réponse à AO publics pour clients (sauf les AO que j'ai gagnés moi-même pour mes propres marchés, comme la formation CMA Occitanie)
- Levée de fonds comme service (je peux fournir la matière stratégique d'un deck en bout de mission Acte 1, mais c'est un livrable secondaire, pas mon offre principale)
- Ingénierie financière comme service à part entière
Ce que j'ai déjà fait moi-même reste légitime comme preuve de capacité — levée Arcadium ~1 M€, AO CMA Occitanie gagné en 2026 — mais ce n'est pas ce que je propose comme service à mes clients.
N1 · topic: methode ·
slug: methode-vue-ensemble
Ma méthode en 3 actes
Le réflexe « de l'idée au premier client » est ma constante. Industrie (prix d'innovation EDF), immobilier (3 opérations dont une autoconstruction primée par sa technicité), logiciel (Arcadium, BAAS, Storm, FluidStore, Factur-IA…) : trois domaines, trois fois la même boucle.
Cette boucle se décompose en 3 actes systématiques, dans cet ordre :
1. Le pourquoi — comprendre ce qui fait acheter les clients, identifier qui est prêt à payer, construire l'offre
2. La construction — concevoir techniquement et livrer le produit en exploitation
3. La mise sur le marché — trouver les premiers clients, valider la conversion, itérer
Aucun acte n'est sautable. Un projet mal construit à l'acte 1 (mauvais modèle économique, demande mal identifiée) ne se rattrape pas plus tard. Une livraison sans projet construit devient feature gratuite. Et une livraison qui ne se vend pas reste un actif mort — c'est la leçon centrale que j'emporte d'Arcadium.
C'est aussi pourquoi je suis solo product builder. Quand les 3 actes sont répartis entre 3 personnes différentes — un commercial qui identifie le besoin, un dev qui livre, un marketeux qui vend — chaque transmission érode l'information. Le dev recode mal le besoin du client. Le marketeux survend ce que le produit ne peut pas livrer. Le modèle économique conçu en amont n'est plus appliqué avec rigueur en aval. Maîtriser les 3 actes en une seule tête, c'est éliminer ces frictions et cette perte d'information — pas un luxe, une condition de cohérence du résultat.
Savoir-faire technique
slug: savoir-faire-edf-innovation
L'industrie comme école — l'innovation EDF avant Quatools
Au début de mon parcours EDF (CNPE Cruas-Meysse), j'ai conçu un outil de diagnostic pour la vérification des matériels de protection des tableaux industriels 380 V.
Le constat : les systèmes existants étaient purement manuels, lourds, encombrants et coûteux. Le manque : la vérification pouvait être semi-automatisée, et l'instrumentation allégée.
Résultat de l'innovation :
- Réduction de taille du matériel embarqué
- Réduction de poids — gain logistique et ergonomie sur site
- Réduction de coût d'acquisition et de maintenance
- Semi-automatisation du diagnostic vs systèmes 100 % manuels — exécution plus rapide et moins exposée à l'erreur humaine
Reconnaissance : prix local de l'innovation sur le site, nomination au prix national EDF qui a suivi.
Ce que ça raconte : déjà à ce moment-là, la même boucle "repérer un manque concret + concevoir un produit + le pousser jusqu'à la mise en service" qui structure aujourd'hui Quatools.
slug: savoir-faire-fil-commun
Le fil commun — la méthode reproductible
Trois domaines (industriel, immobilier, logiciel), une même méthode en trois actes :
1. Identifier le manque et caler le modèle économique — ce que les solutions existantes ne couvrent pas, et comment on capte la valeur (dispositifs publics inclus dès l'amont)
2. Concevoir et exécuter la livraison — sans délégation paresseuse, jusqu'à un produit fonctionnel
3. Mettre sur le marché et vendre — convertir l'objet livré en résultat tangible : prix d'innovation EDF reconnu, plus-value immobilière captée, abonnés payants Arcadium, marché public CMA remporté
C'est exactement la signature qui structure le portfolio Quatools — appliquée bien avant Quatools, dans des contextes radicalement différents. La régularité du résultat à travers des univers aussi distants est la meilleure preuve que cette méthode tient.
slug: savoir-faire-immobilier
L'immobilier — trois opérations en autonomie complète
Autoconstruction maison 130 m² à Alissas (Ardèche) — « le chef-d'œuvre »
Construite pendant la période EDF Cruas, conçue, planifiée et bâtie de bout en bout. Combinait :
- Architecture audacieuse — escalier aérien à marches en porte-à-faux mural (calcul d'encastrement, dimensionnement structure, normes), étages ouverts sur le séjour, plafond cathédrale, volumes traversants
- Domotique intégrale — bandeaux LED RGB programmables sur corniches périmétriques et sous plans de travail, scénarisation, intégration cohérente
- Design contemporain — choix de matériaux, équipements et lumières pensés comme un tout
Vendue en 2025 pour réallouer le capital après la liquidation Arcadium — choix rationnel douloureux, mais structurant.
Réhabilitation d'un hangar à Meynes (Gard) — création de deux logements (55 m² + 80 m²) pour mes parents, qui n'avaient jamais eu de maison stable. Ce qui valait la peine d'être protégé, je l'ai protégé.
Acquisition judiciaire studio 32 m² au Grau-du-Roi (Port-Camargue) — acquis aux enchères judiciaires, mise en location optimisée (Airbnb + LMNP), cash-flow récurrent.
Trois opérations, trois angles complètement différents — autoconstruction technique, réhabilitation à valeur ajoutée, opportunisme judiciaire — exécutées sans déléguer la conception ni la maîtrise d'ouvrage. La même boucle que j'apporte aujourd'hui dans le dev et le conseil business.
slug: savoir-faire-mcp
Mon savoir-faire MCP
MCP (Model Context Protocol) est un protocole sorti par Anthropic fin 2024. Très peu de devs maîtrisent l'implémentation côté serveur. J'en ai construit 6 serveurs MCP custom en production :
- Planificateur — projets, tâches, timesheets (17 outils MCP)
- FluidStore — store vectoriel multi-résolution + schémas dynamiques + navigation hiérarchique (déployé sur Cloudflare Workers)
- BAAS Esport — gestion clubs, équipes, abonnements, paiements (33 outils MCP)
- Storm / Ephi Sport admin — back-office mission BPI (catalogue dimensions mentales, mappings questions, paramètres algorithme — admin pilotable de bout en bout par Claude)
- Factur-IA — factures, clients, entreprise, devis (avec OAuth Authorization Server complet : RFC 8414 + Dynamic Client Registration RFC 7591)
- Calendr — multi-org, ressources, plannings
Intégrations standards utilisées : Gmail · Google Calendar · Google Drive · Supabase.
C'est cette maîtrise qui me permet de positionner l'AI-native comme une vraie discipline d'architecture, pas un mot-clé marketing.
slug: savoir-faire-oauth-conformite
Le savoir-faire OAuth et conformité réglementaire
Implémentations que je maîtrise et qui sont rares dans l'écosystème SaaS français :
OAuth 2.1 + OAuth Authorization Server pour MCP (Factur-IA) :
- RFC 8414 (metadata)
- RFC 7591 (Dynamic Client Registration)
- Transports HTTP et SSE
- Tokens Bearer personnels, hash SHA-256, max 5 tokens/user (BAAS)
Conformité réglementaire :
- Factur-X (PDF/A-3 + XML CII embedded selon spec EN 16931) — génération à la main via `@react-pdf/renderer` + `pdf-lib`
- Chorus Pro — transmission directe via la plateforme officielle de l'État pour le secteur public (B2G ready)
- RGPD données sensibles — RLS multi-rôle sur données psychologiques classées sensibles (Storm) — refonte source de vérité sur 34 fichiers
Cette rigueur opérationnelle vient directement de mes 10 ans EDF où l'erreur réglementaire ou de sécurité n'est pas une option.
slug: savoir-faire-rls-supabase
Le savoir-faire RLS multi-tenant Supabase
Supabase est ma stack principale pour les apps multi-tenant. Plusieurs patterns avancés en production :
Multi-tenant par RLS (BAAS) — 20 tables, isolation totale par club, un joueur peut avoir un compte associé à plusieurs clubs en même temps avec son propre périmètre.
Multi-schéma (Calendr cohabite avec BAAS) — un seul projet Supabase héberge `public` (BAAS) ET `calendrier` (Calendr) avec isolation totale par schéma. Le code utilise systématiquement `.schema("calendrier")` pour ne jamais polluer l'autre app. Économie d'infra + cohérence multi-app Quatools.
RLS multi-rôle (Storm) — un même utilisateur peut être athlète + coach + admin avec des policies RLS qui composent proprement. Refonte de `public.users` source de vérité unique sur 34 fichiers. Données psychologiques classées sensibles RGPD.
Migrations propres — Storm a 40+ migrations en production (`questionnaire_engine_phase1/2/3`, `mbti_engine_phase1`, `mental_dimensions_catalog`, `psych_profiles`, `account_status`, `worksheet_library_system`, `learn_documents`). Pas de big bang, ajout incrémental.
slug: savoir-faire-stripe
Le savoir-faire Stripe Connect multi-flux
Stripe Connect maîtrisé sur plusieurs configurations en production :
Arcadium (multi-flux B2C + B2B) — B2C abonnement mensuel + B2B abonnement annuel par utilisateur, sur la même base, avec gestion multi-clubs.
BAAS (commission split automatique) — les paiements vont directement au compte du club, BAAS prélève sa commission (2 %) via Stripe Connect. Pas de flux intermédiaire BAAS, pas de problème comptable.
Storm (commission par séance) — préparateurs mentaux comme comptes connectés, évite la double TVA sur les commissions plateforme.
Cette maîtrise n'est pas un sujet "j'ai lu la doc Stripe" — c'est 3 configurations différentes en production avec leurs spécificités fiscales et opérationnelles.
slug: savoir-faire-vectoriel
Mon savoir-faire embeddings vectoriels
FAISS en 2022 sur Arcadium — recherche vectorielle (la bibliothèque ML de Meta) pour le matching joueurs ↔ clubs en production, bien avant la vague LLM grand public. Pipeline : DM Instagram → embedding → recherche FAISS → top 5 clubs → LLM choisit → réponse personnalisée.
FluidStore en 2026 — base vectorielle multi-résolution avec embeddings Matryoshka (`text-embedding-3-small` tronqué à 64D / 256D / 1024D selon longueur et importance). Architecture 3 couches (Qdrant Cloud + Supabase + Cache RAM). Performance < 100 ms en recherche.
Pas un coup de chance, une habitude technique : 4 ans de pratique vectorielle entre Arcadium 2022 et FluidStore 2026, avec une continuité conceptuelle directe.
Stack & architecture (dont ce chat IA)
N3 · topic: stack ·
slug: architecture-chat-ia-overview
Comment ce chat IA est construit (vue d'ensemble)
Le portfolio que tu utilises est un chat IA conversationnel développé seul par Alexandre Quaglieri en mai 2026. Il sert deux objectifs : démonstration technique de ses capacités, et qualification honnête pour décider si Alexandre est pertinent pour un projet donné.
Stack technique :
- Front : Astro 5 (mode hybride SSR + static), React 19 pour l'île chat, Tailwind, Lenis pour le scroll smooth
- API : routes Astro déployées en serverless Vercel, streaming SSE via `ReadableStream`
- DB : Supabase Postgres + pgvector pour les embeddings 1536D (OpenAI text-embedding-3-small)
- LLM : Anthropic Claude (Haiku 4.5 + Opus 4.7 en routage hybride)
- Auth admin : HTTP Basic Auth, page d'admin SSR sur `/alexandre/admin/usage`
Le corpus contient environ 100 chunks documentaires structurés (projets, méthode, parcours, tarifs, citations, doctrines), indexés sémantiquement et taggés par niveau pyramide UX (N0-N4) et topic (profil, methode, projets, stack, services, parcours).
Pas de framework de chat tout-fait. Tout est codé from scratch : la boucle agentique, le streaming, la gestion du cache de prompt, le routage de modèle, le tracking d'engagement, le système de panels. C'est délibéré — démontre la maîtrise du fond, pas juste l'intégration d'API.
N3 · topic: stack ·
slug: architecture-deploy-workflow
Build, déploiement et workflow
Le code vit dans un repo privé sur GitHub. Stack de déploiement :
- Vercel : auto-deploy sur push `main`. Adaptateur `@astrojs/vercel@^8` (Astro 5). Serverless Node 22.
- Supabase cloud : projet dédié Frankfurt (ref `zoiaajbtqwigzmdfahhb`), Postgres 17 + pgvector + pg_trgm. Migrations via SQL Editor (pas de Supabase CLI sur ce projet).
- OpenAI : juste pour les embeddings (text-embedding-3-small). Pas de génération.
- Anthropic : génération via SDK officiel `@anthropic-ai/sdk`.
Workflow d'évolution du corpus :
1. Modifier les `.md` dans `src/content/portfolio/corpus/`
2. Lancer `npx tsx scripts/portfolio/ingest-docs.ts` (ou utiliser le MCP `document_upsert` pour injecter directement en DB sans redeploy)
3. Push sur `main`
4. Vercel rebuilds en ~25-30s
5. Optionnel : relancer `warm-cache.ts` si les chips initiales changent
Pages SEO statiques en parallèle :
- `/alexandre/projets/[slug]` : page par projet
- `/alexandre/parcours`, `/alexandre/services`, `/alexandre/contact`
- `public/llms.txt` à la racine pour les LLM externes (Claude.ai, Perplexity)
- `public/sitemap.xml` avec toutes les URLs `/alexandre/*`
Total : 11 pages statiques prerenderées + 1 SPA chat (`/alexandre`) + 4 API routes serverless.
N3 · topic: stack ·
slug: architecture-logging-admin
Logging, admin et mesure du coût réel
Tout est tracé en DB Supabase. Tables :
- `conversations` : 1 ligne par cookie session (`aq_portfolio_sid` HttpOnly 1 an), avec country (`x-vercel-ip-country` Vercel), user_agent, referer, started_at
- `messages` : 1 ligne par message user/assistant, avec role, content, tool_calls JSON, tokens_input/output/cache_creation/cache_read séparés, model, latency_ms
Page admin SSR sur `/alexandre/admin/usage` (HTTP Basic Auth via env vars `ADMIN_USER` + `ADMIN_PASSWORD`) avec :
- 3 cards période (aujourd'hui / 7 jours / 30 jours) — coût + tokens + breakdown par modèle
- Liste des 80 dernières conversations, triées par date du dernier message
- Transcripts expandables (dernier message en haut pour debug rapide)
- Tooltips Démarrée → Dernier message, user_agent avec flag "BOT DÉTECTÉ" si pattern crawler
Le calcul de coût applique les tarifs Anthropic exacts :
- Input non-caché : prix plein
- Cache writes (cache_creation) : ×1.25 prix input
- Cache reads (cache_read) : ×0.10 prix input
- Output : prix output du modèle
Page protégée + endpoint `/api/admin/probe` qui diagnostique la conf admin (longueurs des env vars, comparaison de credentials sans exposer les secrets). Pratique pour résoudre les bugs d'auth.
N2 · topic: stack ·
slug: architecture-meta-demo
Démonstration vivante du savoir-faire
Ce chat lui-même est une démonstration de ce qu'Alexandre peut construire seul, en 3 semaines de mai 2026 :
- Système conversationnel multi-tools avec orchestration agentique
- Qualification visiteur active avec 4 profils scriptés
- Tracking d'engagement (navigation + dwell time) sans appel API
- Routage hybride de modèles LLM pour optimiser coût/qualité
- Prompt caching avancé pour diviser les coûts par 6
- Pattern panel + chat avec streaming SSE complet
- Préchargement statique des cas fréquents pour coût marginal nul
- Dashboard admin avec analytics fines et calcul de coût exact
Si tu te demandes si Alexandre peut construire un système conversationnel sur mesure pour ton SaaS — un agent client, une assistance produit, un onboarding intelligent — ce chat est la preuve. Tu peux demander à l'agent comment il est construit et il te répondra avec substance, parce que cette documentation fait partie de son corpus.
C'est le test ultime d'un produit AI-native : il sait expliquer comment il fonctionne.
N3 · topic: stack ·
slug: architecture-navigation-tracking
Tracking de navigation + dwell time par panneau
Une mécanique différenciante : on track le parcours du visiteur dans les panneaux sans faire un seul appel API tant qu'il n'a pas posé de question.
Côté client : un `useEffect` sur l'ID du panneau actif capture l'entrée et le départ. La cleanup function fire avant le changement de panneau, ce qui permet de calculer le delta en secondes et de l'ajouter à un `dwellMapRef`. Un listener `visibilitychange` met le compteur en pause quand l'onglet passe en background.
Au moment de la question : le client envoie `navigation: ['arcadium', 'baas', 'tarifs']` + `dwell: { arcadium: 134, baas: 4, tarifs: 45 }` dans le body POST. Le serveur traduit en signal qualitatif :
- < 5s = survolé (clic accidentel ou parcours rapide)
- 5-30s = parcouru (lecture en diagonale)
- 30s-2min = lu (lecture attentive)
- > 2min = creusé (vraie immersion)
L'agent reçoit ça dans le dynamic suffix : "Avant cette question, le visiteur a navigué : 'Arcadium' (2 min 14s, creusé) → 'Sport Manager' (4s, survolé) → 'Tarifs' (45s, lu)". Il adapte sa réponse au signal sans commenter explicitement la navigation.
Coût : zéro avant la première question. Quel que soit le temps passé à explorer, quel que soit le nombre de panneaux cliqués, on ne paie rien tant que le visiteur n'engage pas activement.
N3 · topic: stack ·
slug: architecture-pattern-panel-chat
Le pattern panel + chat — séparation visuelle quoi/pourquoi
Le différenciateur visuel principal : au lieu d'un scroll infini comme la plupart des portfolios IA, l'interface a deux zones complémentaires :
Panel à gauche = le QUOI : structure visuelle du concept, listes synthétiques, schémas, screenshots. C'est le contenu scannable en 10 secondes. Format informationnel, dense.
Chat à droite = le POURQUOI : histoire derrière le concept, conviction, expérience vécue, débat. Format narratif et conversationnel.
Quand le visiteur pose une question, l'agent appelle le tool `show_panel(type, id)` pour afficher un panneau correspondant à gauche, pendant que sa réponse texte streame dans le chat. Le speech apporte la profondeur que le panneau ne montre pas — c'est de la complémentarité, pas de la paraphrase.
Conséquence pratique : la même question peut afficher des contenus très différents selon le profil du visiteur détecté (prospect vs recruteur vs pair builder). Les panneaux sont des JSON validés Zod au build, donc pas de chance d'incohérence runtime.
N3 · topic: stack ·
slug: architecture-preloaded-chips
Préchargement statique des chips initiales — zéro appel au mount
Première version du portfolio : à chaque page load, on faisait un prefetch des 4 chips initiales en API pour avoir des réponses instantanées au clic. Coût observé : ~20¢ par page load avant que le visiteur engage. Sur un test dev où la page est rechargée 25 fois → ~$5 gaspillés.
Refactor : les réponses des chips initiales + default_followups sont pré-calculées une seule fois via le script `scripts/portfolio/warm-cache.ts` et stockées dans `src/lib/portfolio/preloaded-answers.json`. Au mount, `PortfolioApp` injecte ces réponses dans son `cacheRef` Map.
Résultat : un visiteur qui clique sur "Je débarque, présente-moi Alexandre" obtient la réponse instantanément depuis le cache client. Zéro appel API. La réponse est computée 1 fois (par Alexandre quand il régénère), servie à des milliers de visiteurs.
Le warm-cache se relance quand le system prompt change, le corpus est re-ingéré, les chips elles-mêmes changent, ou le modèle par défaut change. Coût one-shot ~$0.80 (4-7 chips × Haiku).
N3 · topic: stack ·
slug: architecture-prompt-caching
Prompt caching Anthropic — division par 10 du coût input
Le system prompt fait environ 150 lignes (~3000 tokens) + tools schema (~2000 tokens) = ~5000 tokens fixes envoyés à chaque tour. Sans optimisation, sur un agentic loop de 4-5 itérations, c'est 25 000 tokens d'input rien que pour le contexte.
Optimisation appliquée : prompt caching Anthropic avec `cache_control: { type: 'ephemeral' }` placé sur (1) la fin du system prompt statique, et (2) le dernier tool. Anthropic cache automatiquement la portion jusqu'au marqueur. TTL 5 minutes.
Effet : après le 1er tour, les tokens cachés sont facturés à 10 % du prix d'input (cache_read), au lieu du prix plein. Sur un agentic loop, ça divise le coût par ~6.
Le system prompt est structuré en 2 blocs : (1) statique cachable (philosophie + faits non-négociables + tools + référence pyramide), (2) dynamique non-caché (détection niveau pour ce message + engagement + focus panel courant + parcours navigation). Le bloc dynamique ne fait que ~300 tokens.
Logging détaillé en DB : on stocke `tokens_input`, `tokens_cache_creation` (writes), `tokens_cache_read` (hits) séparément pour calculer le coût exact, pas une borne haute.
N3 · topic: stack ·
slug: architecture-pyramide-ux
Pyramide UX à 5 niveaux pour adapter la profondeur
À chaque question reçue, un classifier substring-based détecte le niveau implicite parmi 5 :
- N0 — Accueil : salutations type "salut", "bonjour". Réponse courte, pas de panneau, invitation à creuser.
- N1 — Argument : questions tactiques ou découverte ("qu'est-ce que tu fais", "présente-toi"). Direct, narratif, accroche commerciale.
- N2 — Contexte : "comment tu travailles", "raconte". Format long, anecdotes vécues, défense de posture.
- N3 — Architecture : "quelle stack", "techniquement". Technique haut niveau, structure, décisions d'archi.
- N4 — Expertise : "montre-moi le code", "le pipeline". Technique dense, pair-à-pair, peut montrer du code/prompts/algos.
La détection passe par des hints de mots-clés normalisés (NFD + lowercase) déclarés dans `pyramid.json`. C'est volontairement simple — pas de classifier embeddings — parce que ça marche en pratique et c'est zéro latence.
Mécanique clé : la recommandation niveau est injectée dans le system prompt à chaque tour. L'agent peut surcharger si le contexte conversationnel le justifie, mais par défaut il suit. Et le modèle LLM est aussi routé sur ce niveau : Haiku pour N0-N2, Opus pour N3-N4.
N3 · topic: stack ·
slug: architecture-routage-modele
Routage hybride Haiku + Opus pour maîtriser le coût
L'orchestration de modèles est un choix architectural lourd de conséquences. Trois approches possibles :
1. Tout Sonnet (modèle médian, $3/$15 par M tokens) → équilibré mais cher en agentic loop
2. Tout Haiku (rapide, $0.80/$4 par M tokens) → moins subtil sur les nuances
3. Hybride (ce qu'Alexandre a choisi) → Haiku par défaut, Opus quand la profondeur compte
L'implémentation : la fonction `pickModel(levelId)` consulte le niveau pyramide détecté pour le message. Si N3 ou N4 → `claude-opus-4-7`. Sinon → `claude-haiku-4-5`. Le modèle est verrouillé pour tout l'agentic loop du tour pour rester cohérent (un seul modèle, pas de mélange).
Effet observé : 80% des tours sur Haiku (~5¢/question), 20% sur Opus (~25-40¢/question). Coût moyen pondéré ~12¢/question, vs 20¢ en tout-Sonnet. Et la qualité monte d'un cran sur les questions techniques où ça compte.
`max_tokens` est aussi adapté : 1000 par défaut (Haiku), 2000 sur Opus pour laisser plus de matière aux réponses N3/N4.
N4 · topic: stack ·
slug: architecture-tools
Tools de l'agent — 6 outils orchestrés en boucle agentique
L'agent dispose de 6 outils JSON-schema, qu'il peut appeler en parallèle ou en séquence dans la même réponse :
1. `show_panel(type, id)` — affiche un panel à gauche pendant que la réponse texte streame. Le panel ID est validé contre la liste exhaustive (zod enum).
2. `list_panels_by_context(topic?, level?)` — filtre les panneaux disponibles par topic et niveau pyramide. Utile pour trouver le bon panel quand l'agent hésite.
3. `search_documents(query, project?)` — RAG sur les ~100 chunks du corpus. Match cosine avec threshold 0.5, top 5 résultats. Embeddings 1536D OpenAI.
4. `qualify_visitor(profile, confidence, signals)` — tag le visiteur (prospect_mission / recruteur / pair_builder / curieux / journaliste). Stocké pour analytics.
5. `recommend_action(intent, cta_label, cta_target)` — émet un CTA visible (RDV, mail, page, externe, exit). Rendu comme un bouton sous la bulle bot.
6. `suggest_followups(items[])` — propose 2-4 chips de relance contextuelles. Remplace une map statique pour des suggestions vraiment ancrées dans le tour courant.
La boucle agentique côté serveur :
- Anthropic streaming API
- `tool_use` events détectés → exécution locale → `tool_result` injecté dans `messages`
- Reboucle jusqu'à `stop_reason === 'end_turn'`
- SSE émis vers le client pour chaque type d'événement : `text` deltas, `panel`, `cta`, `followups`, `tool_use_start`, `error`, `done`
Streaming progressif : la réponse texte arrive token par token via SSE, le panneau s'affiche au moment où l'agent décide de l'afficher (pas à la fin), les chips s'actualisent quand l'agent émet `suggest_followups`. Pas de gros bloc figé.
N2 · topic: stack ·
slug: architecture-voix-agent
Voix de l'agent — "agent du visiteur", pas commercial d'Alexandre
Décision philosophique fondamentale : l'agent est l'agent du visiteur, pas celui d'Alexandre. Son allégeance est à la personne qui visite, pas à Alexandre.
Concrètement, l'agent peut disqualifier honnêtement : "non, je ne pense pas qu'Alexandre soit le bon match pour ton besoin, regarde plutôt Malt sur des juniors freelance". C'est ça qui lui donne sa crédibilité — contrairement à un chatbot commercial qui pousserait toujours le contact.
Quatre profils visiteur scriptés avec leurs questions de qualification :
- Prospect mission : "Tu en es à quel stade — idée à valider, prototype à faire, code qui rame, ou produit live à industrialiser ?"
- Recruteur : "Tu cherches un dev en CDI, un freelance long-terme, ou un consultant pour une mission cadrée ?"
- Pair builder : "Tu bosses sur quoi en ce moment ?"
- Curieux / étudiant / journaliste : pas de qualification agressive, laisse parcourir librement.
L'agent parle d'Alexandre à la 3ème personne ("Alexandre a fait", "sa doctrine", "il", "lui"), pas en 1ère personne — il est un assistant tiers, pas Alexandre lui-même. Les citations directes en guillemets restent au JE pour préserver la voix d'Alexandre.
slug: stack-backend
Ma stack backend
- Node.js · TypeScript 5
- Supabase — Postgres + Auth + Storage + RLS multi-rôle + Edge Functions + schémas multiples + SSR via `@supabase/ssr`
- MongoDB (Arcadium historique)
- Cloudflare Workers — déploiement edge (FluidStore MCP)
- Python — scripts d'ingestion, recherche vectorielle (FAISS Arcadium 2022, FluidStore 2026)
- PHP (Arcadium historique)
slug: stack-deploiement
Ma stack déploiement et cloud
- Vercel — déploiement Next.js, Astro, fonctions serverless
- Supabase — Postgres managé, Auth, Storage, Edge Functions
- Cloudflare Workers — edge compute (FluidStore MCP)
- Scaleway — infra alternative (Supabase self-hosted exploré)
slug: stack-formation-perso
Ma formation
- Major de promo BTS Électrotechnique (sixième de l'académie, 20/20 au projet de fin d'études)
- Bac+5 Formateur marketing, commerce, communication
- Autodidacte en développement logiciel (Next.js, React, Supabase, Stripe, Node.js, Python, MCP)
- Product Manager certifié BPI France (Diag Innovation)
- Formateur référencé CMA Occitanie
- Veille technique active : MCP (depuis fin 2024), Tailwind 4, Next.js 16, React 19, embeddings Matryoshka, modèles LLM frontier
slug: stack-frontend
Ma stack frontend
- React (16-19, dont React 19 Server Components matures, Actions, transitions)
- Next.js 15 et 16 (App Router, Server Actions)
- Astro (sites statiques + îles interactives, mode hybride avec adaptateur Vercel)
- Expo (mobile native iOS/Android, code partagé via `app/`, `components/`, `services/`)
- Tailwind 4 (early adopter, signal en prod)
- Radix UI + shadcn/ui — composants accessibles modulaires
- FullCalendar 6 (6 plugins : core, daygrid, timegrid, list, interaction, resource, resource-daygrid, resource-timegrid)
- TanStack Query — couche data (cache + invalidation)
- Zustand — state UI local
- React Hook Form + Zod — formulaires validés
- date-fns + date-fns-tz — gestion timezones, point critique pour un calendrier en prod
- AOS (Animate On Scroll) sur Rocalys
slug: stack-ia
Ma stack IA
- Claude API (Anthropic SDK officiel) — modèles Sonnet et Opus
- Claude Vision — extraction Kbis dans Factur-IA, analyse documents
- OpenAI embeddings Matryoshka — `text-embedding-3-small` tronqué à 64D / 256D / 1024D
- FAISS (Meta) — recherche vectorielle, Arcadium 2022
- Qdrant (Cloud) — moteur vectoriel FluidStore
- RAG — Retrieval-Augmented Generation, pattern utilisé sur le portfolio chat IA
- Prompt engineering — discipline appliquée sur tous les agents
- Agents IA autonomes — Claude Desktop, Claude Code, agents custom
slug: stack-industriel
Mon domaine industriel — 10 ans EDF
10 ans EDF Cruas-Meysse en électrotechnique nucléaire :
- Systèmes haute tension 380 V à 400 kV
- Automatismes industriels
- Maintenance préventive et corrective
- Alternateurs 900 MW, onduleurs, redresseurs, groupes électrogènes
- Tableaux 380 V, 6,6 kV, 24 kV, 400 kV
- Avant EDF : alternance RTE 2008-2010 sur postes THT 63 à 400 kV (Nîmes)
Cette rigueur industrielle irrigue toute ma stack logicielle : RLS multi-rôle, OAuth complet, conformité réglementaire (Factur-X, Chorus Pro), gestion des cas critiques — autant de patterns qui viennent de l'habitude de bosser sur des systèmes où l'erreur n'est pas une option.
slug: stack-mcp
Ma stack protocole agent (MCP)
- MCP SDK officiel `@modelcontextprotocol/sdk`
- mcp-handler (Vercel) — wrapper Next.js / Astro
- OAuth Authorization Server complet : RFC 8414 (metadata), Dynamic Client Registration RFC 7591
- Transports HTTP et SSE
- 6 serveurs MCP custom en production : Planificateur (17 outils), FluidStore (Cloudflare Workers), BAAS (33 outils), Storm admin, Factur-IA (avec OAuth), Calendr
- Intégrations standards : Gmail · Google Calendar · Google Drive · Supabase
slug: stack-paiements
Ma stack paiements et conformité
- Stripe Connect — paiements multi-flux, comptes connectés, commission split automatique
- Factur-X (PDF/A-3 + XML CII embedded selon spec EN 16931) — généré à la main via `@react-pdf/renderer` + `pdf-lib`
- UBL · CII — formats e-invoicing
- Chorus Pro — transmission directe via la plateforme officielle de l'État (B2G)
slug: stack-parcours-pro
Mon parcours professionnel — chronologie
- 2025 — aujourd'hui · Quatools (EI Quaglieri Alexandre) — Solo product builder. Portefeuille d'outils AI-native (BAAS, Calendr, Storm, FluidStore, Factur-IA, Planificateur). Missions clients (Storm BPI, Rocalys, Oxytalis, MUC, CMA Occitanie).
- 2019-2025 · Arcadium Esport SAS — Fondateur & CEO. SaaS B2B/B2C esport amateur. 4 000+ abonnés payants cumulés (sur 25 000 inscrits), ~1 M€ levés cumulés (Business Angels + subventions + dernière levée 650 k€ equity/levier), grands comptes (SNCF Gaming, dstny). Liquidation propre 2025.
- 2010-2020 · EDF / CNPE Cruas-Meysse — Technicien électrotechnique, puis Préparateur méthode, puis Formateur réactif national. Prix d'innovation industrielle (outil de diagnostic protections 380 V), formations adoptées au niveau national.
- 2008-2010 · RTE — Réseau de Transport d'Électricité (Nîmes) — Alternance technicien postes THT 63 à 400 kV.
- 2006-2008 · Artisan automatisme (Narbonne) — Installation et dépannage automatismes industriels (niveleurs quai, portes sectionnelles, portes souples).
Projets
arcadium
slug: arcadium-construction
Comment j'ai co-construit la plateforme Arcadium
Mon rôle technique sur Arcadium a évolué pivot après pivot — un parcours qui démontre la polyvalence en environnement réel, pas en théorie.
V1 — équipe interne, je dessinais
CTO + dev internalisés. Mon job : vision produit et mockups. Je posais le quoi, ils posaient le comment.
Après les pivots — j'ai dû descendre dans le code
Externalisation de l'équipe dev (France + Inde, parce que je ne trouvais pas mon besoin en France). Je me suis mis à prototyper moi-même ce que je voulais voir, pour valider avant de le confier.
Phase finale — full PM/PO + co-architecte technique
Experts UX/UI sur le design. Côté tech, je fournissais au lead dev tout ce qu'un PM/PO doit fournir : besoins, specs, flux, edge cases. Avec lui : recherche des solutions techniques, architecture BDD, lecture de la doc, choix de stack. Les nouvelles features, je les prototypais directement en prod, on les testait sur des vrais utilisateurs, puis on les refondait proprement.
Hands-on sur les zones critiques :
- Matching vectoriel FAISS (lib Meta) — joueurs ↔ clubs, développé par moi-même en 2022, bien avant la vague LLM grand public
- Bots conversationnels pour débloquer un goulot d'étranglement côté acquisition — codés et déployés par moi
Stack co-architecturée : MongoDB · React · Node.js · PHP · Stripe Connect multi-flux (B2C mensuel + B2B annuel sur la même base) · apps web + mobile.
Ce que ça apporte aujourd'hui : je sais piloter des équipes internes et externalisées, je sais construire de bout en bout parce que je suis passé par à peu près tous les postes (PM, PO, prototypeur, co-architecte, dev ponctuel sur les zones critiques). Et avec l'IA, le mode d'opération a changé : faire bien plus avec moins de monde, et faire sauter une grosse couche de complexité organisationnelle.
slug: arcadium-faiss
Le matching FAISS d'Arcadium (2022) : 4 ans avant la vague LLM
En 2022, j'ai construit un système de matching joueurs ↔ clubs en Python avec FAISS — la bibliothèque de recherche vectorielle de Meta — pour Arcadium. Personne autour de moi ne savait que ça existait. Aujourd'hui, les embeddings et la recherche vectorielle sont partout.
Pipeline réel en production :
- DM Instagram d'un joueur → embedding → recherche FAISS → top 5 clubs → LLM choisit le meilleur → réponse personnalisée envoyée
- Placement de chaque joueur dans le club optimal parmi une quarantaine de clubs partenaires (niveau, jeu, langue, fuseau, affinités)
Faire de la recherche vectorielle avec FAISS en 2022 sur un vrai problème métier — avant que tout le monde ne se mette aux embeddings — ce n'est pas un coup de chance, c'est une habitude technique. La même logique vectorielle structure aujourd'hui FluidStore, ma base vectorielle multi-résolution MCP-native.
Mon pattern : « Je vais chercher la solution là où elle est, pas là où c'est à la mode. »
slug: arcadium-fin
Pourquoi Arcadium s'est arrêté
Liquidation judiciaire propre en 2025.
- SAS qui joue son rôle de protection
- Sortie maîtrisée, gérée par moi-même
- Patrimoine personnel préservé
- Pas de dette toxique, pas de fournisseurs lésés
Ce n'est pas l'histoire d'un produit qui ne marchait pas, ni d'un marché inexistant. Six ans, 25 000 utilisateurs inscrits, 4 000+ abonnés payants, SNCF Gaming et dstny en clients B2B. Le produit marchait, la trajectoire était saine.
Le vrai sujet est plus subtil — et c'est la leçon que j'emporte partout : j'ai fait le choix de lever pour accélérer. Sauf que le marché de l'esport amateur n'avait pas l'élasticité pour absorber l'injection de cash. Plus on mettait dans l'acquisition, plus le CAC montait, sans que la LTV suive le rythme imposé par le cap table.
Quand on lève, on accepte l'obligation de croissance qui va avec. Si le marché ne suit pas, c'est mécaniquement intenable. Pas un défaut d'exécution, un défaut de qualification de l'élasticité du marché avant la levée.
Je l'assume directement : « Avant d'envisager une levée, il faut qualifier que le marché est scalable au rythme imposé par les investisseurs. Et si la trajectoire dit non, savoir sortir proprement avant que ça devienne subi. »
C'est ce qui fonde mon approche actuelle chez Quatools : faire moins, faire bien, durer. Et ne lever que si la mécanique de marché le permet vraiment.
slug: arcadium-heritage
Ce qui survit d'Arcadium en 2026
La liquidation n'a pas tué la marque. Ce qui survit en 2026 :
- Pierre Pastor (ex-COO Arcadium) exploite aujourd'hui BAAS sur Rocalys — 6 ans de partenariat continu avec moi
- L'Arcadium Cup continue : finale Mars 2026, partenariat MUC Omnisports + Rocalys
- Le modèle d'organisation club que j'ai inventé sert toujours de socle aux clubs ex-partenaires
- La communauté se rassemble encore, en uniforme Arcadium, lors des événements
La marque est devenue plus grande que la boîte qui la portait. Le cycle se boucle.
Ce que j'apporte à un client : l'art de construire des relations et un modèle qui dépassent la structure juridique. Une marque peut survivre à sa boîte si elle a été construite proprement.
slug: arcadium-levee
La levée Arcadium et l'ingénierie financière
Une levée n'est pas uniquement une histoire à raconter — c'est une histoire bâtie sur des fondations business solides. Ingénierie financière, traction marché, adéquation business/stratégie : tout ça se prépare dès les premiers mois, pas la veille du roadshow.
Pour Arcadium :
- Modèle hybride BtoC + BtoB validé : BtoC abonnement mensuel (licence Arcadium + adhésion club), BtoB abonnement annuel par utilisateur — clients SNCF Gaming, dstny
- ~1 M€ levés cumulés sur le parcours : Business Angels en amorçage, subventions publiques, puis dernière levée de 650 k€ (equity + levier) pour accélérer
- 442 abonnés actifs simultanés au pic, 4 000+ payants cumulés sur 6 ans (sur 25 000 inscrits — funnel inscription → conversion en payant à surveiller, indicateur précieux pour qualifier un marché)
- Projection financière manuscrite N-2 → N+5 : 90 → 3 361 joueurs, ARR 27k€ → 1,7M€, CA 27k€ → 4,5M€, EBITDA -82k€ → +458k€ — le calcul AVANT le deck
- Stratégie de scale en 3 paliers (chaque palier = nouveau modèle de revenus) : Step 1 clubs amateurs en ligne, Step 2 ancrage territorial physique, Step 3 compétition pro/semi-pro
Leçon à transmettre : lever = pari « tout ou rien ». Il faut en avoir conscience et mesurer les indicateurs prédictifs qui disent si la levée est pertinente — ou si c'est une erreur stratégique à éviter.
Ce que j'apporte à un client en phase de levée : les fondations business sur lesquelles l'histoire tiendra, plus la lucidité sur le pari "tout ou rien" — ça se mesure avant, pas après.
slug: arcadium-pitch
Arcadium en une phrase
Arcadium Esport (2019-2025) était une plateforme SaaS B2B/B2C qui structurait la pratique de l'esport amateur — comme le sport traditionnel l'a fait il y a un siècle.
Chiffres du parcours :
- 25 000 utilisateurs inscrits sur la durée de vie
- 4 000+ abonnés payants cumulés sur 6 ans
- 442 actifs simultanés au pic
- 27 coachs animés
- ~1 M€ levés au total (Business Angels + subventions publiques + dernière levée 650 k€ equity + levier)
- Clients grands comptes : SNCF Gaming, dstny
- Liquidation judiciaire propre 2025
La marque survit aujourd'hui via BAAS sur Rocalys et via l'Arcadium Cup (finale Mars 2026 avec MUC Omnisports).
C'est ma vitrine du cycle complet : de la vision au démarrage, de la croissance à la sortie, sans détour. Pas une expérience d'incubateur — six ans de production avec des vrais clients qui payaient.
slug: arcadium-validation-marche
Comment j'ai validé le marché Arcadium
Avant de coder une ligne, j'ai validé que le manque était réel — et que les gens étaient prêts à payer pour le combler.
Insight initial : 500 millions de joueurs amateurs dans le monde, 99,9 % des joueurs esport sont amateurs, aucune structure pour les encadrer. Mais l'insight ne suffit pas : il faut prouver que ce manque vaut de l'argent réel.
Le terrain :
- 200+ joueurs interrogés durant l'été 2019
- Entre juillet et août 2019 : 90 joueurs signés sans aucune plateforme, sans aucun produit — juste sur la promesse d'un service à venir
- MVP scrappy — premiers coachings organisés à la main, sans plateforme, juste pour valider la valeur perçue
Première leçon payée : la discipline du JTBD. Refuser les features que les utilisateurs disaient vouloir mais ne payaient pas. Plusieurs mois perdus à coder ce qui ne ramenait rien avant d'apprendre à dire non.
4 000 personnes ont fini par valider en payant sur 6 ans, 442 actifs au pic.
Ce que ça apporte à un client aujourd'hui : la discipline de valider avec de l'argent réel avant de construire — pas avec des signups, pas avec des sondages. Le client ne dépense pas son budget sur le mauvais produit.
baas
slug: baas-architecture
Architecture BAAS
- 20 tables PostgreSQL avec RLS multi-tenant — un joueur peut avoir un compte associé à plusieurs clubs en même temps, chacun avec son propre périmètre d'abonnements et d'achats
- 106 routes API
- Widgets pluggables cross-domain — chaque widget s'intègre sur le site du club, hérite du theming, et permet inscription/paiement sans quitter le site
- Stripe Connect — les paiements vont directement au compte du club, BAAS prélève sa commission (2 %)
- Boutique + abonnements — produits one-time (merch, places d'événements) et récurrents (cotisations, premium)
- 33 outils MCP dans `mcp-server-baas/` (handlers players, teams, subscriptions, club, analytics) — pilotage en langage naturel pour les admins
- OAuth 2.1 pour MCP (tokens Bearer personnels, hash SHA-256, max 5 tokens/user)
- Hub Notification (Discord webhook + Email) en architecture MCP-like, brique réutilisable Quatools
- Système de logs / fil d'activité par club
- UX gaming poussée : champion pool drag&drop S/A/B/C/Training, composition d'équipe par poste, mode draft
slug: baas-defi
Le défi technique : trois exigences qui tirent dans des sens opposés
Construire BAAS, c'est marier trois exigences contradictoires :
1. Permissivité maximale — chaque club a ses propres pratiques (formats d'abonnement, structures d'équipes, types de produits, parcours d'inscription). L'outil doit s'adapter, pas l'inverse.
2. Marque blanche totale — les widgets BAAS s'intègrent directement sur le site du club, à ses couleurs, à son identité. Du point de vue du joueur ou supporter, c'est le club qui a son propre système.
3. UX simple — les présidents et administrateurs de clubs ne sont pas des admins SaaS expérimentés. La configuration doit rester intuitive malgré la profondeur fonctionnelle.
> « Les supporters et joueurs pensent que chaque club a développé sa propre solution. En réalité, ils utilisent tous le même socle BAAS, branché via widget sur leur site. »
slug: baas-modele
Modèle économique BAAS
Modèle indie product studio assumé : « BAAS m'appartient. Pierre exploite. On partage. » Pierre Pastor (ex-COO Arcadium) gère l'opérationnel commercial sur le marché sport et esport.
Modèle Rocalys actuel : revenus récurrents (licence d'exploitation, semi-passif, à sécuriser via contrat formalisé).
Modèles tarifaires proposés aux nouveaux clients :
- Licence forfaitaire (modèle Rocalys), ou
- Commission sur les transactions plateforme — positionnement compétitif vs les acteurs du marché (Stripe Connect prélève la commission BAAS automatiquement, le reste va directement au compte du club)
BAAS est aussi repositionné en « client R&D » qui finance le socle commun Quatools (vertical-agnostique, réutilisable sur toutes les autres briques de l'ERP).
slug: baas-pitch
BAAS Esport — la première pierre de l'ERP multi-SaaS Quatools
BAAS est une plateforme multi-tenant en marque blanche pour clubs sportifs et esport. Stack : Next.js 16 · Supabase (Postgres + RLS multi-tenant + Edge Functions) · Stripe Connect · TypeScript · MCP server custom (33 outils).
C'est la première brique d'un projet plus large : un ERP multi-SaaS marque blanche qui pilote tout le business d'une structure depuis une plateforme à ses couleurs, sans louer 8 SaaS différents.
Pierre Pastor (ex-COO Arcadium) exploite BAAS sur Rocalys aujourd'hui — partenariat continu depuis 6 ans. C'est le premier client de production de l'ERP Quatools.
slug: baas-pourquoi
Pourquoi BAAS existe
L'origine : pendant 6 ans, les clubs esport partenaires d'Arcadium dépendaient de la plateforme centrale pour leur service club. Quand Arcadium s'est arrêté, ces clubs avaient besoin d'une plateforme qui leur permette de continuer sous leur propre marque, sans dépendre d'un acteur central. BAAS est né de là.
L'extension naturelle : aujourd'hui BAAS s'étend des clubs esport aux structures sportives plus larges — clubs de sport traditionnels, associations — qui partagent exactement la même douleur :
- Commissions externes élevées (5-15 % sur paiements et abonnements)
- Outils silotés : aucune vue d'ensemble, double saisie, pas d'historique unifié
- Brand erosion : les outils tiers cassent l'identité du club — l'utilisateur quitte le site du club pour aller "ailleurs" payer ou s'inscrire
BAAS répond aux trois douleurs en une fois : un seul outil, intégré au site du club via widgets, 2 % de commission, totalement à la marque du club.
slug: baas-vision-erp
La vision long-terme : l'ERP multi-SaaS marque blanche Quatools
BAAS n'est pas une fin en soi. C'est la première pierre de Quatools, dont l'ambition est de devenir un ERP multi-SaaS totalement marque blanche.
À terme, depuis une plateforme unique aux couleurs du client, une structure pourra :
- gérer son club et ses adhérents (BAAS)
- gérer ses réservations, coachs et créneaux (Calendr)
- piloter ses campagnes marketing
- tenir son CRM
- orchestrer ses notifications multi-canal (Hub Notification)
- gérer sa facturation conforme e-invoicing 2026 (Factur-IA)
- piloter ses projets et son équipe (Planificateur)
> Conduire tout son business depuis un seul ERP intégré, sans renoncer à son identité de marque, sans louer 8 SaaS différents, sans migration douloureuse à chaque ajout de besoin.
Chaque brique du portefeuille Quatools — Calendr, Hub Notification, Factur-IA, Planificateur, FluidStore — n'est pas un projet isolé : c'est une pièce de cet ERP en construction. C'est ce qui justifie de coder chaque brique moi-même, plutôt que de louer une stack tierce qu'on ne peut pas marquer-blancher.
calendr
slug: calendr-architecture
Architecture Calendr et cohabitation multi-app Quatools
Pattern infrastructure pro : un seul projet Supabase héberge `public` (BAAS) ET `calendrier` (Calendr) avec isolation totale par schéma. Le code utilise systématiquement `.schema("calendrier")` pour ne jamais polluer l'autre app. Économie d'infra + cohérence multi-app Quatools.
Tables principales du schéma `calendrier` : `organizations`, `users`, `organization_members` (avec rôles), `event_types`, `bookings`, `contacts` (CRM), `resources`, `availability_schedules`, `calendars`, `custom_questions`, `plannings`, `duty_rosters`.
Pages livrées (App Router) :
- Public : `/book/[slug]` (booking multi-membres avec choix client ou premier dispo)
- Dashboard : `/team`, `/event-types`, `/bookings`, `/planning` (vue équipe), `/contacts` (CRM), `/resources`, `/availability`, `/organization`, `/settings`, `/profile`, `/assistant` (chat IA)
- Onboarding : `/invite/[token]` pour inviter des membres dans une organisation
Stack secondaire : date-fns + date-fns-tz (gestion timezones, point critique pour un calendrier en prod), React Hook Form + Zod, Radix UI + shadcn, MCP server custom pour pilotage agent.
slug: calendr-defi
Le défi : couvrir tout le spectre planning pro sans devenir une usine à gaz
Le piège évident d'un produit « comme Calendly mais en mieux » : empiler les features et perdre la simplicité d'usage. La discipline ici a été de garder une seule UI cohérente capable de naviguer entre vue perso, vue équipe et vue ressources, avec un toggle simple, en s'appuyant sur la profondeur de FullCalendar plutôt que d'inventer un calendrier maison.
Trois axes structurants :
1. Stratégies de remplissage par event-type — chaque type d'événement choisit son mode : `fixed` (membre dédié) ou `flexible` (pool de membres avec priorités et limites). Quand un client réserve, l'algorithme dispatch automatiquement vers le bon membre selon les disponibilités et la stratégie.
2. Roulements (duty rosters) — patterns alternance semaine, jour, demi-journée, manuel ou self-service. Génération automatique des créneaux sur 4 semaines, modification visuelle, échanges entre membres.
3. Calcul de disponibilités multi-contraintes — un créneau doit satisfaire (1) horaires de base du membre, (2) assignations fixes existantes, (3) limites par event, (4) réservations existantes, (5) horaires d'ouverture de la ressource liée. Logique centrale partagée entre l'API et l'UI.
slug: calendr-pitch
Calendr — la réservation marque blanche bien plus qu'un Calendly
Calendr est une plateforme de réservation et de planning professionnel en marque blanche, multi-organisation. Bien plus qu'un Calendly : équipe, ressources, roulements, CRM contacts intégrés, en natif.
Statut actuel : en construction. L'infrastructure (schéma Supabase, multi-organisation, OAuth, FullCalendar) est prête en production sur l'infra Quatools, mais le produit complet n'est pas encore livré ni exploité commercialement. Module en finition.
Stack : Next.js 15 (App Router, Server Actions) · React 18 · TypeScript 5 · Supabase (schéma `calendrier` isolé) · FullCalendar 6 (6 plugins resources) · TanStack Query · Zustand · Anthropic SDK + assistant IA · MCP server custom.
slug: calendr-pourquoi
Pourquoi Calendr existe
Calendly et Cal.com couvrent la prise de rendez-vous simple (1-1). Aucun n'adresse le planning professionnel complet dont ont besoin les structures sportives, médicales, formation ou conseil :
- Équipe avec rôles et priorités — pas un seul agenda à publier, un pool de personnes assignables
- Ressources (salles, terrains, équipements, véhicules) avec horaires d'ouverture et capacité — un RDV doit booker une personne ET un lieu
- Roulements automatiques — qui est de garde / d'astreinte cette semaine
- CRM contacts intégré — un client qui réserve n'est pas un email perdu, c'est un prospect qui rentre dans le pipeline
- Stratégies de remplissage configurables — « premier disponible », priorités par membre, limites par event, équilibrage de charge
Aujourd'hui les clubs et structures jonglent avec Calendly + Excel + Slack + tableur partagé + agenda perso = chaos. Calendr regroupe le tout dans une plateforme marque blanche, intégrable au site du client, brique de l'ERP Quatools.
Au passage, c'est la brique de réservation que j'utilise pour mes propres briques — Storm pour la prise de RDV athlète/coach, BAAS pour les créneaux club, Factur-IA pour les devis avec rendez-vous : je ne loue pas mes briques cœur, je les construis et je les connecte.
factur-ia
slug: factur-ia-factur-x
Factur-X et Chorus Pro implémentés à la main
Pas d'API tierce ni de bibliothèque magique pour le format légal :
- `lib/facturx` — génération Factur-X (PDF/A-3 + XML CII embedded selon spec EN 16931). Mariage `@react-pdf/renderer` (layout) et `pdf-lib` (post-traitement, embedding XML).
- `lib/chorus-pro` — transmission directe via la plateforme officielle de l'État pour les factures à destination du secteur public (B2G ready).
Onboarding AI-first — l'utilisateur n'écrit rien :
- Upload Kbis ou RIB → Claude Vision extrait nom, SIRET, TVA, adresse, IBAN
- Pré-remplissage automatique du formulaire entreprise
- Validation/correction par l'utilisateur
- BYOK (Bring Your Own Key) : l'utilisateur peut utiliser sa propre clé Claude API ou celle de la plateforme
slug: factur-ia-ia-partout
Défi 1 — L'IA partout dans l'app, pas dans un coin
La plupart des SaaS qui se disent "AI-powered" collent un widget chat dans une sidebar. C'est cosmétique.
Factur-IA fait l'inverse : peu importe où tu te trouves dans l'app — page facture, fiche client, dashboard, paramètres — tu peux demander à l'IA d'agir. Elle voit le contexte de l'écran, accède aux données métier (clients, entreprise, factures existantes), et exécute :
- « Crée une facture de 500 € HT pour Client X »
- « Ajoute une ligne prestation conseil »
- « Mets cette facture comme payée »
- « Montre-moi les factures impayées de plus de 30 jours »
- « Duplique celle-ci pour Client Y avec un tarif majoré de 10 % »
Confirmation avant action, historique conservé, contexte persistant.
Conséquence architecturale : pour que l'IA puisse agir partout, il faut que toutes les fonctions de l'app soient exposées de manière programmable. C'est le rôle du serveur MCP. La différence entre « ajouter un chatbot » et « concevoir AI-native » tient là : l'app n'est pas une UI avec une feature IA — c'est une API dont l'UI et le chat sont deux clients équivalents.
slug: factur-ia-oauth-mcp
Défi 2 — Le serveur OAuth Authorization Server complet pour MCP
Pour qu'un assistant IA externe (Claude Desktop, Claude Code, agent tiers) puisse piloter Factur-IA en sécurité multi-utilisateur, j'ai implémenté un serveur OAuth complet selon la spec MCP :
- `/.well-known/oauth-authorization-server` (RFC 8414 — metadata du serveur)
- `/.well-known/oauth-protected-resource` (metadata de la ressource)
- `/oauth/register` — Dynamic Client Registration (RFC 7591) : un nouveau client MCP s'enregistre automatiquement
- `/oauth/authorize` — flow d'autorisation utilisateur
- `/oauth/token` — émission de tokens
- `/mcp/[transport]` — endpoint MCP avec transports HTTP/SSE
Outils MCP exposés (extrait) :
- 6 outils factures : `list_invoices`, `get_invoice`, `create_invoice`, `update_invoice_status`, `delete_invoice`, `get_invoice_stats`
- Outils clients (CRUD complet)
- Outils entreprise : `get_company`, `update_company`
- Outils devis (`quotes`)
> Très peu de SaaS implémentent un serveur OAuth complet pour MCP. C'est un signal fort pour les devs avertis : Factur-IA est un vrai citoyen de l'écosystème agent, pas un MCP côté client juste pour démo.
slug: factur-ia-pitch
Factur-IA — facturation AI-first conforme e-invoicing 2026
Factur-IA est une plateforme de facturation AI-first : facturation pilotée par chat IA présent partout dans l'app, conforme Factur-X / Chorus Pro, open source.
Stack 2026 : Next.js 16 · React 19 · Tailwind 4 · Supabase · Claude API + Vision · MCP SDK officiel + serveur OAuth complet.
slug: factur-ia-pourquoi
Pourquoi Factur-IA — la vague e-invoicing 2026
À partir de septembre 2026, la facturation électronique devient obligatoire pour toutes les entreprises françaises (formats Factur-X / UBL / CII, transmission via PDP / portail public). Vague énorme côté ETI/PME qui doivent migrer.
Le marché actuel propose une réponse paresseuse : Pennylane, Sellsy, Tiime, Indy — tous payants, lourds, copies à peine modernisées de l'ancienne UX comptable. Personne ne profite de la migration obligatoire pour repenser le métier avec l'IA.
Factur-IA répond à l'inverse :
- Gratuit (open source)
- Onboarding 30 secondes : tu envoies ton Kbis, Claude Vision en extrait toutes les infos d'entreprise, ton compte est prêt
- Tu factures en parlant : « Crée une facture de 500 € HT pour Client X, prestation conseil » — l'IA s'en charge
- Conforme septembre 2026 dès aujourd'hui : génération Factur-X embedded (PDF/A-3 + XML CII), transmission Chorus Pro intégrée
slug: factur-ia-stack
Stack early adopter et modèle économique Factur-IA
Stack 2026 — early adoption assumée :
- Next.js 16 (App Router, Server Actions)
- React 19 (Server Components matures, Actions, transitions)
- Tailwind 4 (rare en prod, signal early adopter)
- TypeScript 5
- Supabase (Postgres + Auth + Storage + SSR via `@supabase/ssr`)
- MCP SDK officiel `@modelcontextprotocol/sdk` + `mcp-handler` (Vercel)
- Anthropic SDK `@anthropic-ai/sdk` (Claude API + Vision)
- i18n natif via `next-intl`, forms via `react-hook-form` + `zod`, UI Radix + shadcn
Modèle économique :
- Open source — lead magnet, asset de crédibilité, signal pour l'écosystème dev
- Brique de l'ERP Quatools — la facturation comme module marque blanche pour les futurs clients Quatools
- Modèle SaaS premium envisageable — fonctions avancées multi-utilisateur, multi-entreprise, intégrations comptables
- Dogfood actif — j'émets mes propres factures professionnelles via Factur-IA depuis sa mise en production
fluidstore
slug: fluidstore-architecture
Architecture FluidStore — 3 couches + embeddings Matryoshka
Architecture en 3 couches :
- Qdrant Cloud — moteur de recherche vectorielle
- Supabase (Postgres) — métadonnées, liens, hiérarchie
- Cache RAM — chemins chauds
Embeddings Matryoshka multi-résolution — utilisation des embeddings Matryoshka d'OpenAI (`text-embedding-3-small`) tronqués à 3 résolutions :
- 64D (courts fragments, < 100 caractères) — index ultra rapide, coût stockage minimal
- 256D (résolution standard) — équilibre coût/précision
- 1024D (documents importants) — précision maximale pour les recherches profondes
La résolution est choisie automatiquement à l'insertion selon la longueur et l'importance. Performance mesurée : recherche < 100 ms, stockage < 500 ms.
3 types de liens entre documents :
1. Auto — similarité vectorielle > 0,3, calculée à l'insertion
2. Forcés — `link(from_id, to_id, weight)` manuel pour exprimer une relation métier
3. Inférés (Phase 2 — IA jardinier) — un agent qui propose des liens manqués en analysant le graphe
slug: fluidstore-fluid-sql
Architecture hybride Fluid + SQL
FluidStore ne remplace pas PostgreSQL — il le complète.
| | FluidStore | PostgreSQL |
|---|---|---|
| Force | Sémantique, découverte, liens auto, flexibilité | Intégrité, permissions, ACID, prévisibilité |
| Usage | Mémoire / découverte / contexte IA | Source de vérité métier |
Nouveau pattern architectural proposé :
```
Fluid Layer (sémantique)
↓
DB Layer (intégrité)
↓
Sync Layer
↓
Controller → View
```
Innovation conceptuelle : un schéma n'est plus une contrainte sur les données, c'est une vue projetée à la demande. Chaque vue créée par l'utilisateur définit un schéma implicite. Les données entrantes (webhooks, API, drop fichier) s'adaptent automatiquement aux vues actives. Une même donnée peut se conformer à plusieurs schémas simultanément.
Conséquence : plus besoin de migration. Une nouvelle vue = un nouveau schéma. Les données existantes se réadaptent.
slug: fluidstore-mcp
Le serveur MCP FluidStore (déployé Cloudflare Workers)
URL : `https://fluid-store-mcp.quaglieri-alexandre.workers.dev/mcp`
Outils exposés à Claude (et tout client MCP) :
- `store` — stocker un document avec embedding + métadonnées
- `query` — recherche sémantique multi-résolution
- `get_context` — document + tous ses voisins liés
- `deepen` — passer un document à une résolution supérieure quand il devient central
- `link` — lien manuel entre 2 documents
- `discover` — lister les schémas (vues) disponibles
- `schema` — créer/modifier une vue dynamiquement
FluidStore est utilisé pour ma mémoire IA — y compris pour générer ce portfolio (interrogation en langage naturel sur 6 ans de projets, pitchs, leçons).
slug: fluidstore-modele
Modèle économique et acquéreurs potentiels FluidStore
- R&D Quatools — pièce stratégique du portfolio, finance long terme
- Exploitation interne immédiate — utilisé sur les missions Storm, Beelib, le Planificateur — gain de productivité direct sur chaque prestation
- Acquéreurs potentiels identifiés : Supabase, Cloudflare, Vercel, Anthropic, OpenAI — toute boîte qui veut compléter sa stack data avec une couche sémantique
- Modèle SaaS direct envisageable à terme : SDK + CLI + templates d'apps (CRM, wiki, project manager) — chaque app devient juste UI + FluidStore
slug: fluidstore-pitch
FluidStore — backend universel à structure émergente
FluidStore est un nouveau paradigme architectural : on ne définit plus la structure des données, elle émerge. Comme passer de l'Assembly au C, du C au Python — sauf qu'on abstrait la structure même des données.
Stack : Python · Qdrant Cloud · Supabase · Cloudflare Workers · OpenAI embeddings Matryoshka (64/256/1024D) · TypeScript MCP server.
Continuité avec Arcadium : recherche vectorielle FAISS sur Arcadium en 2022 → base vectorielle multi-résolution FluidStore en 2026. Pas un projet où je découvre les embeddings — c'est l'aboutissement de 4 ans de pratique.
slug: fluidstore-pourquoi
Pourquoi FluidStore — l'angle architectural inversé
80 % du temps de dev est passé à architecturer les données : design du schéma SQL, migrations, débats normalisation/dénormalisation, refactoring quand le modèle se révèle insuffisant. Plus de temps à structurer qu'à créer.
Toutes les solutions actuelles demandent de définir quelque chose à l'avance :
- Supabase / PostgreSQL : tu définis le schéma
- Firebase : tu définis la structure
- Notion / Airtable : tu définis les colonnes
FluidStore : tu ne définis rien. Tu balances tes données, le système comprend sémantiquement les relations. Le schéma émerge des vues que tu crées.
FluidStore n'est pas un concurrent à Notion, pas un outil de notes, pas une BDD vectorielle de plus. C'est un building block — une infrastructure pour construire des apps sans architecture mentale préalable.
planificateur
slug: planificateur-architecture
Architecture et 17 outils MCP du Planificateur
- Backend : Supabase (Postgres, Auth, RLS) — migration faite depuis Firebase pour la cohérence multi-tenant
- MCP server : TypeScript custom, déployé en parallèle de l'app web — single source of truth pour toutes les actions
- Système de timer : sessions cumulables (start → pause → resume → complete), `total_seconds` agrégé, jamais de double-tracking
17 outils MCP exposés :
- Projets : `list_projects`, `get_project`, `create_project`, `update_project`
- Tâches : `list_tasks`, `get_task`, `create_task`, `update_task`, `delete_task`
- Tracking de temps : `start_task`, `pause_task`, `resume_task`, `complete_task`, `get_active_tasks`
- Configuration : `get_tracking_config`, `update_tracking_config`
- Méta : `log_insight` (capture des découvertes au fil de l'eau, indexées dans FluidStore)
Roadmap : OKR pour la hiérarchie complète — module en conception : ajouter une couche Vision → Objectif → Key Result → Projet → Tâche lisible en une query par l'agent. Trois bénéfices visés :
- L'agent comprend le pourquoi de chaque tâche (pas juste son intitulé)
- L'utilisateur évite la fuite vers les side-projects en voyant en permanence ce qui est « business » vs « fun »
- Un dashboard de progression OKR remonte automatiquement les heures trackées
slug: planificateur-defi
Le défi : concevoir une app dont l'agent est un client de première classe
Quand on décide que l'API canonique est MCP, plusieurs choix se cascadent :
- Toute action métier doit avoir un outil MCP correspondant — pas d'action exclusive à l'UI
- Les outils doivent être idempotents et auto-documentés — pour qu'un agent comprenne par lecture du schéma
- Les retours doivent être structurés — un agent lit du JSON, pas un toast
- L'authentification doit être pensée pour tokens longue durée — pas de session web qui expire
- Le state doit être lisible en une query — `get_active_tasks` rend en une réponse l'état complet de "ce sur quoi je travaille"
slug: planificateur-pitch
Planificateur Quatools — productivité IA-native
Le Planificateur Quatools, c'est de la gestion projets / tâches / tracking de temps conçue pour être pilotée autant par humain que par IA. Stack : TypeScript · Supabase · MCP server custom avec 17 outils MCP exposés.
slug: planificateur-pourquoi
Pourquoi le Planificateur existe
Tous les outils de productivité existants sont conçus pour être pilotés à la souris :
- Linear / Asana / Jira — workflow propre, mais l'IA n'est qu'un widget collé après coup
- Notion / ClickUp — tellement flexibles qu'ils deviennent un labyrinthe sans structure pour l'agent
- Toggl / Timely — tracking de temps, mais aucune structure projet/tâche profonde
- Sunsama / Motion — IA marketing, pas IA-native
Aucun n'est pensé pour qu'un agent autonome ouvre la session, lise l'état, démarre un timer, fasse le travail, le tracke et clôture — comme un humain le ferait, mais sans humain.
Le Planificateur répond à ce manque : l'API canonique de l'app est MCP, pas REST. L'UI web et l'agent IA sont deux clients équivalents de la même surface. Conséquence : Claude (Desktop, Code, ou tout client MCP) pilote n'importe quel projet ou tâche en langage naturel, sans "intégration IA" à part.
rocalys
slug: rocalys-design-cocon
Le défi "cocon" : gaming + pro + chaleur humaine
Trois univers difficiles à marier sans choisir un camp :
- Le jeu vidéo : visuels gaming, énergie compétitive, codes esport reconnus par les joueurs
- L'encadrement mature, professionnel : Rocalys n'est pas une bande de gamers solitaires, c'est un club structuré avec coachs et méthode
- La chaleur humaine : Rocalys c'est un cocon où l'on se sent accueilli, pas un esport-shop froid
Le design tranche le piège évident — soit tomber dans l'esthétique gamer agressive (RGB criard, dark néon, mascots), soit dans le corporate aseptisé.
Au lieu de ça : visuels gaming maîtrisés (vrais joueurs en photo, pas de stock), typographie Montserrat propre, animations AOS sobres au scroll, Hero avec image immersive mais lisible, ton de voix accueillant (« Rejoignez », « Notre communauté »). On est dans un club, pas dans un magasin.
slug: rocalys-pitch
Site Rocalys — refonte Webflow + design "cocon"
Site club esport pour Rocalys (Pierre Pastor, ex-COO Arcadium). Mission : réconcilier univers gaming, encadrement pro et chaleur humaine.
Stack volontairement minimaliste : HTML/CSS/JS vanilla + mini moteur de templating maison · Migration Astro à venir · Préparé pour intégration BAAS marque blanche.
9 pages livrées, site en production, prestation refonte facturée janvier 2026. Continuité de partenariat 6 ans avec Pierre Pastor depuis Arcadium.
slug: rocalys-pourquoi
Pourquoi refondre Rocalys
Le site Rocalys vivait dans Webflow : élégant, mais cher (abonnement mensuel), lent à éditer, fermé techniquement, impossible à connecter à un vrai backend pour gérer plus tard les abonnés, paiements et communauté du club via BAAS.
Le club avait besoin d'un site qui lui ressemble :
- Pas une carte de visite générique
- Pas un site corporate froid
- Pas non plus un truc gamer criard
Rocalys est un club de quartier à Montpellier, pas une équipe pro distante. Le site devait porter cette identité.
Modèle business du projet :
- Prestation de refonte facturée (one-shot, payée janvier 2026)
- Première brique d'une relation longue : le site est conçu pour devenir le canal d'inscription des futurs abonnés BAAS Rocalys
- Modèle vitrine ↔ exploitation : la prestation paie le coût d'acquisition d'un client BAAS, et la licence BAAS génère le récurrent
slug: rocalys-statique-dynamique
Statique aujourd'hui, prêt à devenir dynamique demain
Décision technique assumée : HTML/CSS/JS pur (vanilla), pas de framework, pas de build, pas de Node.js. Pourquoi ?
- Pierre (Rocalys) doit pouvoir éditer le site lui-même sans appeler un dev
- L'hébergement coûte presque rien (statique sur CDN)
- Performance native, SEO naturel, zéro dépendance qui casse
- Migration Astro prévue pour la suite (référencement IA avancé), faisable sur cette base saine en quelques heures
Pour éviter la duplication HTML qu'imposerait un site multi-pages pur, j'ai écrit un mini moteur de composants maison (`js/components-loader.js`) :
- Les pages déclarent un slot via ``
- Le loader fetch le composant depuis `/components/header.html`, le compile avec support de variables et de conditions (mini templating), et l'injecte
- Header et footer factorés en un seul endroit pour tout le site
- Système prêt à accueillir des widgets BAAS embed quand on basculera la couche dynamique (compte, abonnements, boutique) — c'est la stratégie ERP marque blanche du BAAS appliquée concrètement
storm
slug: storm-bpi
Mission BPI Storm — l'ingénierie financière en exemple
Le projet Storm illustre concrètement le volet ingénierie financière de l'acte 1 de ma méthode : transformer une idée en projet financé avant qu'elle n'épuise le porteur.
- Mission Diag Axes d'Innovation BPI France via Inizia (Maryline)
- 210 h structurées en 3 phases :
- Phase 1 — études utilisateurs / JTBD (72 h)
- Phase 2 — audit technique + offre (44 h)
- Phase 3 — preuve de concept et build (94 h)
- Le client paie une part faible, BPI finance le reste — le projet a sa visibilité financière dès le devis
Modèle économique cible Storm : Doctolib-like — gratuit pour athlètes et coachs, abonnement préparateur + commission par séance, Stripe Connect pour éviter la double TVA.
C'est exactement le type de mission que je propose : transformer une idée en projet financé avant qu'elle n'épuise le porteur. Je suis Product Manager certifié BPI France pour mener ce type de mission.
slug: storm-design
Le défi DA Storm — réconcilier deux univers visuels
Sujet santé mentale = rigueur clinique, sérieux, scientifique.
Sujet sportif = énergie, dynamique, motivation.
Trouver une identité visuelle qui ne tombe ni dans le fitness criard, ni dans le médical froid.
Direction artistique Storm : fond très sombre · serif élégant en titres · accents dorés ambrés et bordeaux · illustrations aquarelle qui humanisent sans niaiserie · gamification subtile (streaks, niveaux, séances) jamais Duolingo · coach IA « LAU » intégré comme un coach normal, pas comme un gadget marketing.
Aucun concurrent (Calm, Headspace, Whoop, Oura) n'occupe ce territoire visuel — Storm a une signature qui lui appartient.
slug: storm-mcp-admin
L'admin Storm pilotable par Claude (MCP)
L'admin Storm est complexe : catalogue de dimensions, mapping multi-questions, paramètres d'algorithme, règles de déclenchement, évaluations coachs, livrets athlètes. Naviguer à la souris devient vite épuisant.
Solution implémentée : un serveur MCP admin qui expose toute la surface d'admin à un client MCP (Claude Desktop, Claude Code, agent custom). Conséquence : Claude pilote l'admin de bout en bout.
Trois usages réels :
- Extraire des analyses — « Claude, donne-moi la corrélation entre les scores de motivation et le nombre de séances complétées sur les 3 derniers mois » → Claude interroge la base via le MCP, sort la réponse.
- Faire évoluer l'algorithme — « Propose un reverse scoring pour la question 12 et augmente son poids sur la dimension stress » → Claude lit le mapping, propose la modif, l'applique après validation.
- Réinjecter dans la plateforme — toutes les modifs de catalogues, mappings, paramètres se font via les mêmes outils MCP que ceux exposés à l'admin web. La plateforme est conçue pour être pilotée par un agent autant que par un humain.
> C'est ce que devient une app quand on conçoit AI-native plutôt que d'ajouter un chatbot par-dessus : l'admin n'est plus une UI — c'est une API dont l'UI n'est qu'un client parmi d'autres.
slug: storm-moteur-questions
Le moteur de questions multi-méthode unifié de Storm
Le problème : en psychologie sportive, plusieurs méthodes de mesure cohabitent (Score Mental Ephi, MBTI, méthodes futures). L'approche naïve consisterait à poser un questionnaire dédié pour chaque méthode → 200+ questions à faire passer à l'athlète. Inutilisable, démotivant, contraire à l'esprit de l'app.
La solution implémentée — un moteur où une question alimente N moteurs de calcul :
- Catalogue dynamique de dimensions mentales (`mental_dimensions`) — 8 dimensions seed : motivation · concentration · plaisir · stress · performance · confiance · résilience · communication. Permissif (text libre, pas de FK dure), extensible : Laurent crée une nouvelle dimension via UI admin sans déploiement.
- Questions multi-dimensions (`questions.dimension_mapping jsonb`) — chaque question porte un mapping `[{"dimension_key": "stress", "weight": 0.7, "reverse": false}, ...]`. Une seule question alimente plusieurs dimensions avec des poids différents, et un reverse scoring optionnel (best practice psychométrique). Résultat : ~30 questions bien construites mesurent 8 dimensions, là où une approche naïve en demanderait 200+.
- 5 règles de déclenchement déclaratives (`questionnaires.trigger_rule jsonb`) — le même moteur sert pour `on_signup`, `after_each_appointment`, `every_n_days`, `after_n_appointments`, `manual_only`.
- Algorithme paramétrable sans déploiement (`algorithm_settings`) — Laurent étalonne via UI admin : décroissance temporelle exponentielle (half-life), fenêtre de calcul (`monthly | rolling_30d | rolling_90d | all_time`), agrégation (`mean | weighted_mean | median`), normalisation, seuil minimum de réponses pour fiabilité.
- Multi-moteurs cohabitent — le même socle porte Score Mental Ephi, MBTI engine, et tout futur moteur sans réécrire l'existant.
Pattern architectural clé : permissivité maximale (text libre, jsonb mapping, jsonb settings) + canonisation par catalogues séparés. C'est l'inverse de la tendance SQL habituelle qui contraint tout. Conséquence : Laurent ajoute une dimension, change un mapping, ajuste un poids — sans toucher au code, sans déploiement, sans casser l'existant.
slug: storm-pitch
Storm / Ephi-Sport — la plateforme de préparation mentale sportive
Storm (alias Ephi-Sport) est une mission de développement client que je mène pour Laurent Martini (FISPORT) — 15+ ans en formation aux aspects psychosociaux (PNL, Fédération Française de Foot, Kings League). Storm est et restera la plateforme de Laurent / FISPORT, pas un produit Quatools.
Le produit : une plateforme de préparation mentale sportive type Doctolib mental.
Stack : Next.js (web admin) · Expo (mobile native iOS/Android) · Supabase (Postgres + RLS multi-rôle + Edge Functions) · Daily.co (visio embed) · Stripe Connect · Claude API + MCP server admin pilotable de bout en bout.
Mission Diag Axes d'Innovation BPI France via Inizia — 210 h sur 5-6 mois, financement BPI partiel. Statut actuel : architecture 90 % prête, en cours de polissage avant ouverture aux premiers utilisateurs.
slug: storm-pourquoi
Pourquoi Storm — un marché en friche
Le marché de la prépa mentale sportive en France est en friche :
- 3 % des clubs ont un préparateur mental
- mais 30 % des joueurs de Ligue 1 en ont un perso
- pas de certification officielle, pas de structure, pas d'outils dédiés
- les coachs qui veulent se positionner se cherchent
> « Le prépa physique c'est saturé. Le prépa technique c'est saturé. L'analyste vidéo il y en a 48 000. Mais sur les aspects mentaux ça n'existe pas. » — Laurent Martini
Storm répond à trois besoins en une plateforme :
1. Mettre en relation athlètes et préparateurs mentaux (modèle Doctolib)
2. Donner aux préparateurs une méthode structurée (24 séances sur 3 niveaux, fiches programme, livrets athlète)
3. Mesurer la progression mentale en continu, scientifiquement, sans noyer l'athlète sous les questionnaires
Parcours
slug: parcours-1-survie
Chapitre 1 — Le temps de la survie (0-20 ans)
À l'école, je n'ai jamais été terrible. Brevet à 10,5. BEP aussi. À la maison, on n'avait pas grand-chose et on a pas mal bougé — ma famille a vécu un bon moment en caravane, sur des terrains qu'on nous prêtait. « Je me disais que j'étais pas malin, que j'étais pas fait pour les études, que j'étais bon à rien. »
Heureusement, il y avait le rugby. Le club du coin, l'équipe, le coach, le vestiaire. Une régularité qui ne dépendait pas de la maison. « J'ai compris bien plus tard que c'est ce qui m'avait tenu debout. »
Pour gagner trois sous, j'ai fait des choses pas très catholiques. Pas si rares dans les zones d'éducation prioritaire. « Il fallait bien que je m'adapte au client — c'est probablement la première fois que j'ai fait du commerce. »
Souvent en colère, des effondrements réguliers, sans savoir pourquoi. Le monde me paraissait de travers. J'ai mis longtemps à comprendre que des fois, ce n'est pas le monde qu'il faut redresser — c'est notre façon de le regarder.
À 20 ans, un ami m'a dit que je pouvais faire autre chose. Il n'avait aucun agenda, il croyait juste en moi. Première personne à le faire sans intérêt. J'ai arrêté ce que je faisais pour gagner plus. Et un jour, j'ai postulé en apprentissage à RTE.
Ce qui est venu après, je ne l'aurais jamais imaginé.
> Parfois, quand ça ne va vraiment pas, on change de voie. Ce n'est ni rationnel ni émotionnel. C'est qu'à un moment, on n'a plus le choix. Et un jour, on découvre tout un univers qu'on ne soupçonnait pas.
slug: parcours-2-apprentissage
Chapitre 2 — Le temps de l'apprentissage (20-24 ans — RTE + BTS)
Avoir des amis, ça peut parfois changer une vie. À 20 ans, j'en avais un qui m'a dit que je pouvais peut-être faire mieux que ce que je faisais. « J'avais aucune raison de le croire. J'ai essayé quand même. »
J'ai postulé en apprentissage à RTE — le réseau électrique haute tension de la France, les lignes 400 kV qu'on voit avec leurs grands pylônes. Ils m'ont pris in extremis en juillet, l'année où je devais entrer sinon c'était mort. Pendant deux ans, j'ai bossé sur les postes 63 à 400 kV de Nîmes.
J'ai enchaîné sur un BTS électrotechnique. Major de promo. Sixième de l'académie. 20/20 au projet de fin d'études. Les profs ont cru à un plagiat — niveau ingénieur sur le papier, jeune apprenti sur le banc. Je leur ai expliqué à l'oral. Ils ont compris.
Une fille s'est effondrée en pleurant ce jour-là parce que j'avais 20/20 « sans forcer » alors qu'elle en avait chié. Elle ne savait pas que je bossais comme un fou — projets électronique, code en C, clients à côté. Mais j'avais trouvé une façon de bosser qui me ressemblait : par passion plutôt que par devoir.
> Trois ans plus tôt, je n'avais aucun plan. Trois ans après, j'avais un BTS major et un CDI dans le nucléaire qui m'attendait.
slug: parcours-3-confiance
Chapitre 3 — Le temps de la prise de confiance (24-27 ans — EDF nucléaire)
EDF m'a recruté pour le nucléaire. J'y suis allé les mains dans les poches parce que je pensais que c'était pas pour moi. Je suis rentré en voiture en pensant que j'avais raté l'entretien. Le RH m'a appelé le weekend : « on te prend, ton entretien était parfait. » Je n'y croyais pas vraiment.
CNPE Cruas-Meysse. Technicien en électrotechnique. Tableaux 380 V, 6,6 kV, 24 kV, 400 kV. Alternateurs 900 MW. Onduleurs, redresseurs, groupes électrogènes. Plusieurs années de service sans-faute. Mon chef m'a dit un jour : « on se demandait ce que tu faisais là parmi nous. » Je n'ai pas su quoi répondre.
J'ai conçu un outil de diagnostic pour la vérification des matériels de protection des tableaux 380 V. Plus petit, plus léger, moins cher, semi-automatique au lieu de manuel. Prix local de l'innovation et nomination au prix national EDF.
J'ai aussi commencé à animer des formations — lecture de schéma, régimes de neutres, maintenance des systèmes d'excitation alternateur. Sessions adoptées au niveau national. « À chaque fois je me disais que j'allais me faire griller. À chaque fois ça se passait bien. »
À ce moment-là, j'ai commencé à me dire que peut-être je n'étais pas si bête.
> Plusieurs années sans-faute. Un outil primé. Et toujours cette idée que c'était un malentendu.
slug: parcours-4-depassement
Chapitre 4 — Le temps du dépassement (27-32 ans — Arcadium)
À 27 ans, j'ai démissionné d'EDF. J'avais un CDI dans le nucléaire, un salaire qui rassurait, une boîte qui ne licencie pas. J'avais aussi l'impression de tourner à 20 % de ce que je pouvais donner. Un ami pensait que je pouvais faire mieux. Moi aussi.
J'ai fondé Arcadium Esport SAS. L'idée : faire pour l'esport amateur ce que le sport traditionnel a fait il y a un siècle — un cadre, des clubs, des coachs, une identité collective. « Esport is sport », c'était la baseline.
Pourquoi cette idée-là ? Parce qu'enfant, le rugby m'avait offert ce que la maison ne pouvait pas — une équipe, un cadre, des coachs, une appartenance. Avec Arcadium, je voulais offrir la même chose à la génération qui ne joue plus au rugby mais à League of Legends. Recréer pour d'autres ce qui m'avait tenu debout.
Ça a marché. Sur six ans : 4 000+ abonnés payants cumulés, ~1 M€ levés au total (Business Angels + subventions publiques + dernière levée 650 k€ equity + levier), des grands comptes (SNCF Gaming, dstny), 27 coachs animés, deux modèles d'usage (Mode Team comme un club / Mode Solo comme un Basic Fit). On était au point d'autofinancement.
À côté d'EDF d'abord, puis à temps plein, j'ai aussi construit deux maisons. Alissas — 130 m² en autoconstruction, escalier suspendu en porte-à-faux, éclairage entièrement domotique. La nuit, après le code, je faisais les plans. Les weekends, je posais les marches. Mon chef-d'œuvre. Et Meynes — la réhabilitation d'un hangar en deux logements pour mes parents.
J'ai bossé 80 heures par semaine pendant six ans. « Je pensais que c'était comme ça qu'il fallait faire. C'était pas faux pour avancer. C'était faux pour durer. »
> Le produit marchait, la trajectoire était saine. Le vrai sujet : j'avais fait le choix de lever pour accélérer un marché qui n'avait pas l'élasticité pour absorber l'injection de cash. Plus on mettait dans l'acquisition, plus le CAC montait, sans que la LTV suive le rythme imposé par le cap table. C'est la leçon que j'emporte partout aujourd'hui.
slug: parcours-5-regularite
Chapitre 5 — Le temps de la régularité (32 ans à aujourd'hui)
À 32 ans, j'ai compris que je fonctionnais d'une façon un peu particulière. Ça m'a expliqué pourquoi je faisais 80 heures pendant qu'autour de moi d'autres en faisaient 40 et avançaient autant. « C'était pas une bonne nouvelle, mais c'était une bonne explication. »
Arcadium est entré en liquidation peu après. Je l'ai gérée moi-même, proprement. La SAS a fait son boulot — sortie maîtrisée, pas de dette personnelle. De six ans d'entrepreneuriat, j'ai surtout retenu une chose : savoir QUOI construire est plus dur que savoir COMMENT construire.
J'ai vendu la maison d'Alissas, mon chef-d'œuvre. « J'en ai pleuré, mais c'était la bonne décision. » J'ai réalloué une partie en achetant un studio aux enchères judiciaires au Grau-du-Roi, mis en location. La maison de Meynes — celle de mes parents — est restée. Ce qui devait être protégé l'a été.
Six mois plus tard, j'ai relancé en entreprise individuelle. Quatools. Pas une nouvelle SAS, pas de levée, pas de boîte à trois fondateurs. Un solo product builder qui fait seulement ce qui vaut la peine d'être fait.
J'ai construit un portefeuille d'outils — BAAS pour les clubs, Calendr pour les rendez-vous, Storm pour la prépa mentale, Factur-IA pour la facturation, FluidStore pour la mémoire IA, Planificateur pour le tracking. Tous pilotables par agent. Tous connectables entre eux.
Pierre Pastor — l'ancien COO d'Arcadium — exploite aujourd'hui BAAS sur Rocalys. On partage les revenus. Six ans qu'on bosse ensemble.
J'ai aussi repris la formation, sérieusement cette fois. CMA, Oxytalis, MUC. « Quand on a fait 80 heures pendant six ans, on apprend que peut-être 40 bien faites valent mieux. »
> La troisième voie : ni mort lente, ni mort rapide. Faire moins, faire bien, durer.
slug: parcours-intro
Le parcours en 5 chapitres — pourquoi en remontant le temps
Un partenaire est humain. Le portfolio raconte ce que je fais. Le parcours dit d'où je viens, et pourquoi je le fais. Travailler ensemble, c'est savoir qui on est.
Les chapitres remontent le temps — du présent vers l'origine — parce que c'est dans cet ordre que je me comprends moi-même.
5 chapitres :
5. Le temps de la régularité (32 ans — aujourd'hui)
4. Le temps du dépassement (27-32 ans — Arcadium)
3. Le temps de la prise de confiance (24-27 ans — EDF nucléaire)
2. Le temps de l'apprentissage (20-24 ans — RTE + BTS)
1. Le temps de la survie (0-20 ans)