Aller au contenu principal

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​

  1. Nouveau lead (formulaire) — le déclencheur capture la soumission du formulaire (triggerId form.submitted). Les données du lead arrivent dans data.
  2. 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é dans context.agentOutput.answer.score.
  3. Score ≥ 60 ? — la condition route le lead selon son score.
  4. Enregistrer le lead qualifié — si le score est suffisant, le nœud Snowflake insère le lead dans la table leads_qualifies.
  5. Notifier le commercial — le nœud Envoi e-mail envoie le résultat à l'équipe commerciale.
  6. Publier le lead non qualifié (CRM) — sinon, le nœud Envoi événement publie lead_rejected sur le topic Pub/Sub du CRM.

Ce dont vous avez besoin​

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éfaut context.agentOutput) ; la condition et l'e-mail utilisent context.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