Comment j'ai concu et developpe Maestro, une plateforme complete d'email marketing avec scoring algorithmique, architecture micro-services et modele SaaS multi-tenant.
Les plateformes d'email marketing imposent des quotas, des tarifs progressifs et des boites noires algorithmiques. L'utilisateur paye de plus en plus cher a mesure qu'il grandit, sans comprendre pourquoi certains contacts sont "qualifies".
Les leaders du marche (Mailchimp, Brevo, Sendinblue) facturent par palier de contacts ou d'envois. Plus on grandit, plus on paye — sans valeur ajoutee proportionnelle.
Le "lead scoring" repose sur des algorithmes IA proprietaires. Impossible de comprendre pourquoi un contact est "chaud" ou "froid", ni d'ajuster les criteres.
L'utilisateur est lie au serveur SMTP du fournisseur. Pas de possibilite d'utiliser son propre serveur, d'ou un controle limite sur la delivrabilite.
Les metriques d'engagement (ouvertures, clics, bounces) vivent dans des CSV Mailjet ou des dashboards separes. Pas de reconciliation automatique.
Avant d'ecrire la moindre ligne de code, chaque choix a ete pese : cout, complexite, scalabilite, experience utilisateur.
Le scoring et la segmentation necessitent des calculs complexes (pipelines, ponderation, classification). Python excelle ici. Le reste (auth, CRUD, envoi SMTP, UI) est du domaine de Symfony. Communication via REST interne — simple, testable, decouple.
Un modele ML necessite des donnees d'entrainement massives et reste une boite noire. L'algorithme deterministe est transparent : l'utilisateur comprend exactement pourquoi un contact est "Hot" (score 0.85) ou "Dead" (hard bounce detecte). Regles claires, reproductibles, ajustables.
Les quotas punissent l'utilisateur honnete qui grandit. Au lieu de limiter l'usage, on limite le partage : 2 appareils max (bureau + laptop), enregistrement par cookie token UUID v4. L'utilisateur honnete ne voit jamais la limite. Le partage frauduleux est bloque naturellement.
Docker par tenant = overhead enorme pour un SaaS a 12€/mois. L'isolation se fait par la couche applicative (filtrage user_id sur chaque requete Doctrine), pas par l'infrastructure. Un VPS 8 vCores / 16 Go RAM supporte des centaines d'utilisateurs.
Flutter aurait necessite un projet separe, une double maintenance, et une captation des KPIs complexe (API intermediaire). La PWA reutilise 100% du code existant : manifest, service worker, mode offline — installable sur mobile et desktop sans friction.
12€/mois, sans quotas, sans limites de contacts ou d'envois. L'utilisateur branche son propre SMTP et garde le controle total.
Chaque contact recoit un score de 0 a 100% base sur des regles explicites. L'utilisateur voit exactement pourquoi.
L'utilisateur branche n'importe quel serveur SMTP. Le systeme gere le reste.
Chaque interaction (ouverture, clic, bounce, spam) remonte en temps reel depuis Mailjet.
Au lieu de punir l'utilisateur avec des quotas, on limite le nombre d'appareils.
Symfony gere l'interface et la logique metier. Python gere le calcul. Ils communiquent via REST interne avec un token partage.
Formulaire simple (email + mot de passe). Compte cree en mode trial pour 7 jours. Cookie device enregistre automatiquement.
Wizard 3 etapes (SMTP, profil, pret). Skippable a tout moment — l'utilisateur peut configurer plus tard dans Parametres.
Import contacts CSV, creation de campagnes, envoi, suivi temps reel via webhooks, scoring automatique. PWA installable sur mobile.
Dashboard avec KPI, analyse par campagne, analyse multi-campagnes (relance), reconciliation Mailjet, segmentation automatique.
Redirection vers la page d'abonnement. 12€/mois pour continuer. Pas de quotas, pas de limites.
Decouplage PHP/Python avec communication REST, token d'authentification, et degradation gracieuse si Python est offline.
Moteur de scoring deterministe avec ponderation multi-criteres : profil, domaine email, engagement, historique d'envoi. Classification Hot/Warm/Cold/Dead.
CSRF, isolation des donnees par user_id, hachage bcrypt, validation stricte des entrees, gestion des appareils par token UUID.
Service worker (network-first), manifest installable, page offline, design mobile-first avec sidebar retractable.
Webhooks Mailjet en temps reel, import/export CSV, reconciliation des donnees entre systemes, presets SMTP multi-fournisseurs.
Multi-tenant applicatif, gestion d'essai (7j), abonnement, anti-partage, onboarding guide — toute la logique business d'un vrai SaaS.