Qualification de lead par IA
Ce workflow score un lead dès qu'il est soumis via le formulaire, enregistre les leads qualifiés en Snowflake et notifie le commercial par e-mail.
Chargement du diagramme…
Le besoin
Chaque lead soumis via le formulaire doit être qualifié pour savoir s'il mérite l'attention du commercial. Un agent IA le score automatiquement : les leads qualifiés sont enregistrés en Snowflake et le commercial est notifié par e-mail, les autres sont publiés comme non qualifiés sur un topic Google Pub/Sub consommé par le CRM.
Ce que fait le flux
- Nouveau lead (formulaire) — le déclencheur capture la soumission du formulaire (
triggerIdform.submitted). Les données du lead arrivent dansdata. - Scorer le lead (IA) — le nœud Agent IA évalue le lead avec le modèle
gemini-1.5-pro(Sortie structurée). Le score est stocké danscontext.agentOutput.answer.score. - Score ≥ 60 ? — la condition route le lead selon son score.
- Enregistrer le lead qualifié — si le score est suffisant, le nœud Snowflake insère le lead dans la table
leads_qualifies. - Notifier le commercial — le nœud Envoi e-mail envoie le résultat à l'équipe commerciale.
- Publier le lead non qualifié (CRM) — sinon, le nœud Envoi événement publie
lead_rejectedsur le topic Pub/Sub du CRM.
Ce dont vous avez besoin
- Un déclencheur qui capture la soumission du formulaire (
triggerIdform.submitted). - Le nœud Agent IA (modèle
gemini-1.5-pro), le nœud Condition, le nœud Snowflake, le nœud Envoi e-mail et le nœud Envoi événement. - La table Snowflake
leads_qualifieset le topic Pub/Sub du CRM qui reçoitlead_rejected.
Construction
Copiez la définition du workflow et collez-la dans l'éditeur (le nœud Déclencheur est recréé automatiquement, il n'est pas dans le snippet) :
[
{
"id": "agent-103",
"name": "Scorer le lead (IA)",
"config": {
"type": "AGENT",
"model": {
"provider": "GEMINI",
"name": "gemini-1.5-pro"
},
"systemPrompt": "Tu scores des leads B2B de 0 à 100, avec un champ score et une synthèse.",
"message": "Voici les infos du lead : {{ data.company }}",
"outputKey": "agentOutput",
"responseFormat": "{\"type\": \"object\", \"properties\": {\"score\": {\"type\": \"number\", \"minimum\": 0, \"maximum\": 100}, \"synthesis\": {\"type\": \"string\"}}, \"required\": [\"score\", \"synthesis\"]}",
"tools": []
},
"parents": [
"trigger"
],
"position": {
"x": 0,
"y": 200
},
"next": "cond-103"
},
{
"id": "cond-103",
"name": "Score ≥ 60 ?",
"config": {
"type": "CONDITION",
"conditionCode": "return context.agentOutput.answer.score >= 60;",
"conditions": [
{
"value": true,
"next": "db-103"
},
{
"value": false,
"next": "event-103"
}
]
},
"parents": [
"agent-103"
],
"position": {
"x": 0,
"y": 400
}
},
{
"id": "db-103",
"name": "Enregistrer le lead qualifié",
"config": {
"type": "DATABASE_SNOWFLAKE",
"query": "INSERT INTO leads_qualifies (societe, score) SELECT '{{ data.company }}', {{ context.agentOutput.answer.score }}",
"outputKey": "snowflakeResult"
},
"parents": [
"cond-103"
],
"position": {
"x": 0,
"y": 600
},
"next": "email-103"
},
{
"id": "email-103",
"name": "Notifier le commercial",
"config": {
"type": "SEND_EMAIL",
"to": [
"ventes@agence-leads.fr"
],
"subject": "Nouveau lead scoré : {{ data.company }}",
"content": "Score IA : {{ context.agentOutput.answer.score }}",
"sendAsHtml": true
},
"parents": [
"db-103"
],
"position": {
"x": 0,
"y": 800
}
},
{
"id": "event-103",
"name": "Publier le lead non qualifié (CRM)",
"config": {
"type": "SEND_EVENT",
"provider": {
"type": "GCP_PUBSUB",
"projectId": "mon-projet-crm",
"topicId": "leads"
},
"body": "{\"event\": \"lead_rejected\", \"company\": \"{{ data.company }}\"}"
},
"parents": [
"cond-103"
],
"position": {
"x": 800,
"y": 600
}
}
]
Vérifier que ça marche
- Données attendues : le message de l'agent référence
{{ data.company }}— assurez-vous que le payload du déclencheur expose bien cette donnée. Le score est lu dans la clé de sortie de l'agent (défautcontext.agentOutput) ; la condition et l'e-mail utilisentcontext.agentOutput.answer.score. - Déployez le flux (Déployer un flux), puis déclenchez le scénario réel : chaque exécution génère une trace consultable (Visualiser les traces).
Variantes
- Si vous modifiez la clé de sortie de l'agent, mettez à jour toutes les références qui l'utilisent (condition et e-mail).
- La Sortie structurée force l'agent à renvoyer un objet JSON fiable (
score, synthèse) exploitable par la condition ; sans elle, la réponse de l'agent est un texte. - Sans outil configuré, le nœud Agent IA se comporte en mode conversationnel : il répond mais ne déclenche pas d'appels externes.
Pour aller plus loin
Voir aussi : Exemples et intégrations