Safe Invest AI Lead Automation
Pipeline LLM multilingue de leads
Les messages que les prospects envoient sur WhatsApp, Instagram ou Messenger, en français, en anglais ou en darija, deviennent automatiquement des leads CRM structurés.
- Organisation
- Safe Invest Property · Marrakech
- Rôle
- Stagiaire ingénierie IA · Seul développeur
- Période
- Juillet – août 2026 · 9 semaines
- Langues
- Français · anglais · darija
Réalisé pendant un stage. Le code, les données et les conversations de l’agence sont confidentiels et ne sont pas présentés ici.
- Exactitude d’extraction
- 98 %
- Taux de concordance entre les données de lead extraites et la référence annotée, mesuré sur 96 messages en français, en anglais et en darija.
- Moins d’appels LLM
- ≈4×
- La baisse du volume d’appels LLM une fois les messages envoyés en rafale regroupés avant l’extraction.
- Scénarios de bout en bout
- 13/14
- Parcours complets, du message entrant au lead CRM, validés après l’ajout de la transcription vocale et du matching prospect↔bien.
- Champs CRM par lead
- 9
- Les champs de chaque fiche CRM créée à partir d’une conversation. 3 d’entre eux sont calculés en code plutôt que par le modèle.
01 Contexte
Safe Invest Property est une agence immobilière de Marrakech dont les prospects écrivent via WhatsApp, Instagram et Messenger, en français, en anglais et en darija marocain. Pendant un stage de 9 semaines, j’ai été le seul développeur du système qui transforme ces conversations en leads CRM.
02 Problème
Les demandes arrivent sous forme de conversations libres : plusieurs messages courts d’affilée, des notes vocales, trois langues. Chacune doit devenir une fiche de lead complète et cohérente, sans créer de doublon lorsqu’une plateforme livre deux fois le même webhook.
03 Architecture
01Canaux
WhatsApp · Instagram · Messenger
Webhooks entrants
02Réception
Ingestion idempotente
Doublons de webhooks absorbés par les contraintes de la base
02Tampon
Temporisation des rafales
Un appel LLM par rafale
03Voix
Transcription des notes vocales
De l’audio au texte
04LLM
Extraction structurée
API Claude · tool use forcé
98 % d’exactitude
04Code
Champs déterministes
Calculés, non générés
05Données
PostgreSQL
Schéma à 5 tables
06Matching
Matching prospect ↔ bien
06Sortie
Lead CRM structuré
04 Ma contribution
Seul développeur, de bout en bout : architecture du pipeline, modèle de données PostgreSQL, extraction LLM et son évaluation, transcription des notes vocales, moteur de matching prospect↔bien et mise en production.
05 Choix techniques
- 01
Une sortie structurée, pas du texte libre
Le LLM renvoie chaque lead via un appel d’outil forcé au schéma fixe : chaque réponse correspond directement aux champs du CRM, au lieu d’être extraite d’un texte en prose.
- 02
La logique déterministe reste dans le code
Les champs qui suivent des règles fixes sont calculés en code plutôt que générés par le modèle, ce qui supprime une classe d’erreurs par conception.
- 03
L’idempotence dans la base de données
Les contraintes du schéma PostgreSQL à 5 tables absorbent les livraisons de webhooks en double : une livraison répétée ne crée pas de second lead.
- 04
Temporiser les rafales de messages
Les prospects envoient souvent plusieurs messages courts d’affilée. Ils sont regroupés avant l’extraction : une rafale coûte un seul appel LLM, au lieu d’un par message.
06 Résultats
- Déployé en production : les conversations de trois canaux de messagerie deviennent automatiquement des leads CRM
- Un seul pipeline pour le français, l’anglais et le darija marocain
- Notes vocales transcrites et leads associés aux biens de l’agence
- Livraisons de webhooks en double absorbées en production par des contraintes d’idempotence
07 Stack
- Claude API
- Sorties structurées
- PostgreSQL
- Webhooks
- WhatsApp · Instagram · Messenger
08 Code source
Le code source n’est pas public : il a été écrit pendant un stage et reste privé. D’autres projets sont sur GitHub.
Vous construisez quelque chose de similaire ?
Lancer un projet