Sales Pipeline Automation with OpenClaw AI

Accelerate your sales pipeline with OpenClaw AI agents. Automate lead qualification, follow-up sequences, proposal generation, and deal analytics for higher win rates.

E
ECOSIRE Research and Development Team
|19 mars 202613 min de lecture2.8k Mots|

Automatisation du pipeline de ventes avec OpenClaw AI

Les équipes commerciales ne consacrent que 35 % de leur temps à vendre. Le reste est consacré à la saisie des données CRM, aux séquences de suivi des e-mails, à la préparation des propositions, à la mise à jour des prévisions et à la recherche de prospects. Ce sont des tâches nécessaires, mais il ne s’agit pas des conversations compétentes, de l’établissement de relations et des négociations complexes pour lesquelles les vendeurs sont particulièrement qualifiés. Chaque heure qu'un vendeur consacre au travail administratif est une heure non consacrée à la clôture des revenus.

Les agents OpenClaw AI gèrent la couche administrative et de coordination du processus de vente de bout en bout. Ils qualifient les prospects entrants, recherchent des prospects, maintiennent des séquences de suivi, génèrent des premières ébauches de propositions, mettent à jour les données CRM à partir des notes de conversation, font des prévisions avec une rigueur statistique et alertent les responsables commerciaux des transactions à risque. Les vendeurs se concentrent sur les conversations. Les agents gèrent tout ce qui concerne ces conversations.

Points clés à retenir

  • L'agent de qualification des leads d'OpenClaw note et hiérarchise les leads entrants en temps réel, garantissant ainsi que les commerciaux se concentrent en premier sur les opportunités les plus probables.
  • L'agent de recherche de prospects crée automatiquement des profils complets d'entreprise et de contacts avant le début de la sensibilisation sortante.
  • Les agents de séquence de suivi maintiennent des cadences multi-touch dans les e-mails, les rappels téléphoniques et LinkedIn, s'arrêtant automatiquement lorsqu'un prospect répond.
  • L'agent de proposition génère des premières ébauches de propositions à partir de notes d'appel et de données CRM, formatées selon votre modèle, en moins de cinq minutes.
  • Les agents d'hygiène CRM analysent les notes d'appel et les résumés de réunions pour mettre à jour automatiquement les champs d'opportunité, les étapes suivantes et les étapes.
  • Les agents de prévision appliquent des modèles statistiques à votre pipeline pour produire des projections de revenus pondérées par probabilité avec une analyse de scénarios.
  • Les agents d'alerte aux risques avertissent les gestionnaires lorsque les transactions montrent des signes de blocage : plus de surprises en fin de trimestre.
  • ECOSIRE construit l'automatisation des ventes OpenClaw intégrée à Salesforce, HubSpot, Odoo CRM et Pipedrive.

Architecture d'automatisation des ventes

La pile de vente OpenClaw couvre l'entonnoir complet, du prospect à la transaction conclue :

Inbound Lead / SDR Prospect
          ↓
[ Qualification Agent ]     — ICP fit score, intent signals, company profile
          ↓
[ Research Agent ]          — full company + contact profile, recent news, pain signals
          ↓
[ Outreach Agent ]          — multi-touch sequence management, pause on response
          ↓
[ Conversation Support Agent ] — pre-call brief, post-call note parsing, CRM update
          ↓
[ Proposal Agent ]          — first-draft proposal from requirements, formatted to template
          ↓
[ Pipeline Intelligence Agent ] — forecast, risk alerts, deal health scoring

Chaque agent peut être déployé indépendamment. La plupart des organisations commencent par l'hygiène CRM et la gestion des séquences de suivi (gain de temps le plus élevé, risque le plus faible) et ajoutent la notation des qualifications et la génération de propositions à mesure que la confiance augmente.


Agent de qualification principal : donner la priorité aux opportunités à plus forte valeur ajoutée

La qualité des leads entrants varie énormément. L'agent de qualification évalue chaque nouveau prospect par rapport à votre profil client idéal (ICP) dans les minutes qui suivent la soumission, afin que les commerciaux travaillent d'abord sur les meilleurs prospects.

Les facteurs de notation ICP sont définis par votre direction commerciale et codés dans la configuration de l'agent :

