Habla con una persona real
Sin bots, sin vueltas. Te mostramos Kleva en vivo.
Cuando múltiples gestores de cobranza contactan al mismo deudor — un equipo interno, un BPO tercerizado, y un voice agent de IA — surge un riesgo operativo crítico: promesas de pago duplicadas. El deudor promete pagar $500 USD el viernes al gestor A, luego ese mismo día le promete otros $500 al gestor B, y finalmente le confirma al voice agent que pagará $500 mañana. Tres promesas registradas, un solo pago real previsto por el cliente.
El resultado: el sistema de cobranza proyecta $1,500 USD de entrada de caja cuando la realidad será $500. Esta sobrevaloración de caja prometida distorsiona el DSO, genera expectativas falsas en la gerencia financiera, y cuando el deudor paga solo una vez (como planeaba), los tres gestores reclaman el KPI del compromiso — inflando métricas sin generar valor real. Para CFOs y directores de cobranza, identificar y prevenir duplicados es un control básico de calidad de datos en operaciones multi-gestor.
Este post detalla cómo detectar promesas duplicadas en tiempo real, qué campos debe capturar cada gestor para permitir deduplicación automática, y cómo auditar contactos cruzados para asignar correctamente la atribución de cada compromiso. Los ejemplos cubren escenarios típicos de fintech, bancos y BPOs operando en Latinoamérica con voice agents de IA integrados.

El problema no es que el deudor mienta intencionalmente (aunque algunos lo hacen para "sacarse de encima" a cada gestor). La causa raíz es descoordinación entre sistemas de cobranza que operan en silos:
Un gestor humano interno promete al cliente, anota en un Excel local o CRM interno, y esa promesa tarda 4-12 horas en sincronizarse con el sistema central. Mientras tanto, el BPO tercerizado (que opera en su propia plataforma) contacta al mismo deudor y obtiene otra promesa. Ambos sistemas registran compromisos sin saber que el otro ya lo hizo.
Ejemplo real de fintech en México: equipo interno usa Salesforce, BPO A usa plataforma propia, BPO B usa otra distinta, y los voice agents de Kleva actualizan vía API el core de cobranza. Las promesas del equipo interno tardan hasta 8h en reflejarse en el core (batch nocturno). Durante esas 8h, los BPOs y voice agents contactan al deudor sin saber que ya prometió. Resultado: 23% de las promesas registradas eran duplicados — inflaban pronóstico de caja en $180,000 USD mensual.
Cada gestor registra "promesa de pago" sin un identificador que permita correlacionar si dos promesas son del mismo evento conversacional. Sistema A registra:
Promesa: $500, fecha_compromiso: 2026-11-08, gestor: "Juan P.", timestamp: 2026-11-05 14:35
Sistema B registra:
Promesa: $500, fecha_compromiso: 2026-11-08, gestor: "BPO_AgentX", timestamp: 2026-11-05 14:42
¿Son la misma promesa (el deudor habló con Juan a las 14:35 y con BPO a las 14:42, repitiendo lo mismo)? ¿O son dos promesas distintas (el cliente planeaba pagar $1,000 en dos transacciones)? Sin un contacto_id único que vincule cada interacción a un evento específico, la deduplicación es imposible.
Marcadores automáticos de cobranza (dialers) asignan llamadas sin consultar si otro gestor contactó al deudor en las últimas 2-4 horas. El deudor recibe 3 llamadas en 1 día de gestores distintos (interno a las 10am, BPO a las 2pm, voice agent a las 6pm), y para evitar presión, promete a cada uno. Si los gestores cobran por "promesa obtenida" (KPI común en BPOs), tienen incentivo para registrar todo como compromiso, aunque sepan que el deudor ya habló con otro gestor.
Un estudio de 2025 en operaciones de cobranza B2B en Colombia encontró que el 18-24% de promesas de pago en cuentas gestionadas por 2+ proveedores eran duplicados, y ese porcentaje subía a 34% cuando intervenían 3+ gestores sin coordinación central.
Para detectar duplicados en tiempo real, cada promesa debe registrarse con estos campos mínimos (obligatorios para sistemas multi-gestor):
CampoDescripciónEjemploPor qué es crítico
contacto_idUUID único generado al inicio de cada llamada/chat. Identifica el evento de contacto.c7f3a8b2-4d1e-...Permite saber si dos promesas vienen del mismo contacto o de contactos distintos.
timestamp_contactoFecha y hora exacta (con zona horaria) del inicio del contacto.2026-11-05T14:35:22-06:00Detecta promesas registradas con
gestor_idIdentificador único del operador (humano o IA). NO nombre libre ("Juan"), SÍ ID de sistema.emp_12345, bpo_agentX, kleva_voice_01Permite rastrear qué gestor obtuvo cada promesa y auditar duplicados por operador.
canalMedio de contacto: llamada, WhatsApp, SMS, email, presencial.voice_callDos promesas por voice_call en
monto_prometidoCantidad exacta que el deudor se comprometió a pagar (no el saldo total adeudado).500.00 USDPromesas de montos idénticos en
fecha_compromisoFecha en que el deudor prometió realizar el pago.2026-11-08Misma fecha + mismo monto +
metodo_pagoCómo prometió pagar: transferencia, tarjeta, efectivo, débito automático.transferencia_bancariaMismo método en promesas consecutivas refuerza probabilidad de duplicado (el deudor repitió su plan a cada gestor).
cuenta_idIdentificador único de la cuenta del deudor en el sistema de cobranza.acc_98765Obviamente necesario para agrupar todas las promesas de un mismo deudor.
fuente_sistemaDe qué sistema/plataforma proviene el registro: CRM interno, BPO A, BPO B, Kleva, etc.salesforce, bpo_platform_1, kleva_apiAudita qué sistemas generan más duplicados (señal de falta de sincronización).
Ejemplo de registro completo:
{
"contacto_id": "c7f3a8b2-4d1e-4a7c-9e3b-1f8d2c5a6e9d",
"timestamp_contacto": "2026-11-05T14:35:22-06:00",
"gestor_id": "kleva_voice_01",
"canal": "voice_call",
"cuenta_id": "acc_98765",
"monto_prometido": 500.00,
"fecha_compromiso": "2026-11-08",
"metodo_pago": "transferencia_bancaria",
"fuente_sistema": "kleva_api",
"notas": "Cliente confirmó que depositará el viernes antes de las 5pm en cuenta terminada en 7890."
}
Con estos campos, un motor de deduplicación puede ejecutar: SELECT * FROM promesas WHERE cuenta_id = 'acc_98765' AND timestamp_contacto BETWEEN '2026-11-05 12:00' AND '2026-11-05 16:00' AND monto_prometido = 500 AND fecha_compromiso = '2026-11-08' → si devuelve 2+ registros, son duplicados probables que requieren revisión.

