cleyvinOS← notas del campo

Convertí el agente de mi portafolio en un captador de leads

El chatbot fingía ser yo. Lo rehíce como un asistente de intake honesto, con tool-calling de dos turnos y entrega del lead a Telegram y email.

Este portafolio tiene un agente de IA en el dock. La primera versión hablaba en primera persona: «hola, soy Cleyvin, ¿en qué te ayudo?». Funcionaba, pero me incomodaba. Un visitante le escribía a algo que decía ser yo, y no lo era. Si preguntaba por un precio, el modelo improvisaba. Si preguntaba por mi disponibilidad, inventaba.

Un agente que finge ser una persona real no es un truco simpático. Es una mentira pequeña que crece sola.

El rediseño

Lo rehíce como lo que de verdad necesitaba: un asistente de intake. Ahora no dice que es Cleyvin. Habla de Cleyvin en tercera persona, deja claro que es un asistente, y tiene un único trabajo: entender qué necesita quien escribe y pasarme el dato. El flujo de la conversación es deliberado:

  • Hace preguntas de descubrimiento: tipo de proyecto, alcance, plazo.
  • Da un estimado en dólares, sacado de una tabla de precios real que vive en el código, no de la imaginación del modelo.
  • Cuando tiene lo suficiente, deriva el lead.

El tool-calling de dos turnos

La pieza técnica interesante es cómo se cierra. El agente tiene una sola herramienta, submit_lead. El backend (/api/agent) hace tool-calling contra OpenAI con un flujo de dos turnos:

  • El modelo decide que tiene los datos y emite una llamada a submit_lead con el nombre, el contacto y el resumen del proyecto.
  • El backend ejecuta la entrega de verdad, y le devuelve al modelo el resultado.
  • El modelo redacta el turno final: la confirmación humana para el visitante.

Esa segunda vuelta importa: el usuario no ve un tool_call crudo, ve una despedida en lenguaje natural que confirma que el mensaje salió.

La entrega

submit_lead no escribe en una base de datos que después tendría que acordarme de revisar. Manda el lead por dos canales a la vez:

  • Un mensaje a un bot de Telegram — me llega al teléfono al instante.
  • Un email vía Resend.

Cada canal está detrás de su variable de entorno. Si falta el token, ese canal simplemente no se intenta; el agente no se cae. Y el lead trae una etiqueta de origen, así sé si vino del chat o del formulario de contacto.

Lo que aprendí

Dos cosas. La primera: un agente de cara al público no tiene que ser impresionante, tiene que ser honesto sobre lo que es. El momento en que dejó de fingir ser yo fue el momento en que empezó a dar confianza.

La segunda: el valor de un agente así no está en la conversación, está en el handoff. Una charla linda que no termina en un dato accionable en mi teléfono es entretenimiento. El tool-call de dos turnos es lo que convierte la charla en un lead.