{
  "icpCriteria": {
    "companySize": {
      "weight": 0.20,
      "tiers": [
        { "range": [500, 5000], "score": 1.0 },
        { "range": [100, 500], "score": 0.8 },
        { "range": [5000, 999999], "score": 0.6 },
        { "range": [0, 100], "score": 0.3 }
      ]
    },
    "industry": {
      "weight": 0.25,
      "targetIndustries": ["manufacturing", "distribution", "retail"],
      "avoidIndustries": ["government", "nonprofit"]
    },
    "techStack": {
      "weight": 0.15,
      "positiveSignals": ["odoo", "sap", "quickbooks"],
      "negativeSignals": ["competitor-a", "competitor-b"]
    },
    "intent": {
      "weight": 0.25,
      "signals": ["pricing-page-visit", "demo-request", "free-trial-signup"]
    },
    "geographicFit": {
      "weight": 0.15,
      "targetRegions": ["north-america", "western-europe", "middle-east"]
    }
  }
}
export const QualifyLead = defineSkill({
  name: "qualify-lead",
  tools: ["crm", "clearbit", "intent-data"],
  async run({ input, tools }) {
    const lead = input.lead;

    // Enrich with firmographic data
    const firmographic = await tools.clearbit.enrich({ email: lead.email, domain: lead.companyDomain });

    // Get intent signals
    const intent = await tools.intentData.getSignals({
      domain: lead.companyDomain,
      lookbackDays: 30,
      topics: ["erp-software", "inventory-management", "accounting-software"],
    });

    // Score against ICP
    const scores = {
      companySize: scoreCompanySize(firmographic.employees, icp.companySize),
      industry: scoreIndustry(firmographic.industry, icp.industry),
      techStack: scoreTechStack(firmographic.tech, icp.techStack),
      intent: scoreIntent(intent, lead.formSource, icp.intent),
      geography: scoreGeography(firmographic.country, icp.geographicFit),
    };

    const weightedScore = Object.entries(scores).reduce((sum, [key, score]) => {
      return sum + score * icp.icpCriteria[key].weight;
    }, 0);

    const tier = weightedScore >= 0.75 ? "A" : weightedScore >= 0.55 ? "B" : weightedScore >= 0.35 ? "C" : "D";

    await tools.crm.updateLead(lead.id, {
      icpScore: weightedScore,
      icpTier: tier,
      enrichedData: firmographic,
      intentSignals: intent.topics,
    });

    // Route A and B leads to SDR immediately; C and D to nurture
    if (tier === "A" || tier === "B") {
      await tools.crm.assignToSdr(lead.id, { priority: tier === "A" ? "urgent" : "normal" });
    }

    return { leadId: lead.id, icpScore: weightedScore, tier, firmographic };
  },
});

Agent de recherche de prospects : l'intelligence avant chaque conversation

Un vendeur qui connaît les défis récents de son prospect, sa trajectoire de croissance, sa pile technologique, les décideurs clés et le contexte concurrentiel avant un appel est nettement plus performant qu'un vendeur qui se lance à l'aveugle. L'agent de recherche crée automatiquement ce package de renseignements.

Composantes de recherche :

  • Aperçu de l'entreprise : taille, secteur d'activité, fourchette de revenus, emplacement, modèle commercial, produits/services clés.
  • Actualités récentes : 90 derniers jours de communiqués de presse, d'annonces de financement, de changements de direction, de lancements de produits et de gains de clients.
  • Pile technologique : outils logiciels actuels identifiés à partir des offres d'emploi, des empreintes technologiques des sites Web et des données d'intention.
  • Contacts clés : décideurs et influenceurs avec leurs rôles, leur activité LinkedIn et leur engagement récent avec votre contenu.
  • Mots clés signalant la douleur : sujets qui apparaissent dans le contenu récent de l'entreprise, les offres d'emploi et les publications LinkedIn qui indiquent des défis pertinents.
  • Paysage concurrentiel : fournisseurs actuels que le prospect utilise (à partir de la pile technologique) et s'ils sont connus pour évaluer des alternatives (à partir de signaux d'intention).