Un sistema de cobranza bien diseñado no espera a fin de mes para limpiar duplicados — los detecta y marca en el momento del registro. La lógica típica:
-- Buscar promesas recientes de la misma cuenta
SELECT * FROM promesas
WHERE cuenta_id = :nueva_cuenta_id
AND timestamp_contacto >= (NOW() - INTERVAL '4 hours')
AND estado IN ('pendiente', 'confirmada') -- excluir ya pagadas o canceladas
ORDER BY timestamp_contacto DESC;
Para cada promesa existente en esa ventana de 4h, calcular un score de duplicación:
-15 puntos si gestor_id es el mismo (un gestor raramente duplica su propia promesa en
Umbral de decisión:
Ejemplo de cálculo:
Promesa A (existente): monto $500, fecha 2026-11-08, método transferencia, canal voice_call, gestor emp_12345
Promesa B (nueva): monto $500, fecha 2026-11-08, método transferencia, canal voice_call, gestor kleva_voice_01
Score: +40 (monto) +30 (fecha) +20 (método) +10 (canal) -0 (gestores distintos) = 100 puntos
→ DUPLICADO CASI SEGURO
Acción: marcar Promesa B como duplicado_probable, vincular a Promesa A con referencia, NO sumar $500 adicionales a proyección de caja.
Cuando se detecta un duplicado probable:
Kleva detecta duplicados automáticamente porque cada llamada de voice agent genera un call_id único, timestamp preciso, y se sincroniza vía API en antes de contactar al deudor → puede abrir la conversación con "Veo que ya habló con [gestor] esta mañana y le prometió $500 para el viernes. ¿Confirma ese compromiso o hay cambios?" — evitando la duplicación en origen.
Para evitar que duplicados pasen desapercibidos, ejecutar auditorías semanales con estas queries:
Esto devuelve cuentas con múltiples promesas el mismo día. Revisar manualmente casos con 3+ promesas (alta probabilidad de duplicados no detectados).
SELECT p1.cuenta_id, p1.monto_prometido, p1.fecha_compromiso,
p1.gestor_id AS gestor_A, p1.timestamp_contacto AS ts_A,
p2.gestor_id AS gestor_B, p2.timestamp_contacto AS ts_B,
ABS(EXTRACT(EPOCH FROM (p2.timestamp_contacto - p1.timestamp_contacto))) / 3600 AS horas_diferencia
FROM promesas p1
JOIN promesas p2 ON p1.cuenta_id = p2.cuenta_id
AND p1.monto_prometido = p2.monto_prometido
AND p1.fecha_compromiso = p2.fecha_compromiso
AND p1.gestor_id <> p2.gestor_id
AND p1.id = NOW() - INTERVAL '7 days'
AND ABS(EXTRACT(EPOCH FROM (p2.timestamp_contacto - p1.timestamp_contacto)))
Esta query encuentra pares de promesas con monto y fecha idénticos, gestores distintos, registradas con ≤4h de diferencia → candidatos fuertes a duplicado.
SELECT fuente_sistema, gestor_id,
COUNT(*) AS total_promesas,
SUM(CASE WHEN estado = 'duplicado_confirmado' THEN 1 ELSE 0 END) AS duplicados,
ROUND(100.0 * SUM(CASE WHEN estado = 'duplicado_confirmado' THEN 1 ELSE 0 END) / COUNT(*), 2) AS tasa_duplicados
FROM promesas
WHERE timestamp_contacto >= NOW() - INTERVAL '30 days'
GROUP BY fuente_sistema, gestor_id
HAVING COUNT(*) > 20 -- solo gestores con volumen significativo
ORDER BY tasa_duplicados DESC;
Si un BPO o gestor específico tiene >15% de tasa de duplicados, señala:

Cada gestor (interno, BPO, voice agent) debe registrar promesas vía API al sistema central, no en hojas Excel o CRMs locales. La API devuelve inmediatamente si ya existe una promesa reciente similar, antes de que el gestor cierre la llamada.
Ejemplo de respuesta API al registrar promesa:
POST /api/promesas
{
"cuenta_id": "acc_98765",
"monto_prometido": 500,
"fecha_compromiso": "2026-11-08",
...
}
Respuesta 201 Created:
{
"promesa_id": "prm_xyz123",
"estado": "registrada",
"alertas": [
{
"tipo": "duplicado_probable",
"mensaje": "Ya existe promesa similar registrada por gestor emp_12345 hace 2.3 horas. Validar con deudor si es la misma.",
"promesa_referencia": "prm_abc789"
}
]
}
El gestor recibe la alerta en pantalla y puede preguntar al deudor: "Veo que ya habló con un colega esta mañana. ¿El pago de $500 del viernes que me confirma es el mismo que le comentó a él?" — si el deudor dice sí, el gestor marca la nueva promesa como confirmación de la existente, no como segunda promesa independiente.
Cuando un gestor inicia contacto con un deudor, el sistema marca ultimo_contacto_activo con timestamp + gestor_id. Durante las siguientes 2-4h, otros gestores ven una alerta al intentar contactar esa cuenta: "Esta cuenta fue contactada por [gestor] hace [tiempo]. ¿Confirmar nuevo contacto?"
Esto no bloquea el contacto (el deudor puede no haber contestado al primer gestor), pero reduce contactos redundantes que derivan en promesas duplicadas.
Kleva transcribe automáticamente cada llamada de voice agent con timestamps. Si el deudor dice "Sí, como le dije al otro señor esta mañana, voy a pagar el viernes", el clasificador NLP detecta intent=confirmar_promesa_existente en vez de intent=nueva_promesa, y marca el registro como confirmación de la promesa anterior, no como duplicado.
Para gestores humanos, implementar transcripción con herramientas como Deepgram, AssemblyAI o Google Speech-to-Text, y entrenar un clasificador simple que busque frases clave:
Panel en tiempo real que muestra:
Alertas de «cuenta contactada por 2+ gestores en
Esto permite a supervisores reasignar cartera dinámicamente: si BPO A ya gestionó 80 cuentas esta mañana, redirigir las siguientes al BPO B o voice agents, evitando que ambos contacten las mismas cuentas.
Cuando se confirma que dos promesas son del mismo compromiso, ¿cuál cuenta para el KPI del gestor? Tres enfoques comunes:
El gestor que obtuvo la promesa primero se lleva el crédito completo. Los contactos posteriores que confirman se marcan como «seguimiento» sin KPI adicional. Pro: Incentiva rapidez en gestión. Contra: Desincentiva seguimiento (si otro gestor ya contactó, ¿para qué intentar?).
El gestor cuyo contacto fue más cercano al pago real se lleva el crédito. Pro: Reconoce el esfuerzo de «cerrar» el compromiso. Contra: Genera competencia interna por re-contactar justo antes de la fecha prometida.
Cada gestor que participó en obtener/confirmar la promesa recibe crédito parcial. Ejemplo:
Pro: Más justo, incentiva colaboración. Contra: Más complejo de implementar y comunicar.
La opción recomendada para BPOs tercerizados es First Touch con pago de bono solo por pago confirmado (no por promesa), eliminando el incentivo de registrar promesas falsas o duplicadas.
Empresa: Fintech de préstamos personales, Colombia, cartera activa $12M USD
Problema: Operaban cobranza con equipo interno (15 gestores), 2 BPOs externos (30 agentes combinados), y acababan de incorporar voice agents de Kleva. Auditoría inicial reveló 24% de promesas duplicadas — $420,000 USD mensuales de caja prometida fantasma.
Solución implementada en 60 días:
Resultados tras 60 días:
Costo de implementación: 120h de desarrollo (API + motor deduplicación + dashboards) = $9,600 USD. Payback en 28 días solo con ahorro en minutos de voz + reducción de horas de supervisión manual.
Kleva incorpora controles nativos de deduplicación que previenen promesas duplicadas en operaciones multi-gestor:
Antes de que el voice agent marque al deudor, consulta vía API si hubo contactos en las últimas 4-6h. Si detecta una promesa reciente, ajusta el guión de apertura:
"Buenos días, habla Kleva. Veo que habló con [nombre gestor] esta mañana y le prometió pagar $500 el viernes 8 de noviembre. Llamo para confirmar ese compromiso y enviarle el link de pago. ¿Confirma que va a pagar esa cantidad en esa fecha?"
Si el deudor confirma, Kleva marca la interacción como tipo=confirmacion_promesa_existente, NO como nueva promesa. El KPI se atribuye al gestor original.
El motor NLP de Kleva detecta intents como:
En ambos casos, el voice agent pregunta: "¿Ese compromiso de $500 para el viernes es además del que ya acordó, o es el mismo?" — espera respuesta explícita del deudor para desambiguar.
Cada promesa obtenida por Kleva se registra vía API con:
{
"call_id": UUID,
"timestamp_inicio": ISO8601,
"timestamp_fin": ISO8601,
"gestor_id": "kleva_voice_XX",
"canal": "voice_call",
"transcripcion_url": "https://...",
"intent_clasificado": "nueva_promesa" | "confirmacion_existente",
"promesa_referencia_id": (si es confirmación, ID de la promesa que confirma),
"monto_prometido": float,
"fecha_compromiso": date,
"metodo_pago": string,
"confidence_score": 0.92 (confianza del NLP en la clasificación)
}
El motor de deduplicación central recibe estos datos y ejecuta la lógica de scoring descrita previamente. Si detecta duplicado, vincula ambas promesas con referencia cruzada.
Kleva genera reportes semanales de:
Detección de cuentas con 2+ contactos de Kleva + otros gestores en
Esto permite ajustar dinámicamente qué cuentas asignar a voice agents vs. gestores humanos, optimizando el ROI de cada canal.
Compara estos 5 parámetros: (1) monto prometido idéntico (±2%), (2) misma fecha de compromiso, (3) mismo método de pago, (4) timestamps de contacto separados por 90%. Implementa un motor de deduplicación que calcule un score de similitud automáticamente (ejemplo: +40 pts por monto igual, +30 por fecha igual, +20 por método igual, +10 por canal igual) y marque como duplicado_probable cualquier par con score ≥70. Notifica al gestor que acaba de registrar para validación manual: "Ya existe promesa similar de hace X horas, ¿es la misma?".
Campos mínimos obligatorios: contacto_id (UUID único del evento de contacto), timestamp_contacto (fecha-hora exacta con zona horaria), gestor_id (ID único del operador, no nombre libre), canal (llamada/WhatsApp/email/presencial), cuenta_id (ID del deudor), monto_prometido (cantidad exacta), fecha_compromiso (cuándo promete pagar), metodo_pago (transferencia/tarjeta/efectivo), fuente_sistema (CRM/BPO_A/Kleva). Sin estos campos, la deduplicación es manual y propensa a error. Plataformas como Kleva capturan los 9 campos automáticamente en cada llamada de voice agent.
Cambia el esquema de incentivos: NO pagues por "promesa obtenida", SÍ paga por "pago confirmado recibido". Ejemplo: bono de $X por cada pago real que entra, con 20% adicional si el pago llega ≤2 días después de la fecha prometida (señal de calidad de la gestión). Esto elimina el incentivo de registrar promesas falsas. Además, da acceso a BPOs a API centralizada en tiempo real que detecta duplicados antes de cerrar el registro — si intentan registrar promesa idéntica a una de hace 2h, reciben alerta «probable duplicado, validar con deudor». Audita semanalmente tasa de duplicados por BPO (query de pares con parámetros idénticos en 10% de duplicados.
Puede ser legítimo (el cliente planeaba pagar en dos transacciones: $300 hoy + $200 mañana) o duplicado confuso (dijo $300 a gestor A y al preguntarle gestor B «¿cuánto puede pagar?» respondió $200, pero es el mismo plan fraccionado). Solución: el segundo gestor que detecta promesa reciente debe preguntar explícitamente: "Veo que habló con un colega hoy. Usted le prometió $300. Estos $200 que me confirma ahora, ¿son ADEMÁS de los $300, o son PARTE de ese mismo compromiso?" — esperar respuesta clara. Si el deudor titubea o dice «es lo mismo», marcar como confirmación parcial de la promesa original, no como segunda promesa independiente. Si confirma «son aparte», registrar como nueva con nota de que coexisten dos planes de pago simultáneos.
Implementa un sistema de "claim de contacto" en tiempo real: cuando un gestor humano inicia llamada, el sistema marca ultimo_contacto_activo con timestamp + gestor_id. Durante las siguientes 2-4h, el voice agent consulta ese flag antes de marcar — si ve contacto reciente, espera o pregunta en la apertura: "Veo que habló con [nombre gestor] hace X horas. Llamo para dar seguimiento a ese contacto. ¿Llegaron a un acuerdo de pago?" — evitando duplicar el esfuerzo. En operaciones con Kleva, los voice agents consultan vía API el historial de contactos de las últimas 6h ANTES de cada llamada y ajustan el guión dinámicamente si detectan gestión reciente (humana o automatizada).
La práctica estándar en cobranza B2B en LATAM es 4 horas. Dos promesas con parámetros idénticos (monto, fecha, método) registradas con 85% de probabilidad de ser duplicadas. Extender a 6-8h aumenta falsos positivos (el deudor puede haber cambiado de opinión legítimamente). Reducir a WHERE timestamp_contacto BETWEEN (nueva_promesa_ts - INTERVAL '4 hours') AND nueva_promesa_ts.
Tres métricas clave semanales: (1) Tasa de promesas duplicadas confirmadas: COUNT(estado='duplicado_confirmado') / COUNT(total_promesas) — objetivo 10%. (2) Cuentas con 2+ promesas en : COUNT(DISTINCT cuenta_id WHERE num_promesas_dia >= 2) — señal de descoordinación entre gestores. (3) Ratio caja prometida / caja recibida: si proyectas $500K de promesas pero recibes $350K, y la tasa de cumplimiento histórica es 75% ($375K esperados), los $25K faltantes probablemente son duplicados inflando la proyección. Ejecuta query de pares de promesas con parámetros idénticos en 15% de duplicados, escala para revisión de proceso.
Sí, Kleva se integra vía API REST con CRMs estándar (Salesforce, HubSpot, Zoho, Microsoft Dynamics) y plataformas de cobranza B2B (Liquid, Higo, Cobro Digital en LATAM). Cada promesa obtenida por un voice agent se registra vía webhook en el CRM en cobranza con IA.
Artículo actualizado: noviembre 2026. Datos de Kleva: $5M+ cobrados, 73% tasa de éxito, 94% resolución en primera llamada, 0 violaciones regulatorias en 7 países LATAM.
Agenda una demo y te mostramos cómo los agentes de voz recuperan cartera en tu país, con las reglas de tu operación.
Solicita una demoSin bots, sin vueltas. Te mostramos Kleva en vivo.