Un agente de IA que trabaja dentro del CRM
Agente con tool-calling sobre la API de HubSpot: consulta contactos y deals, resume una cuenta y propone el siguiente paso. Escritura siempre bajo confirmación.
La idea
Que alguien de ventas pueda preguntar "¿qué deals de esta cuenta llevan más de 30 días sin movimiento?" y obtener la respuesta con los datos reales del CRM, en vez de construir un informe. No un chat pegado encima: un agente con acceso acotado a la API que consulta, resume y propone.
Cómo lo estoy montando
El agente no habla con la API directamente. Habla con un conjunto pequeño de herramientas que yo defino:
buscarContactos(filtros)obtenerDealsDeEmpresa(empresaId)resumirActividad(contactoId, dias)proponerSiguientePaso(dealId)— devuelve texto, no escribe nada
Cada herramienta declara su esquema de entrada con Zod, y ese esquema es lo que ve el modelo. Toda operación de escritura vive detrás de una confirmación explícita: el agente redacta la propuesta, la persona aprueba.
Lo que ya funciona
La lectura y el resumen. Preguntas del tipo "cuéntame el estado de esta cuenta" devuelven algo útil: deals abiertos, última interacción y qué falta para avanzar. Ahí el ahorro de tiempo es real, porque es trabajo de recopilación, no de criterio.
Lo que todavía no
- Demasiadas herramientas lo empeoran. Al pasar de seis, el modelo empezó a elegir mal. Reducir el conjunto subió la fiabilidad más que cualquier ajuste del prompt.
- Se inventa nombres de propiedades. Si le pides filtrar por un campo personalizado, tiende a suponer cómo se llama. Lo estoy resolviendo cargando el esquema real del portal y validando contra él antes de llamar a la API.
- Paginación y límites de peticiones. Una pregunta amplia puede disparar decenas de llamadas. Toca acotar rangos por defecto y cachear lo que se repite.
Lo aprendido hasta ahora
El trabajo no está en el prompt: está en el diseño de las herramientas. Un conjunto pequeño, con nombres explícitos y esquemas estrictos, rinde más que un agente con acceso amplio y buenas instrucciones. La descripción de cada parámetro acaba importando más que el texto del sistema.
Siguiente paso
Cargar el esquema de propiedades del portal al arrancar, para que el agente solo pueda filtrar por campos que existen de verdad.