export const ResearchProspect = defineSkill({
  name: "research-prospect",
  tools: ["web-search", "linkedin", "clearbit", "intent-data", "llm"],
  async run({ input, tools }) {
    const [companyInfo, recentNews, techStack, contacts, intentSignals] = await Promise.all([
      tools.clearbit.enrichCompany(input.domain),
      tools.webSearch.search(`${input.companyName} news site:businesswire.com OR site:prnewswire.com`, { limit: 5, dateRange: "past-90-days" }),
      tools.clearbit.getTech(input.domain),
      tools.linkedin.getKeyContacts(input.companyName, { titles: ["CTO", "CFO", "CEO", "Head of Operations", "IT Director"] }),
      tools.intentData.getSignals({ domain: input.domain, topics: input.relevantTopics }),
    ]);

    // Synthesize into a brief
    const brief = await tools.llm.generate({
      prompt: buildResearchBriefPrompt({ companyInfo, recentNews, techStack, contacts, intentSignals }),
      maxTokens: 800,
      temperature: 0.2,
    });

    return { brief, companyInfo, recentNews, techStack, contacts, intentSignals };
  },
});

Le brief de recherche est joint à l'opportunité CRM et accessible depuis l'application mobile du commercial avant un appel.


Gestion des séquences de sensibilisation : persistance sans gêne

Les séquences de sensibilisation multi-touch nécessitent une cohérence que les humains ont du mal à maintenir sur un grand nombre de prospects. L'agent de sensibilisation gère les séquences de manière fiable : envoyer le bon message au bon moment, s'arrêter lorsqu'un prospect s'engage, et reprendre ou escalader en fonction des modèles de réponse.

export const ManageOutreachSequence = defineSkill({
  name: "manage-outreach-sequence",
  tools: ["email", "crm", "calendar"],
  async run({ input, tools }) {
    const sequence = getSequenceTemplate(input.sequenceType); // e.g., "cold-outbound-saas"
    const step = sequence.steps[input.currentStep];

    // Check if prospect has responded or booked a meeting
    const hasResponded = await tools.email.hasReplied(input.threadId);
    const hasMeetingBooked = await tools.crm.hasMeetingScheduled(input.prospectId);

    if (hasResponded || hasMeetingBooked) {
      await tools.crm.updateSequenceStatus(input.prospectId, "PAUSED_ENGAGED");
      return { action: "SEQUENCE_PAUSED", reason: hasResponded ? "replied" : "meeting-booked" };
    }

    // Check if we are at a dead-end step
    if (input.currentStep >= sequence.steps.length) {
      await tools.crm.updateSequenceStatus(input.prospectId, "SEQUENCE_COMPLETE_NO_RESPONSE");
      return { action: "SEQUENCE_COMPLETE" };
    }

    // Execute step
    if (step.channel === "email") {
      const draft = personalizeTemplate(step.template, {
        prospect: input.prospect,
        company: input.company,
        researchBrief: input.researchBrief,
      });
      await tools.email.send({ to: input.prospect.email, subject: step.subject, body: draft, threadId: input.threadId });
    } else if (step.channel === "phone-reminder") {
      await tools.crm.createCallTask({
        prospectId: input.prospectId,
        assignedTo: input.ownerId,
        dueDate: addBusinessDays(new Date(), step.delayDays),
        notes: step.callGuide,
      });
    }

    // Schedule next step
    await tools.crm.scheduleNextSequenceStep(input.prospectId, {
      step: input.currentStep + 1,
      executeAt: addBusinessDays(new Date(), sequence.steps[input.currentStep + 1]?.delayDays ?? 3),
    });

    return { action: "STEP_EXECUTED", step: input.currentStep, channel: step.channel };
  },
});

Les performances de la séquence sont suivies par étape : taux d'ouverture, taux de réponse et taux de réponse positive pour chaque e-mail de la séquence. Les étapes peu performantes sont signalées pour la révision du contenu.


Génération de propositions : première ébauche en cinq minutes

Les propositions prennent des heures à rédiger lorsqu'elles sont rédigées à partir de zéro. L'agent de proposition génère une première ébauche à partir des notes d'appel, des exigences extraites du CRM et de votre modèle de proposition standard en quelques minutes.

Le processus de génération :

  1. Extrayez les champs personnalisés de l'opportunité du CRM (points sensibles, exigences, budget, calendrier, parties prenantes).
  2. Récupérez les notes d'appel et les résumés des réunions pour l'opportunité.
  3. Extrayez les exigences spécifiques et les défis cités des notes à l'aide du LLM.
  4. Associez les exigences à vos offres de produits/services et à vos tarifs.
  5. Générez des sections de proposition : résumé, énoncé du problème, solution proposée, prix, calendrier, prochaines étapes.
  6. Formatez le résultat sous forme de document Word ou Google Doc correspondant à votre modèle de proposition.
