Automatización con IA

Transcripción y Resumen de Llamadas

Transcribe llamadas automáticamente y extrae action items con GPT-4

Transcripción y Resumen de Llamadas

El problema

Una llamada de ventas de 45 minutos genera información crítica: necesidades del cliente, objeciones mencionadas, acuerdos verbales, próximos pasos comprometidos. Todo eso vive en la memoria del comercial, o en notas incompletas que nunca llegan al CRM. Cuando el comercial enferma, tiene vacaciones, o simplemente olvida, esa información desaparece. Y el CRM sigue en blanco.

Este flujo recibe el audio cuando termina una llamada, transcribe con Whisper, extrae los datos estructurados con Claude, actualiza HubSpot automáticamente, y notifica al equipo en Slack.

Herramientas necesarias

  • n8n (self-hosted o cloud)
  • Webhook — recibe evento "llamada terminada" de tu sistema de telefonía (Aircall, Ringover, Twilio, CallRail, etc.)
  • HTTP Request (OpenAI Whisper API) — transcripción del audio
  • HTTP Request (Claude API) — extracción de datos estructurados
  • HubSpot (node nativo n8n) — actualizar contacto y crear nota
  • Slack (node nativo n8n) — notificar al equipo
  • Credenciales: OpenAI API key, Anthropic API key, HubSpot API key, Slack Bot Token
  • Requisito: tu sistema de telefonía debe poder enviar un webhook al final de cada llamada con la URL de descarga del audio

Configuración paso a paso

Nodo 1 — Webhook (call.ended)

  • Method: POST
  • Path: llamada-terminada
  • Body esperado (ejemplo Aircall):
{
  "event": "call.ended",
  "data": {
    "id": "call_123",
    "recording": "https://storage.aircall.io/recordings/call_123.mp3",
    "contact": { "id": "ct_456", "phone_number": "+34600000000" },
    "duration": 2700,
    "agent": { "email": "comercial@empresa.com" }
  }
}

Nodo 2 — HTTP Request (descargar audio)

  • Method: GET
  • URL: {{ $json.data.recording }}
  • Response Format: File
  • Esto descarga el archivo MP3 en memoria para pasarlo a Whisper

Nodo 3 — HTTP Request (Whisper API — transcripción)

  • Method: POST
  • URL: https://api.openai.com/v1/audio/transcriptions
  • Authentication: Bearer Token → tu OpenAI API key
  • Body Format: Form Data (multipart)
  • Campos:
    • file: {{ $binary.data }} (el archivo descargado)
    • model: whisper-1
    • language: es
    • response_format: text
  • Nota: Whisper admite archivos hasta 25MB. Para llamadas largas, comprime el audio primero o usa la versión via URL si tu proveedor lo soporta.

Nodo 4 — HTTP Request (Claude API — extracción)

  • Method: POST
  • URL: https://api.anthropic.com/v1/messages
  • Headers: x-api-key, anthropic-version: 2023-06-01
  • Body:
{
  "model": "claude-opus-4-5",
  "max_tokens": 600,
  "messages": [{ "role": "user", "content": "{{ $json.prompt_extraccion }}" }]
}

Nodo 5 — HubSpot (Create Note on Contact)

  • Resource: Engagement
  • Operation: Create
  • Type: NOTE
  • Contact ID: busca por teléfono primero con HTTP Request a HubSpot API
  • Body: transcripción completa + resumen estructurado de Claude

Nodo 6 — HubSpot (Update Contact Properties)

  • Actualiza propiedades del contacto según lo extraído:
    • hs_lead_status según el estado identificado
    • next_activity_date con la fecha del próximo paso
    • deal_stage si corresponde

Nodo 7 — Slack (Send)

  • Channel: #ventas-seguimientos
  • Message: resumen de la llamada con próximos pasos destacados

Ejemplo de prompt IA

Analiza la siguiente transcripción de una llamada de ventas y extrae información estructurada para actualizar el CRM.

TRANSCRIPCIÓN:
{{ $node['HTTP Request Whisper'].json.text }}

DURACIÓN: {{ Math.floor($node['Webhook'].json.data.duration / 60) }} minutos
AGENTE: {{ $node['Webhook'].json.data.agent.email }}

Devuelve ÚNICAMENTE este JSON:
{
  "resumen_ejecutivo": "2-3 frases resumiendo la llamada",
  "interes_nivel": "alto|medio|bajo|no_cualificado",
  "presupuesto_mencionado": "valor o null",
  "plazo_decision": "fecha o plazo mencionado o null",
  "objeciones": ["lista de objeciones mencionadas"],
  "proximos_pasos": ["lista de compromisos y acciones acordadas"],
  "fecha_siguiente_contacto": "fecha en formato YYYY-MM-DD o null",
  "estado_deal": "prospecto|calificado|propuesta_enviada|negociacion|cerrado_ganado|cerrado_perdido"
}

Ahorro estimado

  • Toma de notas post-llamada: 10-15 min/llamada eliminados
  • Actualización de CRM: prácticamente automática (de 0% a 100% de llamadas registradas)
  • Con 10 llamadas/semana: 1.5-2.5 horas ahorradas semanalmente
  • Pérdida de información entre comerciales: prácticamente eliminada