Un commercial B2B passe 8 à 12 heures par semaine en réunion. Temps moyen pour rédiger un compte-rendu exploitable : 20 minutes. Résultat : la moitié des CR ne sont jamais écrits, les actions se perdent, et le CRM reste vide. Six mois plus tard, personne ne sait ce qui a été dit au client — y compris le commercial lui-même.

Ce guide détaille un système complet pour enregistrer une réunion, la transcrire, en extraire un résumé structuré avec les décisions et les actions, et mettre à jour le CRM automatiquement. Avec les outils, les prompts, et le code.

Tout est faisable en interne.


Ce que fait le système

Cinq étapes, de la réunion au CRM :

  1. Enregistrement — La réunion est enregistrée (Zoom, Teams, Google Meet, ou téléphone)
  2. Transcription — L'audio est converti en texte avec identification des interlocuteurs
  3. Extraction IA — Claude ou GPT-4 produit un CR structuré : résumé, décisions, actions, signaux commerciaux
  4. Mise à jour CRM — Le système crée une note dans la fiche contact/deal, génère les tâches, met à jour le statut du deal
  5. Distribution — Chaque participant reçoit le CR par email ou Slack, avec ses actions surlignées

Temps humain par réunion : 30 secondes (relecture rapide du CR). Contre 20 minutes aujourd'hui — quand c'est fait.


Les outils

Brique Option mainstream Option open source Coût
Enregistrement Zoom / Teams / Meet (natif) Inclus
Transcription Deepgram API ou Whisper (OpenAI) Whisper auto-hébergé 0,30-0,80 €/h
Analyse IA Claude API (Anthropic) ou GPT-4 (OpenAI) Idem ~0,05 €/réunion
Orchestration Make (ex-Integromat) ou Zapier n8n auto-hébergé 0-30 €/mois
CRM HubSpot (gratuit ou Starter) ou Pipedrive Twenty CRM (open source) 0-50 €/mois
Notifications Slack, Teams ou Gmail Mattermost, email SMTP Gratuit
Stockage Google Drive ou OneDrive Nextcloud 0-10 €/mois
Total 30-90 €/mois

La stack mainstream (Make + Deepgram + HubSpot + Slack) est plus rapide à mettre en place. La stack open source (n8n + Whisper auto-hébergé + Twenty) est plus flexible et vous appartient. Les deux font le même job.

Le reste de ce guide est agnostique : les concepts et le code s'adaptent aux deux approches.


Étape 1 — Récupérer l'audio

Réunions visio (Zoom, Teams, Google Meet)

Les trois plateformes permettent l'enregistrement natif. Le workflow commence quand le fichier audio atterrit dans un dossier.

Zoom → Activez « Cloud Recording » dans les paramètres admin. Quand l'enregistrement est prêt, un webhook recording.completed envoie l'URL de téléchargement. Le workflow n8n/Make intercepte le webhook, télécharge le MP4, extrait la piste audio.

Teams → Les enregistrements sont stockés dans OneDrive (ou SharePoint). Configurez un trigger Make/n8n sur « Nouveau fichier dans le dossier Recordings ».

Google Meet → Les enregistrements (disponibles avec Workspace Business Standard+) arrivent dans le Drive de l'organisateur. Même trigger : « Nouveau fichier dans le dossier Meet Recordings ».

Appels téléphoniques

Si votre équipe commerciale travaille au téléphone, il faut un outil de téléphonie avec enregistrement et API :

Outil Enregistrement API/Webhook Coût
Aircall Oui Webhook call.ended À partir de 30 €/user/mois
Ringover Oui Webhook + API REST À partir de 21 €/user/mois
Twilio Oui Webhook natif Pay-as-you-go (~0,02 €/min)

Option manuelle (plan B)

Pas de webhook ? Le commercial dépose l'enregistrement dans un dossier Drive dédié. Le workflow surveille le dossier et se déclenche à chaque nouveau fichier. C'est 10 secondes de plus par réunion — largement acceptable.