export const GenerateProposalDraft = defineSkill({
  name: "generate-proposal-draft",
  tools: ["crm", "document-generator", "llm"],
  async run({ input, tools }) {
    const [opportunity, callNotes, pricing] = await Promise.all([
      tools.crm.getOpportunity(input.opportunityId),
      tools.crm.getCallNotes(input.opportunityId),
      tools.crm.getPricingConfiguration(input.products),
    ]);

    const requirements = await tools.llm.extract({
      content: callNotes.map(n => n.content).join("\n\n"),
      schema: {
        painPoints: z.array(z.string()),
        specificRequirements: z.array(z.string()),
        timeline: z.string().optional(),
        budget: z.string().optional(),
        decisionCriteria: z.array(z.string()),
      },
    });

    const proposal = await tools.llm.generate({
      prompt: buildProposalPrompt(opportunity, requirements, pricing),
      maxTokens: 3000,
      temperature: 0.3,
    });

    const document = await tools.documentGenerator.createFromTemplate({
      template: "proposal-template-v3",
      content: proposal,
      metadata: { opportunity, generatedAt: new Date().toISOString() },
    });

    await tools.crm.attachDocument(input.opportunityId, document);

    return { documentId: document.id, documentUrl: document.url };
  },
});

Intelligence des prévisions : précision statistique du pipeline

Les directeurs commerciaux s'appuient depuis longtemps sur des analyses instinctives du pipeline, demandant aux commerciaux de classer les transactions comme « engagement », « meilleur des cas » ou « à la hausse ». L'agent de prévision d'OpenClaw remplace ce processus subjectif par une modélisation statistique.

