Portail SaaS multi-agences pour l'automatisation des leads immobiliers UK : capture multi-portails → réponse <60 s → qualification IA → relances. Conçu pour être déployable selon la sensibilité des données de chaque agence.
Au lieu de subir le « on ne veut pas externaliser nos données », on le retourne en « choisissez où vivent vos données » — le même levier qui fait gagner des contrats pour ComplyFlow (Nextcloud auto-hébergé).
| Brique | C'est quoi | Son rôle |
|---|---|---|
| Claude Code | Outil de développement (assistant de code) | Construit le logiciel. Ne tourne jamais en production. |
| Le backend | Vraie appli serveur (Python/FastAPI) qui tourne 24/7 | LE moteur : encaisse les leads, orchestre tout, gère les agences. |
| L'API d'IA | Le « cerveau » (Claude / Gemini), appelé par du code | Appelé par le backend uniquement pour les tâches d'IA (qualifier, rédiger). |
Tu héberges (en UE). Toutes les agences partagent l'infra, données isolées par agence.
Le moins cher · onboarding instantanéUn déploiement isolé par agence (sa propre base / conteneur), chez toi ou dans son cloud.
IntermédiaireInstallé sur le serveur de l'agence. Les données ne sortent jamais de chez elle.
Premium · zéro externalisation| Mode | Où sont les données | Pour qui |
|---|---|---|
| A · Mutualisé | Ton serveur (UE), isolées par agency_id | La majorité des agences |
| B · Dédié | Serveur dédié (tien ou à elles) | Agences moyennes prudentes |
| C · Auto-hébergé | Leur propre serveur | Grosses agences / refus d'externaliser |
Même en auto-hébergé, si on appelle une API d'IA, le texte sort vers le fournisseur. Trois réponses, du plus simple au plus strict :
ai_provider abstraite permet de basculer Claude ↔ Gemini ↔ modèle local par un simple réglage, par agence. La portabilité est dans le code dès le jour 1.| Couche | Choix | Pourquoi |
|---|---|---|
| Backend | Python · FastAPI | Rapide, async, propre ; tu codes déjà en Python |
| Base de données | PostgreSQL | Robuste, multi-tenant, relationnel |
| File / planif. | Redis + worker (RQ/Celery) | Séquences de relance, tâches asynchrones |
| Portail (front) | React (ou server-rendered au début) | Login agence, dashboard, config |
| IA | Couche ai_provider : Claude / Gemini UE / local | Portabilité & RGPD |
| Intégrations | Twilio · WhatsApp Business · IMAP · Brevo/SendGrid | SMS, WhatsApp, parsing email, envois |
| Déploiement | Docker + Nginx + TLS | Même conteneur partout (modes A/B/C) |
Chaque table « métier » porte un agency_id → isolation stricte par agence (une agence ne voit jamais les données d'une autre). En mode dédié/auto-hébergé, c'est carrément une base par agence.
| Table | Champs clés |
|---|---|
| agencies | id, nom, mode (A/B/C), config_portails, twilio_cfg, ai_provider, branding |
| users | id, agency_id, email, rôle (admin/négociateur), hash_mdp |
| leads | id, agency_id, source (rightmove…), nom, tél, email, bien, statut, score, négociateur_id, created_at |
| conversations | id, lead_id, canal (sms/wa/email), état |
| messages | id, conversation_id, sens (in/out), contenu, ts |
| sequences | id, agency_id, étapes (J+1/J+3…), conditions d'arrêt |
| tasks (file) | id, lead_id, type (relance), exécuter_le, état |
| audit_log | id, agency_id, user_id, action, ts (traçabilité RGPD) |
agency_id (et tests anti-fuite inter-agences).ai_provider abstraite posée d'entrée.| Poste | Ordre de grandeur |
|---|---|
| Serveur (VPS) | ~5–40 €/mois selon charge (Scaleway/OVH/Hetzner) |
| IA (API) | Quelques centimes par lead qualifié ; monte avec le volume |
| SMS/WhatsApp (Twilio) | À l'usage, ~0,03–0,08 € / SMS |
| Email (Brevo/SendGrid) | Gratuit→faible jusqu'à gros volumes |