Point légal : en France, l'enregistrement d'une conversation nécessite le consentement de tous les participants (article 226-1 du Code pénal). Pour les réunions internes, une charte suffit. Pour les réunions avec des externes, prévenez en début de réunion et recueillez un accord (verbal ou écrit). Intégrez un message automatique dans vos invitations : « Cette réunion sera enregistrée à des fins de compte-rendu. En cas d'objection, merci de le signaler en début de séance. »


Étape 2 — La transcription

Le choix du moteur

Deux options sérieuses, selon votre besoin :

Deepgram — le choix recommandé pour la plupart des cas. API rapide (~30% du temps réel), bonne qualité en français, diarisation native (identification des interlocuteurs). Tarif : 0,0043 $/min en Nova-2 (soit ~0,30 €/h).

Whisper (OpenAI) — excellente qualité de transcription en français, surtout avec le modèle whisper-1. Pas de diarisation native (il faut combiner avec un autre outil). Tarif : 0,006 $/min (soit ~0,40 €/h).

Pour du CR de réunion commerciale, la diarisation est importante — vous voulez savoir qui a dit quoi. Deepgram est plus adapté. Pour des réunions internes courtes (<30 min, 2-3 personnes), Whisper suffit.

L'appel API — Deepgram (recommandé)

POST https://api.deepgram.com/v1/listen

Headers : Authorization: Token VOTRE_CLE_API

Paramètres :
  model=nova-2
  language=fr
  punctuate=true
  diarize=true
  smart_format=true
  utterances=true