Chaque opportunité reçoit une probabilité de victoire prévue basée sur :

  • Taux de conversion étape par étape pour votre entreprise spécifique (calculés à partir des données historiques d'opportunité dans le CRM)
  • Jours dans l'étape actuelle par rapport à la moyenne historique pour des transactions similaires
  • Signaux d'engagement (activité de courrier électronique, fréquence des réunions, étendue des parties prenantes)
  • Taille de la transaction par rapport à la moyenne (les grosses transactions se clôturent à des taux inférieurs)
  • Présence compétitive (les offres compétitives ont des taux de réussite inférieurs)

Le modèle produit une prévision pondérée par probabilité par semaine, avec une analyse de scénarios (conservateur, de base, optimiste) pour soutenir la planification.


Alertes de risque : détecter les transactions bloquées avant la fin du trimestre

L'agent d'alerte aux risques surveille quotidiennement le pipeline et signale les transactions montrant des signes avant-coureurs avant qu'elles ne deviennent des surprises manquées au trimestre.

Signaux d'avertissement surveillés :

  • Aucune activité enregistrée pendant plus de 14 jours pour une transaction en phase active
  • La dernière réunion programmée a été manquée sans être reprogrammée
  • Le calendrier de décision a glissé sans explication
  • Le contact du champion est devenu sombre (aucune activité de courrier électronique) alors qu'une autre partie prenante du même compte est active
  • Mention compétitive dans les notes d'appel récentes
  • La transaction est au même stade depuis plus de deux fois la durée moyenne historique
export const MonitorDealRisk = defineSkill({
  name: "monitor-deal-risk",
  tools: ["crm"],
  async run({ input, tools }) {
    const openDeals = await tools.crm.getOpportunities({
      stage: ["qualification", "demo", "proposal", "negotiation"],
      closeDateBefore: addDays(new Date(), 90),
    });

    const atRisk = [];
    for (const deal of openDeals) {
      const risks = [];
      const daysSinceActivity = daysSince(deal.lastActivityDate);

      if (daysSinceActivity > 14) risks.push({ type: "NO_ACTIVITY", days: daysSinceActivity });
      if (deal.daysInStage > deal.avgDaysInStage * 2) risks.push({ type: "STALLED", daysInStage: deal.daysInStage });
      if (deal.competitorMentioned) risks.push({ type: "COMPETITIVE_THREAT" });

      if (risks.length > 0) {
        atRisk.push({ dealId: deal.id, dealName: deal.name, ownerId: deal.ownerId, risks, amount: deal.amount });
      }
    }

    return { atRisk, checkedCount: openDeals.length };
  },
});

Les alertes de risque sont envoyées à la fois au propriétaire de la transaction (invite à agir) et au responsable commercial (visibilité sur l'état du pipeline). L'alerte comprend les signaux d'avertissement spécifiques, pas seulement un drapeau.


Questions fréquemment posées

Comment l'agent de qualification gère-t-il les secteurs et les cas d'utilisation en dehors du PIC défini ?

La configuration ICP comprend une catégorie « autre » qui reçoit un score de base. Les transactions en dehors de l'ICP défini ne sont pas automatiquement rejetées : elles reçoivent un score de priorité inférieur, ce qui signifie qu'elles entrent dans un chemin de routage différent (cadence de suivi plus longue, SDR plutôt que AE-direct). Les responsables commerciaux peuvent examiner les offres dont le score est inférieur au seuil et mettre à niveau manuellement les offres éligibles s'ils constatent une adéquation manquée par le modèle.

L'agent de séquence de sensibilisation peut-il gérer les leads entrants chauds différemment des leads sortants froids ?

Oui. Le modèle de séquence est sélectionné en fonction de la source du prospect. Les prospects entrants issus des demandes de démonstration reçoivent une séquence entrante chaleureuse qui commence par un lien de réservation direct plutôt que par un contenu éducatif. Les prospects prospectés sortants reçoivent une séquence froide qui mène avec une reconnaissance de la valeur et de la douleur. Les prospects de téléchargement de contenu reçoivent une séquence de développement alignée sur le sujet du contenu. La sélection de séquence est automatique en fonction du champ source UTM ou origine CRM du prospect.

Comment fonctionne l'hygiène CRM pour les commerciaux qui prennent des notes manuscrites pendant les appels ?

Le CRM Hygiene Agent s'intègre à votre outil de transcription de réunions (Gong, Chorus, Fireflies, Otter). Les transcriptions des réunions sont traitées automatiquement après chaque appel : l'agent extrait les actions, les prochaines étapes, les mentions des parties prenantes, les signaux budgétaires et les informations sur le calendrier, et met à jour les champs CRM pertinents. Pour les commerciaux qui préfèrent leurs propres notes, ils peuvent coller des notes dans un champ CRM que l'agent traite selon un planning.

De quelles données le modèle de prévision a-t-il besoin pour produire des prévisions précises ?

Le modèle de prévision nécessite au moins 12 mois de données sur les opportunités clôturées (à la fois gagnées et perdues) avec l'historique des étapes, la taille de la transaction, le secteur et les informations sur les commerciaux. Des données plus riches (nombre d’activités d’appels, activité de courrier électronique, engagement des parties prenantes) produisent des modèles plus précis. Pour les entreprises ayant moins de 12 mois d'historique CRM ou moins de 200 transactions conclues, le modèle utilise des références du secteur comme référence et passe aux données spécifiques à l'entreprise au fur et à mesure qu'elles s'accumulent.

L'agent de proposition peut-il générer des propositions dans différents formats pour différents produits ?

Oui. Plusieurs modèles de proposition peuvent être configurés et le modèle est sélectionné en fonction des produits inclus dans l'opportunité et du segment client. Une implémentation d'entreprise complexe obtient un modèle différent d'une licence d'abonnement standard. Les modèles sont définis au format Word ou Google Slides et maintenus par votre équipe marketing ou commerciale. L'agent remplit les sections à contenu variable tout en préservant la mise en forme et la marque du modèle.


Prochaines étapes

L'automatisation des ventes bien réalisée amplifie les vendeurs plutôt que de les remplacer. En gérant la recherche, le séquençage, la maintenance CRM et la rédaction des propositions, les agents OpenClaw redonnent à votre équipe commerciale le temps dont elle a besoin pour avoir des conversations plus significatives et conclure davantage de transactions.

Les services OpenClaw d'ECOSIRE incluent la mise en œuvre complète de l'automatisation des ventes, depuis la notation de qualification des leads calibrée en fonction de votre ICP jusqu'à la prévision du pipeline intégrée à votre CRM. Notre équipe a construit des systèmes d'automatisation des ventes pour les entreprises SaaS B2B, les éditeurs de logiciels d'entreprise et les entreprises de services ayant des cycles de vente complexes et longs.

Contactez ECOSIRE pour discuter de vos besoins en automatisation des ventes et voir comment OpenClaw peut accélérer la vitesse de votre pipeline.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp