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 data model au déploiement, end-to-end.
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.
LCI créés — modèle 1 Lead → N entreprises qui casse la contrainte native. 587 opportunités générées, 71 Closed Won. 96 champs trackés sur 4 objets avec traçabilité UI/API/Flow/Batch.
exécutions/jour, 0 crash depuis 10 mois. 5 jobs orchestrés par un seul entry point metadata-driven. 60K+ syncs SF→Customer.io via Segment, configuration 100% déclarative.
16 SDRs (FR, ES, DE, IT), 1 400 comptes/semaine distribués automatiquement. Algorithme déficit-weighted avec versioning mensuel. Remplace 4h de travail manuel hebdomadaire.
À 33 ans, je cumule plus d'une décennie d'ingénierie logicielle dont huit années sur Salesforce. Mon parcours m'a confronté à des problématiques d'architecture croissantes — d'une application de planification transport pour un logisticien national, à la gouvernance d'un programme multi-équipes chez un assureur, jusqu'à la conception d'un écosystème complet d'outils internes pour une fintech européenne. Ce fil rouge : résoudre des problèmes business par des choix techniques structurants, et les implémenter jusqu'en production.
Ce qui me différencie : je ne sépare pas l'architecture de l'implémentation. Chaque système présenté ici a été conçu, arbitré, construit et mis en production par mes soins — moteur de règles à N dimensions, orchestrateur asynchrone metadata-driven, refonte de data model PRM du custom vers le standard. Je porte les projets de la vision jusqu'au déploiement.
Depuis 2024, j'intègre l'IA comme levier d'implémentation, en conservant la maîtrise complète des décisions d'architecture et de design. La vision reste humaine, l'exécution est accélérée.
Père de trois enfants, curieux permanent, convaincu que les meilleures solutions naissent sous contrainte.
Système qui dissocie la personne de l'entreprise dans le CRM. 1 Lead = 1 Personne → N Company Infos. Matching intelligent, auto-conversion multi-path, conversion wizard custom. Architecturé et déployé en <1 mois.
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 (66/day), 587 opportunities generated, 71 Closed Won. 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. 100% hand-coded.
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, 71 Closed Won.
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.
Outil de capacity management pour managers : groupes, pondérations, assignation par déficit, virtual accounting et sync calendrier 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.
Synchronisation metadata-driven de Salesforce vers Customer.io via Segment. Configuration 100% déclarative. Dual sync : batch + real-time.
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. 100% hand-coded without AI.
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.
Orchestrateur metadata-driven qui empêche les conflits entre jobs asynchrones, gère les délais et le monitoring. 100% codé manuellement.
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. 100% hand-coded without AI.
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.
Suite complète de gestion d'import/export pour Salesforce CPQ : migration legacy depuis Odoo, gestion de bundles hiérarchiques, résolution intelligente de conflits et remises par gamme. Projet évolutif, encore en développement actif.
Robust CSV import pipeline for Salesforce CPQ data. Handles ~1,500 restaurant records with per-record rollback capability, job chaining, and Bulk API 2.0 integration. Built for Martin Brower France's restaurant onboarding process.
Architecture: CSV parsing → validation → conflict detection → selective import with rollback per restaurant. Handles Product2, PricebookEntry, and custom objects. 3 years in production with 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.
Outil de détection et de résolution des doublons de comptes et contacts. Interface visuelle pour comparer, fusionner et nettoyer les données en masse.
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.
Automatisation hebdomadaire de l'assignation de comptes aux SDRs. Remplace 4h de travail manuel sur Google Sheets. Algorithme déficit-weighted, multi-pays FR/DE/IT/ES, Tier 1/2/3 Queued + Recycling. Développé sans IA.
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/week, 4 countries (FR×6, ES×7, DE×2, IT×1).
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 matching en deux niveaux pour éviter toute duplication.
Migration du modèle partner custom vers le standard Salesforce PRM — avec une phase de cohabitation dual-write (triggers maintenant les deux systèmes en sync) pour garantir zéro régression sur les reportings SF et systèmes externes avant toute bascule.
Concevoir un pipeline d'intégration tolérant aux pannes pour des CSV à plannings relatifs — le choix d'une API custom avec découpage par unité métier face à l'impossibilité de reprise partielle des outils natifs.
Pattern d'orchestration centralisée pour remplacer N schedulers indépendants — un point de contrôle unique metadata-driven comme réponse structurelle aux conflits d'exécution parallèle.
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.
Diplômé de l'EFREI en 2015, ma trajectoire est celle d'une responsabilité architecturale croissante — du Technical Lead qui conçoit son premier modèle de données, au 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 design. Chaque décision a un coût mesurable en production, et c'est exactement là où je me positionne.
Ma spécificité : je ne dissocie pas la réflexion architecturale de l'implémentation. Je conçois, j'arbitre, je construis et j'assume les décisions en production. Depuis 2024, j'intègre l'IA comme levier d'accélération, en conservant la maîtrise complète des choix d'architecture.
Développeur Web & Mobile. Team leader technique, architecture du projet Biovia Content Manager, application mobile de gestion des contacts.
Premier rôle d'architecte Salesforce — conception du modèle de données, architecture d'un pipeline d'import pour ~1 500 restaurants (API custom, rollback unitaire par restaurant, chaînage de jobs, Bulk API 2.0). Premières décisions structurantes build vs buy.
Design Authority transverse chez AG2R La Mondiale — arbitrages d'architecture multi-équipes, gouvernance des décisions techniques, Vlocity Insurance, Copado. Mission internationale chez Critéo.
Architecte Salesforce — conception de l'écosystème technique interne depuis zéro. Décisions structurantes : modèle Lead multi-entreprises (LCI), orchestrateur asynchrone metadata-driven (AsyncCollector), migration du modèle PRM custom → standard Salesforce.
Parcours de certification : Platform Developer I → App Builder → Data Architecture → Sharing & Visibility → Application Architect → System 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é basé sur Matter.js. Système de fusions (12 types), monstres, obstacles, thèmes visuels et sonores, physics-based gameplay. Direction créative et supervision complète du développement.
Piano interactif avec effets visuels, multi-modes de jeu et interface tactile adaptée aux enfants. Conçu comme outil ludique d'éveil musical.