Body : fichier audio (MP3, WAV, MP4, FLAC, OGG — jusqu'à 2 Go)

La réponse contient un tableau utterances avec, pour chaque segment : le texte, le speaker (speaker_0, speaker_1…), et les timestamps. C'est cette sortie que l'IA va analyser.

L'appel API — Whisper (alternative)

POST https://api.openai.com/v1/audio/transcriptions

Headers : Authorization: Bearer VOTRE_CLE_API

Body (multipart/form-data) :
  file: fichier audio (max 25 Mo — découpez si nécessaire)
  model: whisper-1
  language: fr
  response_format: verbose_json
  timestamp_granularities: segment

Whisper retourne un JSON avec les segments et timestamps, mais sans identification des interlocuteurs. Pour ajouter la diarisation, combinez avec pyannote-audio (open source) ou traitez sans — l'IA peut souvent deviner qui parle d'après le contexte.

Post-traitement de la transcription

Avant d'envoyer à l'IA, nettoyez la transcription dans un node code :

// n8n — node Code après transcription Deepgram
const utterances = $input.first().json.results.utterances;

const transcript = utterances.map(u => {
  const minutes = Math.floor(u.start / 60);
  const seconds = Math.floor(u.start % 60).toString().padStart(2, '0');
  return `[${minutes}:${seconds}] Intervenant ${u.speaker}: ${u.transcript}`;
}).join('\n');

// Métadonnées utiles pour l'IA
const duration = Math.round(utterances[utterances.length - 1].end / 60);
const speakers = [...new Set(utterances.map(u => u.speaker))].length;

return [{
  json: {
    transcript,
    duration_minutes: duration,
    nombre_intervenants: speakers
  }
}];

Résultat type :

[0:00] Intervenant 0: Bonjour à tous, on se retrouve pour le point projet Nexus.
[0:12] Intervenant 1: Bonjour. J'ai avancé sur la partie intégration API...
[0:45] Intervenant 2: De mon côté, le devis pour le module de facturation est parti hier.

Étape 3 — L'extraction IA

Le prompt d'extraction — version de base

C'est le cœur du système. Voici un prompt de départ, volontairement générique. On verra ensuite pourquoi et comment le calibrer.

Tu es un assistant spécialisé dans la rédaction de comptes-rendus
de réunions professionnelles B2B.

À partir de la transcription ci-dessous, produis un JSON structuré.

RÈGLES :
- Extrais UNIQUEMENT les informations réellement mentionnées.
- Si une information n'est pas discutée → null.
- Formule les actions avec un verbe d'action + responsable + deadline.
- Distingue clairement les décisions (actées) des discussions (ouvertes).
- Identifie les signaux commerciaux utiles pour le CRM.

Structure JSON attendue :

{
  "meta": {
    "date": "2025-01-15",
    "duree_minutes": 45,
    "participants": [
      {
        "speaker_id": 0,
        "nom_probable": "Marie Dupont",
        "role": "Directrice commerciale",
        "entreprise": "Nous"
      }
    ]
  },
  "resume_executif": "3-5 phrases résumant les points clés de la réunion",
  "points_discutes": [
    {
      "sujet": "Intégration API facturation",
      "resume": "Ce qui a été dit en 2-3 phrases",
      "statut": "En cours / Terminé / Bloqué / À lancer"
    }
  ],
  "decisions": [
    {
      "decision": "Passer sur l'offre Premium pour le client Acme",
      "contexte": "Pourquoi cette décision a été prise",
      "decideur": "Marie Dupont"
    }
  ],
  "actions": [
    {
      "action": "Envoyer le devis révisé au client Acme",
      "responsable": "Jean Martin",
      "deadline": "2025-01-20",
      "priorite": "haute / moyenne / basse"
    }
  ],
  "prochaine_reunion": {
    "date_prevue": "2025-01-22",
    "objectif": "Valider le retour client sur le devis"
  },
  "signaux_crm": {
    "sentiment_client": "positif / neutre / négatif / non applicable",
    "avancement_deal": "Le client a validé le budget, attend le devis final",
    "risques": ["Concurrent identifié : Société X", "Deadline interne serrée"],
    "opportunites": ["Upsell module reporting mentionné par le client"],
    "etape_suggeree": "Devis envoyé"
  }
}

Ce prompt fonctionne. Sur une réunion commerciale standard, il extrait correctement 80 à 90% des informations dès la première tentative. Mais « 80 à 90% » n'est pas suffisant quand c'est votre CRM et vos actions commerciales qui en dépendent.

Pourquoi le prompt de base ne suffit pas

Voici ce qui se passe quand vous testez ce prompt sur vos vraies réunions :

Problème 1 — L'identification des participants. La transcription donne « Intervenant 0 », « Intervenant 1 ». L'IA fait des hypothèses basées sur le contenu (celui qui parle de « nos clients » est probablement côté vendeur). C'est souvent juste, pas toujours. Si quelqu'un dit « Bonjour, ici Marie Dupont de Unitel », ça aide. Sinon, l'IA devine — et se trompe une fois sur cinq.

Problème 2 — Les actions implicites. « Il faudrait qu'on revienne vers eux la semaine prochaine » — c'est une action. Mais qui est « on » ? Quelle est la deadline exacte ? L'IA va extraire l'intention mais pas toujours l'assigner correctement.

Problème 3 — Le jargon interne. « On passe en P2 sur le compte Nexus » — P2 est-ce une priorité ? Un niveau de support ? Une phase projet ? Sans contexte, l'IA va inventer une interprétation.

Problème 4 — Les signaux commerciaux. Quand le client dit « on va en parler en CODIR la semaine prochaine », c'est un signal fort. Quand il dit « envoyez-moi la doc, je regarde », c'est un signal faible. Le prompt générique n'a pas les clés pour pondérer ces signaux dans votre cycle de vente.

Le calibrage : comment passer de 85% à 98%

Même processus itératif que pour tout prompt métier. Voici comment le mener :

Itération 1 — Contextualisation. Ajoutez un bloc de contexte au début du prompt :

CONTEXTE :
Tu analyses des réunions d'une entreprise de [VOTRE SECTEUR].
Nos interlocuteurs typiques : DSI, RSSI, Directeurs infra,
Responsables achats IT.
Notre cycle de vente dure 3 à 6 mois.

Vocabulaire interne à connaître :
- "Passer en Go" = décision de répondre à un appel d'offres
- "P0/P1/P2" = niveaux de priorité (P0 = critique)
- "MRR" = revenu mensuel récurrent
- "Quali" = appel de qualification commerciale
- [AJOUTEZ VOS TERMES]

Participants récurrents (pour aider l'identification) :
- Marie Dupont — Directrice commerciale (voix de femme, dit souvent "nous" pour l'entreprise)
- Jean Martin — Ingénieur avant-vente (parle technique, mentionne les specs)
- [VOS COLLABORATEURS RÉGULIERS]

Itération 2 — Règles d'interprétation. Après avoir testé sur 10-15 réunions réelles, vous identifiez les cas où l'IA se trompe. Ajoutez des règles :

RÈGLES D'INTERPRÉTATION :
- Si quelqu'un dit "je reviens vers vous" sans date, mets deadline
  = date de la réunion + 7 jours et priorité "moyenne".
- Si le client mentionne un concurrent par son nom, c'est toujours
  un risque à remonter dans signaux_crm.
- "On va en parler en interne" côté client = signal positif modéré.
  "Je dois valider avec ma direction" = signal neutre (normal dans
  le cycle). "On a d'autres priorités" = signal négatif.
- Les actions assignées à "on" ou "nous" → assigne au premier
  participant côté "Nous" (l'organisateur de la réunion par défaut).
- Une réunion sans aucune action ni prochaine étape → ajoute une
  alerte : "Aucune action définie — risque de stagnation du deal".

Itération 3 — Mapping CRM. Adaptez les signaux à votre pipeline :

MAPPING PIPELINE CRM :
Traduis les signaux en étapes de pipeline :
- Le client a accepté un RDV de démo → "Démo planifiée"
- Le client demande un devis / une proposition → "Proposition en cours"
- Le client dit qu'il va en parler en CODIR / valider le budget
  → "Négociation"
- Le client demande un POC / test → "POC en cours"
- Le client parle planning de déploiement → "Engagement verbal"
- Le client dit qu'il n'est pas intéressé / reporte sine die
  → "Perdu" ou "En veille"

Si aucun signal clair → ne change pas l'étape (null).

Itération 4 — Gestion des cas limites.

CAS PARTICULIERS :
- Réunion avec plus de 5 participants : concentre le CR sur les
  décideurs (ceux qui valident, tranchent, ou engagent un budget).
  Les interventions purement informatives → résumé en une ligne.
- Réunion technique (pas de dimension commerciale) : la section
  signaux_crm peut être vide. Ne force pas des signaux qui
  n'existent pas.
- Réunion avortée (<5 min ou off-topic) : résumé en une phrase,
  pas de fiche détaillée.
- Si la transcription est de mauvaise qualité (mots manquants,
  phrases incohérentes) : signale-le dans le résumé et ajoute
  une alerte "qualité_transcription: dégradée".

Le résultat après calibrage

Après ces 4 itérations (comptez 1 à 2 semaines de tests sur vos réunions réelles), le prompt passe de ~85% à ~98% de fiabilité sur l'extraction. Les actions sont correctement assignées, les signaux CRM sont pertinents, et le CR est utilisable sans retouche dans 9 cas sur 10.

L'appel API

Anthropic (Claude) — recommandé pour les réunions longues (200K tokens de contexte) :

POST https://api.anthropic.com/v1/messages

Headers : x-api-key, anthropic-version: 2023-06-01
Body :
{
  "model": "claude-sonnet-4-20250514",
  "max_tokens": 4096,
  "temperature": 0,
  "system": "VOTRE PROMPT CALIBRÉ",
  "messages": [{
    "role": "user",
    "content": "Réunion du {{ date }}, durée {{ duree }} min,
      {{ nb_intervenants }} participants.\n\nTranscription :\n\n{{ transcript }}"
  }]
}

OpenAI (GPT-4 Turbo) : même logique, endpoint /v1/chat/completions, avec response_format: { type: "json_object" }.

Coût moyen : 0,03 à 0,08 € par réunion d'une heure (selon le modèle et la longueur).


Étape 4 — La mise à jour CRM

Le JSON produit par l'IA est structuré. Le workflow peut maintenant écrire dans le CRM sans intervention humaine.

HubSpot — créer la note de réunion

// n8n — node HTTP Request vers HubSpot
// Crée un engagement "meeting" associé au contact et au deal

const cr = $('Node_Analyse_IA').first().json;
const contactId = $('Node_Lookup_Contact').first().json.id;
const dealId = $('Node_Lookup_Deal').first().json.id;

// Formater le CR en texte lisible pour la note CRM
const noteBody = `
<h3>Résumé</h3>
<p>${cr.resume_executif}</p>

<h3>Décisions</h3>
<ul>${cr.decisions.map(d =>
  `<li><strong>${d.decision}</strong> — ${d.contexte}</li>`
).join('')}</ul>

<h3>Actions</h3>
<ul>${cr.actions.map(a =>
  `<li>${a.action} → <strong>${a.responsable}</strong> (${a.deadline})</li>`
).join('')}</ul>

<h3>Signaux commerciaux</h3>
<p>Sentiment : ${cr.signaux_crm.sentiment_client}</p>
<p>${cr.signaux_crm.avancement_deal}</p>
`;

// Créer l'engagement meeting
const engagement = await fetch('https://api.hubapi.com/engagements/v1/engagements', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${hubspotToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    engagement: {
      active: true,
      type: 'MEETING',
      timestamp: Date.now()
    },
    associations: {
      contactIds: [contactId],
      dealIds: dealId ? [dealId] : []
    },
    metadata: {
      body: noteBody,
      title: `CR — ${cr.meta.date} — ${cr.points_discutes[0]?.sujet || 'Réunion'}`,
      startTime: Date.now(),
      endTime: Date.now() + cr.meta.duree_minutes * 60000
    }
  })
});

HubSpot — créer les tâches

// Créer une tâche par action extraite
for (const action of cr.actions) {
  // Trouver le owner HubSpot correspondant au responsable
  const owner = owners.find(o =>
    o.firstName?.toLowerCase().includes(action.responsable.split(' ')[0].toLowerCase())
  );

  await fetch('https://api.hubapi.com/engagements/v1/engagements', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${hubspotToken}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      engagement: {
        active: true,
        type: 'TASK',
        timestamp: Date.now(),
        ownerId: owner?.ownerId || defaultOwnerId
      },
      associations: {
        contactIds: [contactId],
        dealIds: dealId ? [dealId] : []
      },
      metadata: {
        body: action.action,
        subject: action.action.substring(0, 80),
        status: 'NOT_STARTED',
        forObjectType: 'DEAL',
        priority: action.priorite === 'haute' ? 'HIGH' : 'MEDIUM'
      }
    })
  });
}

