8 ans à concevoir et livrer des systèmes Salesforce en production : d'un logisticien mondial à un assureur national, jusqu'à une fintech européenne de 1 500 personnes. Du modèle de données au déploiement, de bout en bout.
129 552 leads assignés en 6 mois (711/jour). Moteur de règles à N dimensions, algèbre d'intervalles, détection de populations non couvertes. ~130 commerciaux répartis automatiquement via algorithme par déficit.
3 188 LCI créés : modèle 1 Lead → N entreprises qui casse la contrainte native. 587 opportunités générées. 96 champs suivis sur 4 objets avec traçabilité UI/API/Flow/Batch.
1 440 exécutions/jour, 0 crash depuis juin 2025. 5 jobs orchestrés par un seul point d'entrée piloté par les métadonnées. 60K+ synchronisations SF→Customer.io via Segment, configuration 100% déclarative.
16 SDR (FR, ES, DE, IT), 1 400 comptes/mois distribués automatiquement. Algorithme pondéré par déficit avec gestion de versions mensuelle. Remplace 4h de travail manuel hebdomadaire.
11 ans d'ingénierie, 8 sur Salesforce, 9 systèmes en production. Aujourd'hui architecte chez Qonto, fintech européenne en hypercroissance (~1 500 collaborateurs, 10+ marchés), 8 outils conçus et livrés de zéro. Avant cela : Tech Lead chez AG2R La Mondiale, assureur national (15 000 collaborateurs, 12,8 milliards d'euros de chiffre d'affaires), en mission via le cabinet Texeï : Design Authority, gouvernance transverse, management de 3 développeurs. Avant encore : Lead Developer chez Martin Brower, logisticien mondial (13 000 collaborateurs, 18 pays, 25 000+ restaurants), où j'ai tenu mon premier rôle d'architecture, avec gestion de projets multi-développeurs jusqu'à 5 personnes.
Je ne sépare pas l'architecture de l'implémentation. Je conçois les modèles de données, j'arbitre les compromis, je code les systèmes critiques et je les livre en production. Moteurs de règles, orchestrateurs asynchrones, pipelines de données, planification de capacité multi-pays : du tableau blanc au déploiement, de bout en bout. Certifié Salesforce Application Architect en 2026, certification combinée regroupant Platform Developer I, Platform App Builder, Platform Data Architect et Platform Sharing and Visibility Architect. En route vers la certification combinée System Architect.
Ma méthode commence par la compréhension : cartographier les dépendances, identifier les responsabilités, comprendre comment fonctionnalités et intégrations interagissent, puis décider. C'est ce travail préalable qui permet ensuite d'aller vite : le modèle Lead multi-entreprises est passé de l'architecture à la production en moins d'un mois. Depuis 2024, j'utilise l'IA comme accélérateur d'implémentation, sous ma direction : les décisions d'architecture et les arbitrages restent les miens.
Curieux permanent, convaincu que les meilleures solutions naissent sous contrainte.
Salesforce impose 1 lead = 1 entreprise. Problème : un prospect contacte souvent pour plusieurs sociétés. LCI casse cette contrainte : 1 lead peut être lié à N entreprises, chacune avec son propre suivi, sa source et sa conversion. Résultat : des affaires qui étaient auparavant invisibles.
LCI breaks Salesforce's standard 1-Lead-1-Company constraint. A Lead becomes a Person linked to N independent Company Infos. Each LCI tracks its own company, SIRET, source, and partner attribution independently.
Architecture: 2-level matching, first the person (email/phone dedup), then the company (SIRET → normalized name → FindDuplicates API with fuzzy matching). 4 auto-conversion paths: existing customer (→ Contact), new customer (→ Lead), post-conversion (→ LCI), hourly batch cleanup. 6 interconnected trigger handlers.
Impact: 3,188 LCIs created, 587 opportunities generated. 18% of touchpoints involve a different company than the Lead's primary company. These opportunities were previously invisible. In production since February 2026.
Tech stack: Apex (CTRL→SVE→UTL layers), LWC, Custom Objects, Batch Apex, Platform Events.
Portfolio presentation includes: An interactive demo (demos/LCI_System/index.html) where visitors can explore the multi-company lead model with live touchpoint creation and LCI matching. An animated SVG walkthrough with 6 steps: ① Touchpoint creates Lead + LCI, ② Match + Split logic, ③ Manual conversion wizard, ④ Auto-conversion paths, ⑤ Hourly batch cleanup, ⑥ Big Picture overview. Card metrics: 3,188 LCIs created, 587 opportunities.
Moteur de règles complet avec algèbre d'intervalles, gap analysis par inversion ensembliste, et validation croisée inter-règles. ~8 000 lignes Apex.
A complete rules engine for managing lead assignment rules on Salesforce. The data model is hierarchical: Rule → Audience → Criteria, with self-referential recursion. The type system is polymorphic with IntervalType implementations for Number, String, Date, Boolean, and Reference fields.
Key feature: Gap Analysis via set inversion, detects populations not covered by any rule. Cross-rule validation finds overlaps, inclusions and duplicates between rules. Dynamic SOQL generation via recursive SoqlNode tree (leaf-to-root traversal).
Architecture: ~8,000 lines of structured Apex in CTRL→SVE→UTL layers. LWC with custom LightningDatatable extension and custom cell types. Polymorphic field handling with multi-level navigation support.
Impact: 129,552 leads processed in 6 months (711/day), 0 change requests since go-live. Product Managers fully autonomous on rule configuration. Deployed at a European B2B fintech (~1,500 employees, 10+ markets).
Portfolio presentation includes: An interactive demo (demos/LAM_Editor/index.html): fully playable rule editor with criteria configuration, interval visualization, and gap analysis. An animated SVG walkthrough with 7 steps: ① Rule creation, ② Audience hierarchy, ③ Criteria editing with interval types, ④ Incoming lead processing, ⑤ Rule evaluation engine, ⑥ Assignment execution, ⑦ Big Picture. Card metrics: 129,552 leads/6 months, 711/day, 12,181 reassignments, 100% PM autonomous.
~130 commerciaux à répartir équitablement malgré les absences, les départs et les changements d'équipe. TMM gère la distribution par déficit : celui qui est le plus en dessous de sa cible reçoit le prochain lead. Synchronisation automatique des absences via Outlook.
Capacity planning tool for sales managers. Manages ~130 sales reps across 124 assignment groups. Three-level model: Group → Member → Distribution (per object). Deficit-based assignment algorithm: always assigns to the member furthest below their target percentage.
Dual inactivity circuit: manual vs automatic, fully independent. Virtual accounting for inactive members. Automatic Outlook/Salesforce Calendar sync for absences. Optimized sharing refresh via intelligent delta diff.
Impact: 12,181 automatic reassignments in 6 months (66/day). Coupled with LAM: 129,552 leads processed on the same period.
Portfolio presentation includes: An interactive demo (demos/TeamMembers_Management/index.html) with member/group management and quota visualization. An animated SVG walkthrough with 4 steps: ① Members list with dual Lead/Opp quotas, ② Group creation with percentage distribution, ③ Records with assignment tracking, ④ Big Picture overview. Card metrics: ~130 reps, 124 groups, 12,181 reassignments/6 months.
Vue historique enrichie avec double perspective : par champ et par transaction. Traçabilité complète du qui, quoi, quand et comment.
Enhanced Salesforce history view with dual perspective: View by field (history grouped by field, ordered by last modification) and View by transaction (history grouped by update datetime, showing all changes in a single operation together).
Update Source custom field traces how a change happened: UI, API, Flow, Batch (full audit trail). Sibling comparison analytics: compares field values against peers (same owner, same record type) with value distribution charts and percentile ranking.
Anomaly detection: identifies rapid changes (e.g., 2 owner reassignments within 2 minutes). Deployed on Lead, Account, Contact, Opportunity: 96 fields tracked across 4 Salesforce objects.
Architecture: Apex triggers with Enhanced_History__mdt configuration, LWC components with collapsible field cards, analytics blocks, and timeline views.
Portfolio presentation includes: An interactive demo (demos/Enhanced_History/index.html) showing the dual-view history interface with field grouping and transaction timeline. An animated SVG walkthrough with 8 steps: ① Lead created, ② Field updates tracked, ③ Qualification changes, ④ Conversion event, ⑤ Status history view, ⑥ Owner history view, ⑦ Sibling comparison, ⑧ Big Picture. Card metrics: 96 fields tracked, 4 objects, 31 fields on Lead.
Les équipes marketing ont besoin de données CRM à jour dans Customer.io pour leurs campagnes. CIOConnect synchronise automatiquement : traitement par lots toutes les 15 min + temps réel pour les événements critiques. Les admins ajoutent un champ à synchroniser en 5 min, sans code.
Metadata-driven synchronization system from Salesforce to Customer.io via Segment API. Configuration is 100% declarative via CIO_connect__mdt Custom Metadata: admins configure which fields, relationships, and filters to sync without any code changes.
Architecture: Trigger-based flagging (SyncCIO__c DateTime field) → Scheduled batch collection every 15 minutes → Dynamic SOQL construction from metadata → JSON payload building → HTTP callout to Segment webhook. Supports direct fields, lookup fields, and relationship subqueries with configurable filters (recursive boolean expression parser: AND/OR/parentheses), sorting, and limits.
Dual sync paths: Batch (15-minute window, bulk operations) + Real-time (Queueable, immediate events for critical status changes).
Impact: 60,000+ synchronizations since July 2024, 0 crashes. Covers Lead, Contact, Account objects. Salesforce admins add new fields to sync in under 5 minutes without developer intervention.
Portfolio presentation includes: An animated SVG walkthrough with 8 steps: ① Metadata configuration, ② Lead flagging via trigger, ③ Batch collection, ④ Relationship traversal, ⑤ JSON payload building, ⑥ HTTP callout to Segment, ⑦ Customer.io delivery, ⑧ Big Picture. No interactive demo: the tool is a backend sync engine. Card metrics: 60k+ syncs since 2024, 15-min batch cycle, 0 crashes.
5 processus critiques doivent tourner chaque minute sans se bloquer mutuellement. AsyncCollector orchestre tout depuis un seul point d'entrée : si un job plante, les autres continuent. Configuration 100% déclarative : ajouter un job ne nécessite aucun déploiement.
A metadata-driven centralized orchestrator replacing N independent Salesforce Scheduled Apex jobs. Runs every minute via a single scheduled entry point. Orchestrates 5 critical jobs: Lead Assignment (LAM), Case Routing, Partner Sync, Opportunity Processing, Partnerstack.
Architecture: Uses Type.forName().newInstance() to instantiate job classes dynamically. Tracks last execution per job in mLastExecutions map to enforce configurable delays. Utils.jobBeginWithIsScheduled() prevents duplicate concurrent executions. Auto-Kill pattern per job. Error isolation: one failing job never blocks others. Retry_Async Queueable retries DML on UNABLE_TO_LOCK_ROW up to 10 attempts.
Configuration: 100% declarative via Custom Metadata (Features__mdt with asyncClassToBeCollected__c, asyncInterval__c, Enabled__c fields). Each job extends AsyncCollectable_SCH abstract class with getName() and shouldRun() methods.
Impact: 1,440 executions/day (1 per minute), 0 crashes since June 2025.
Portfolio presentation includes: An interactive demo (demos/AsyncCollector/index.html) visualizing the orchestration pipeline with job scheduling and retry mechanics. An animated SVG walkthrough with 7 steps: ① Collectable class pattern, ② Metadata configuration, ③ Scheduler execution, ④ Delay filtering, ⑤ shouldRun() evaluation, ⑥ Auto-retry on lock errors, ⑦ Big Picture. Card metrics: 0 crashes since June 2025, 1,440 executions/day, 5 orchestrated jobs.
Migrer un catalogue produit de 1 167 références depuis un ERP vers Salesforce CPQ, sans perdre les hiérarchies de bundles ni les règles de remise. L'outil détecte les conflits, recalcule les gammes et permet le retour arrière par enregistrement. 1 167 références migrées, zéro perte de données.
CSV import pipeline for Salesforce CPQ: migrates a legacy product catalog (61 bundles, 350 features, 1,167 products) from Odoo via CSV, with automatic conflict resolution and range-based discount management. Built for a post-acquisition catalog migration at a technical furniture manufacturer.
Architecture: CSV parsing → validation → intra-file conflict detection (vote-by-occurrence) → selective import with per-record rollback. Handles Product2, PricebookEntry, and custom objects via Custom Metadata. In production since March 2026, zero data loss.
Portfolio presentation includes: An interactive demo (demos/CPQ_Import/index.html) showing the CSV import pipeline with validation and conflict detection. An animated SVG walkthrough with 8 steps: ① Odoo data extraction, ② Legacy import, ③ Validation rules, ④ CSV export, ⑤ Salesforce import, ⑥ Suppression handling, ⑦ Bundles import, ⑧ Big Picture. Card metrics: 61 bundles, 350 features, 1,167 products imported.
Des commerciaux créent des comptes en double : ça fausse le pipeline et complique les fusions manuelles (~7 min par doublon). Account Duplicates détecte automatiquement les doublons (rapprochement approximatif + SIRET), évalue leur éligibilité à la fusion et permet de fusionner en 2 min.
Automated account duplicate detection combining Salesforce native fuzzy matching (FindDuplicates API) with custom matching rules (SIRET normalization, company name normalization). Scan pipeline identifies duplicate groups and assesses merge eligibility based on configurable rules.
Architecture: Batch scan pipeline → DuplicateRecordItem creation → Group assessment → Merge eligibility check. Handles edge cases like partial matches and subsidiary relationships.
Portfolio presentation includes: An interactive demo (demos/Account_Duplicates/index.html) with duplicate detection simulation and merge workflow. An animated SVG walkthrough with 7 steps: ① Sales connection to empty merge tool, ② Compute pipeline execution, ③ Duplicate records loading, ④ Group assessment, ⑤ Checkbox selection per account, ⑥ Merge execution with strikethrough, ⑦ Big Picture. Card metrics: 1,981 merge requests, 14/day average, ~5 min saved per merge.
Chaque lundi, environ 300 comptes doivent être distribués entre 16 SDR de 4 pays, proportionnellement à leurs objectifs et en comblant les déficits. Avant : 4h sur Google Sheets. Maintenant : un traitement par lots automatique avec gestion de versions mensuelle et retour arrière possible par pays.
FTE-based account assignment system with monthly versioning and deficit-based algorithm. Manages account territories across multiple countries with automatic redistribution when FTE allocations change. External key pattern: {FTE_ID}_{YEAR}_{MONTH}_{COUNTRY} enables rollback by effective date.
Architecture: FTE_Accounts_Assignment_Parameter__c with versioning, batch processing for monthly recalculation, LWC dashboard for parameter management.
Portfolio presentation includes: An interactive demo (demos/FTE_Assignment/index.html) with SDR parameter configuration and batch simulation. An animated SVG walkthrough with 4 steps: ① Existing SDR table with Target/Current dual rows per SDR across 6 tiers (T1-T3 Queued + T1-T3 Recycling), ② New SDR addition + save, ③ Weekly batch execution with deficit calculation and priority-based assignment, ④ Big Picture with compacted view. Card metrics: 16 SDRs covered, 1,400 accounts/month, 4 countries.
The portfolio includes a visual pipeline section showing how all 9 tools are interconnected across 4 use cases:
Rupture du modèle 1-Lead-1-Entreprise imposé par Salesforce. Un Lead devient une Personne liée à N entreprises indépendantes, avec rapprochement en deux niveaux pour éviter toute duplication.
Un mécanisme de contournement à granularité fine, par règle de validation, par déclencheur et par méthode. Permet à une intégration lourde de n'exécuter que ce qui la concerne, et à du code Apex de manipuler des données sans déclencher d'effets de bord non voulus. Adopté comme standard sur l'ensemble de la plateforme Sales Cloud.
Migration du modèle partenaires personnalisé vers le standard Salesforce PRM : avec une phase de cohabitation en double écriture (déclencheurs maintenant les deux systèmes synchronisés) pour garantir zéro régression sur les rapports SF et systèmes externes avant toute bascule.
Pattern d'orchestration centralisée pour remplacer N planificateurs indépendants : un point de contrôle unique piloté par les métadonnées comme réponse structurelle aux conflits d'exécution parallèle.
Pipeline en deux phases pour 1 500 restaurants : import CSV avec projection des plannings relatifs en dates absolues, règles métier et isolation par restaurant ; puis traitement par lots quotidien orchestrant la chaîne SF ↔ Système logistique ↔ Optimiseur de tournées jusqu'à l'export entrepôts.
Salesforce: Apex (advanced patterns, governor limits optimization), LWC, Flows, SOQL/SOSL, Platform Events, Change Data Capture, Custom Metadata, Sharing Rules, Bulk API 2.0. Architecture: Rules engines, async orchestration, metadata-driven design, interval algebra, polymorphic type systems. Frontend: LWC, JavaScript, HTML/CSS, SVG animations. Integration: REST API, Segment, Customer.io, Odoo. Tools: Git, VS Code, Salesforce CLI, Dataloader. Methodologies: Agile/Scrum, Design Authority governance.
Titulaire d'un master en ingénierie informatique (Efrei, France, 2015), cursus suivi en anglais, ma trajectoire est celle d'une responsabilité architecturale croissante : du Tech Lead qui conçoit son premier modèle de données, au membre de Design Authority qui arbitre les décisions transverses d'un programme multi-équipes, jusqu'à l'architecte qui conçoit un écosystème complet depuis la première ligne.
Ce qui m'a ancré sur Salesforce : l'exigence architecturale irréductible de la plateforme. Governor limits, multi-tenancy, absence de threads : ces contraintes ne tolèrent pas les approximations de conception. Chaque décision a un coût mesurable en production, et c'est exactement là où je me positionne.
Les environnements les plus contraints sont ceux qui m'ont le plus appris. Chez AG2R La Mondiale, assureur national de 15 000 collaborateurs, j'étais l'un des trois membres de la Design Authority : chaque décision d'architecture transverse y était arbitrée en séance hebdomadaire, et validée avant tout déploiement en production. Plus tard, chez Qonto, la migration du modèle partenaires vers le standard PRM a exigé une phase de double écriture pour prouver la parité chiffre à chiffre avant toute bascule. Traçabilité, gouvernance, réversibilité : je considère ces exigences comme des données du problème, pas comme des freins.
Premiers pas en architecture applicative : référent technique sur Biovia Content Manager, conception d'une application mobile de gestion de contacts. Début d'une approche structurée de la conception logicielle.
Premier rôle d'architecte Salesforce : conception du modèle de données, architecture d'un pipeline d'import pour ~1 500 restaurants (API personnalisée, retour arrière unitaire par restaurant, chaînage de jobs, Bulk API 2.0). Premières décisions structurantes : faire ou acheter.
Design Authority transverse chez AG2R La Mondiale : arbitrages d'architecture multi-équipes, gouvernance des décisions techniques, validation des livraisons de l'équipe via Copado, y compris sur la couche Salesforce Industries (Vlocity) Insurance. Mission internationale chez Criteo.
Architecte Salesforce : conception de l'écosystème technique interne depuis zéro. Décisions structurantes : modèle Lead multi-entreprises (LCI), orchestrateur asynchrone piloté par les métadonnées (AsyncCollector), migration du modèle PRM personnalisé → standard Salesforce.
Certifications obtenues : Platform Developer I, Platform App Builder, Platform Data Architect, Platform Sharing and Visibility Architect, la certification combinée Application Architect, et Platform Identity and Access Management Architect. Prochaine étape : la certification combinée System Architect (reste Development Lifecycle & Deployment et Integration Architect).
Plateforme de calendriers-surprises virtuels. Animations d'ouverture interactives (Stargate, Pong, roulette...), fonds animés en Canvas2D, système de plugins, éditeur WYSIWYG. Calendriers de l'avent, surprises quotidiennes, one-shots.
Jeu de gravité construit sur Matter.js. Système de fusions (12 types), monstres, obstacles, thèmes visuels et sonores, physique réaliste.
Piano interactif avec effets visuels, multi-modes de jeu et interface tactile adaptée aux enfants. Conçu comme outil ludique d'éveil musical.