CRM autofill
Objectif : Transformer une donnée non structurée (conversation naturelle) en donnée structurée (commande Odoo).
C'est l'un des cas d'usage les plus pertinents pour l'IA générative aujourd'hui : transformer une donnée non structurée (conversation naturelle) en donnée structurée (commande Odoo).
L'utilisation de Supabase comme base vectorielle pour le RAG est un très bon choix technique.
Voici l'architecture technique recommandée pour réaliser ce système "Auto Fill" intelligent.
🏗️ Architecture Technique Globale
Le flux se décompose en 3 briques principales :
- La Synchronisation (Knowledge Base) : Odoo vers Supabase.> là c'est exporté deja TOUT les contacts de ODOO CONTACT TYPé SYNERGIA > cela permet d'avoir dans le RAG des données vectorisables ( celles qui changent pas tout le temps ) > c'est un batch à faire toutes les heures ou jour .
- Le Traitement (Processing) : Conversation vers Extraction JSON. > Là c'est après la reconnaissance de la parole , c'est de faire le parsing dans le RAG<>LLM, pour voir si une nouvelle personne est mentionné et si c'est le cas alors faire le push vers le User dans SCREEN pour lui demander de valider l'orthographe du prénom, nom et aussi valider numéro de téléphone et profession si c'est présent dans le texte de la reconnaissance + et .... si .... le nom de la personne est DEJA dans le RAG avec juste faire un push "visuel" pour demander validation que c'est bien cette personne.
- L'Exécution (Action) : JSON vers Odoo.
Étape 1 : La Base de Connaissance (Odoo ➡️ Supabase)
L'IA doit connaître vos produits parfaitement pour ne pas halluciner des références.
- Extraction Odoo : Via l'API d'Odoo (XML-RPC ou REST), vous exportez périodiquement votre liste de nom (Nom, prénom, adresse, titre, ...)
- Vectorisation (Embeddings) : Vous passez ces descriptions produits dans un modèle d'embedding (ex: OpenAI text-embedding-3-small ou un modèle open source via HuggingFace).
- Stockage Supabase : Vous stockez ces vecteurs et les métadonnées (ID Odoo contact , Nom, SKU) dans une table Supabase avec l'extension pgvector.
Pourquoi ? Cela permet à l'IA de comprendre que si le client dit "je dsicute avec Madame Lauret et sa nièce Madame Laurence Vassor et Monsieur alexandre Bompart qui est Kiné ", cela correspond a la ficher contact existante dans ODOO module CONTACT grâce à la recherche sémantique ( et RAG ) . Et si ce nom n'existe pas alors ... création et PUT dans ODOO Contact étendu du JSON des professions possibles ( ici kiné, ect ... )
JSON (et CSV pour odoo création table ) des professions paramédicales
Voici la version EXTENDUE et COMPLÈTE de tous les acteurs possibles de la chaîne de valeur « santé – médico-social – aidance – Silver Economy » dans le cadre Synergia Senior.
J’ai tout consolidé, tout élargi et organisé en JSON propre, prêt pour Odoo ou votre futur RAG.
Et aussi option format CVS si plus pratique pour import dans ODOO contact extension Profession para médicales )
.
Étape 2 : Le Pipeline de Traitement (L'intelligence)
C'est le cœur du réacteur. Voici le workflow lorsqu'une conversation est terminée :
- Input : Récupération de la transcription de la conversation (texte).
- Recherche RAG (Retrieval) :
- Le système analyse la conversation pour repérer les intentions d'achat.
- Il interroge Supabase : "Quelles sont les personnes de notre base ODOO contact qui ressemblent le plus aux noms prénom dans ce texte ?"
- Supabase renvoie les 10-20 produits les plus probables avec leurs vrais ID Odoo.
- Extraction LLM (Generation) :
- Vous envoyez au LLM (GPT-4o ou Claude 3.5 Sonnet ou openAI 4àmini ) un prompt contenant :
- La conversation brute.
- La liste des produits candidats trouvés par Supabase (Context).
- Une instruction stricte : "Extrais les informations du client et mappe les demandes produits uniquement avec les IDs de la liste fournie."
- Vous envoyez au LLM (GPT-4o ou Claude 3.5 Sonnet ou openAI 4àmini ) un prompt contenant :
- Output JSON : Le LLM génère un JSON propre.
Exemple de structure JSON attendue :
JSON
{
"client": {
"name": "Jean Dupont",
"email": "jean.dupont@email.com",
"phone": "+33600000000"
"Profession": "Gériatres"
]
}
Étape 3 : L'Exécution (JSON ➡️ Odoo)
Une fois le JSON validé, un script backend (Python ou une Edge Function Supabase) prend le relais :
- Vérification Client : Interrogation de Odoo. Le client existe-t-il (email/tel) ?
- Oui : On récupère son ID.
- Non : On crée la fiche contact (res.partner) et on récupère le nouvel ID.
- Création du Devis : Appel API Odoo pour créer un sale.order.
- Injection des lignes : Boucle sur le JSON pour créer les sale.order.line avec les bons Product IDs récupérés via le RAG.
🛠️ Stack Technique Recommandée
Pour être efficace et robuste, voici la stack idéale :
| Composant | Technologie recommandée |
| ERP / Source | Odoo (Module Contact ) |
| Base Vectorielle | Supabase (PostgreSQL + extension pgvector) |
| Orchestration | n8n (Low-code, excellent pour connecter Odoo et Supabase) OU Supabase Edge Functions (TypeScript) |
| LLM (Cerveau) | OpenAI GPT-4o (Très bon pour suivre les instructions JSON strictes) |
| Embeddings | OpenAI text-embedding-3-small (Rapide et peu coûteux) |
| Langage Script | Python (Si dev custom) pour la logique Odoo XML-RPC |
EmbeddingsOpenAI text-embedding-3-small (Rapide et peu coûteux)
Pour un cas d'usage e-commerce/catalogue produit comme le vôtre, le modèle text-embedding-3-small est le "sweet spot" parfait entre performance, coût et latence.
Voici pourquoi je le recommande spécifiquement pour votre projet :