HubSpot — mettre à jour le deal

// Mettre à jour l'étape du deal si l'IA a détecté un signal
if (cr.signaux_crm.etape_suggeree && dealId) {
  // Mapping étapes texte → ID pipeline HubSpot
  const stageMap = {
    'Démo planifiée': 'appointment_scheduled',
    'Proposition en cours': 'presentation_scheduled',
    'Négociation': 'decision_maker_bought_in',
    'Engagement verbal': 'contract_sent',
    'Perdu': 'closed_lost',
    'En veille': 'closed_lost'
    // ADAPTEZ à votre pipeline
  };

  const newStage = stageMap[cr.signaux_crm.etape_suggeree];

  if (newStage) {
    await fetch(`https://api.hubapi.com/crm/v3/objects/deals/${dealId}`, {
      method: 'PATCH',
      headers: {
        'Authorization': `Bearer ${hubspotToken}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        properties: {
          dealstage: newStage,
          notes_last_updated: new Date().toISOString()
        }
      })
    });
  }
}

Pipedrive — même logique

// Créer une note sur le deal Pipedrive
await fetch(`https://api.pipedrive.com/v1/notes?api_token=${pipedriveToken}`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    content: noteBody,
    deal_id: dealId,
    pinned_to_deal_flag: 1
  })
});

// Créer une activité (tâche) par action
for (const action of cr.actions) {
  await fetch(`https://api.pipedrive.com/v1/activities?api_token=${pipedriveToken}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      subject: action.action.substring(0, 80),
      type: 'task',
      deal_id: dealId,
      due_date: action.deadline,
      note: action.action
    })
  });
}

Garde-fou important : ne laissez pas le système changer l'étape du deal sans validation humaine au début. Pendant la phase de calibrage (4-6 premières semaines), envoyez l'étape suggérée dans la notification Slack/email, et laissez le commercial valider en un clic. Activez la mise à jour automatique quand le taux de suggestions correctes dépasse 90%.


Étape 5 — Distribution du CR

Le message Slack / email

Chaque participant reçoit un résumé formaté avec ses propres actions mises en avant :

// Formater le message par participant
function formatCR(cr, destinataire) {
  const mesActions = cr.actions.filter(a =>
    a.responsable.toLowerCase().includes(destinataire.toLowerCase())
  );

  let msg = `📋 *CR — ${cr.meta.date}* (${cr.meta.duree_minutes} min)\n\n`;
  msg += `*Résumé :* ${cr.resume_executif}\n\n`;

  if (cr.decisions.length > 0) {
    msg += `*Décisions :*\n`;
    cr.decisions.forEach(d => {
      msg += `✅ ${d.decision}\n`;
    });
    msg += '\n';
  }

  if (mesActions.length > 0) {
    msg += `⚡ *Tes actions :*\n`;
    mesActions.forEach(a => {
      msg += `→ ${a.action} (deadline : ${a.deadline})\n`;
    });
    msg += '\n';
  }

  if (cr.prochaine_reunion?.date_prevue) {
    msg += `📅 Prochaine réunion : ${cr.prochaine_reunion.date_prevue}`;
    msg += ` — ${cr.prochaine_reunion.objectif}\n`;
  }

  return msg;
}

Workflow complet (résumé n8n)

[Trigger : Webhook Zoom / Nouveau fichier Drive]
    ↓
[Télécharger l'audio]
    ↓
[Deepgram : Transcription + Diarisation]
    ↓
[Code : Nettoyer la transcription]
    ↓
[Lookup CRM : Identifier le contact / deal associé]
    ↓
[Claude API : Extraction CR structuré]
    ↓
[Code : Parser le JSON]
    ↓
┌──────────────────┬──────────────────┬──────────────────┐
│ HubSpot :        │ HubSpot :        │ Slack / Email :  │
│ Créer note       │ Créer tâches     │ Envoyer CR       │
│ + Updater deal   │                  │ aux participants │
└──────────────────┴──────────────────┴──────────────────┘

Ce que ça donne en vrai

Avant Après
CR rédigés par semaine 3 sur 10 réunions (quand on a le temps) 10 sur 10 (100% automatique)
Temps de rédaction 20 min par CR 30 secondes (relecture)
Actions oubliées ~40% jamais tracées 0% — tout est dans le CRM
CRM à jour Notes vagues, 2 semaines de retard Note complète dans l'heure
Coût Temps salarié (~15h/mois pour 10 réunions/sem) 30-90 €/mois

Un commercial qui gagne 2h par semaine sur la rédaction de CR, c'est 2h de plus au téléphone ou en rendez-vous. Sur une équipe de 5 commerciaux, c'est 40 heures/mois redistribuées sur la vente.


Les limites

La qualité de la transcription dépend de l'audio. Micro-casque en visio : excellent. Speakerphone dans une salle de réunion : passable. Réunion en extérieur au téléphone : dégradé. Investissez dans un bon micro — c'est le maillon le plus simple et le plus rentable de la chaîne.

La diarisation n'est pas parfaite. Sur 2-3 interlocuteurs avec des voix distinctes, le taux de bonne attribution dépasse 90%. À 6+ participants qui se coupent la parole, ça descend à 70-80%. Les CR restent lisibles — l'attribution peut nécessiter une correction manuelle dans ces cas.

L'identification des participants est probabiliste. L'IA infère les noms d'après le contenu. Fournissez la liste des participants dans le prompt (depuis l'invitation calendrier) pour améliorer la précision.

Le prompt n'est pas plug-and-play. Même constat que pour tout système IA : le prompt de base fonctionne, le prompt calibré sur votre métier et votre cycle de vente fait la différence. Comptez 1 à 2 semaines d'itérations.

La mise à jour automatique du deal stage est sensible. Ne l'activez pas avant d'avoir validé manuellement sur 20-30 réunions. Un deal qui recule d'étape à cause d'un signal mal interprété, c'est un commercial mécontent — à juste titre.

Maintenance. Mise à jour des outils, suivi des logs, ajustement du prompt quand de nouveaux cas apparaissent. Prévoir 1-2h/mois.


Troubleshooting

Problème Solution
Transcription très mauvaise Vérifiez la qualité audio — micro-casque > speakerphone. Testez un autre moteur (Deepgram vs Whisper)
Mauvaise attribution des speakers Envoyez la liste des participants dans le prompt. Vérifiez que la diarisation est activée côté transcription
JSON invalide de l'IA Réduisez la transcription (supprimez les passages off-topic), temperature à 0
Actions mal assignées Ajoutez des règles d'interprétation pour « on », « nous », « il faudrait » dans le prompt
Signaux CRM incohérents Affinez le mapping pipeline dans le prompt. Ajoutez des exemples positifs/négatifs
CRM non mis à jour Vérifiez les tokens API et les permissions. Loggez les réponses API pour debug
Tâches en double dans le CRM Ajoutez un dédoublonnage par titre + date dans le workflow
Webhook Zoom non reçu Vérifiez la configuration dans Zoom Marketplace et les logs n8n

Le budget

Poste Coût
Transcription Deepgram (~20 réunions/mois, 45 min moyenne) 5-10 €/mois
API IA (~20 analyses/mois) 1-2 €/mois
Orchestration (Make/Zapier ou n8n) 0-30 €/mois
CRM (HubSpot gratuit ou Starter) 0-50 €/mois
Total 30-90 €/mois

Le poste le plus cher, c'est le CRM. Si vous avez déjà HubSpot ou Pipedrive, le coût marginal du système est de 6 à 40 €/mois. Le ROI est atteint dès le premier mois.


Tout est là

Ce guide contient l'architecture, les appels API (transcription, IA, CRM), le prompt (avec la méthode de calibrage), le code d'intégration HubSpot et Pipedrive, et le troubleshooting. Si vous avez quelqu'un en interne qui maîtrise les outils d'automatisation — lancez-vous.

Le point clé, c'est le combo transcription + prompt. La transcription conditionne la qualité des données d'entrée. Le prompt conditionne la qualité de l'extraction. Si l'un des deux est faible, le système entier devient un générateur de bruit dans votre CRM — exactement ce que vous vouliez éviter.

Si vous préférez gagner du temps : on branche le système sur vos 5 prochaines réunions, gratuitement. On calibre la transcription et le prompt sur votre contexte, on vous envoie les CR structurés et les mises à jour CRM simulées. Vous comparez avec vos notes réelles. Si c'est mieux — on déploie. Si ça ne l'est pas, vous n'avez rien dépensé.

Demander le test gratuit


Marketing Robot — systèmes d'automatisation pour PME. Des process, des outils, des résultats mesurables.