Inspiración

El seguimiento de una propuesta comercial no consiste únicamente en saber cuándo contactar a un cliente, sino también en identificar cuándo esperar y cuándo es mejor actuar o no hacer nada. Un mensaje oportuno puede ayudar a cerrar una venta, mientras que uno enviado en el momento equivocado puede perjudicar nuestra relación con el cliente e ignorar sus preferencias. En este reto de Bycode se nos presentó la oportunidad de abordar este problema mediante un agente capaz de transformar eventos comerciales en decisiones claras y útiles. Nuestro objetivo nunca fue únicamente recomendar qué hacer después, sino hacerlo de manera contextualizada, explicable y segura.

¿Qué hace?

Hellocode analiza una serie de eventos de cada caso comercial y, con base en todo ese contexto, recomienda la siguiente mejor acción. Puede sugerir contactar al cliente, esperar el momento adecuado, resolver una objeción, escalar el caso para una revisión humana o no realizar ninguna acción. Con cada recomendación se genera una explicación que incluye los eventos que la respaldan, el momento sugerido para ejecutarla, los niveles de confianza y riesgo, así como la información faltante que podría ayudar a tomar una mejor decisión. Además, permite registrar nuevos eventos y observar cómo cambian las recomendaciones. También incorpora un agente de IA capaz de interpretar las consultas, identificar qué métodos utilizar y cómo organizar la información disponible para generar una recomendación fundamentada, junto con la justificación de la decisión tomada.

¿Cómo lo construimos?

Backend: Nuestro backend se desarrolló con FastAPI y se organizó mediante routers, servicios y repositorios. La información de los eventos se almacena en archivos JSONL. Motor de decisiones basado en reglas: Utilizamos Python para priorizar las restricciones comerciales, como los casos cerrados, las prohibiciones de contacto, las fechas programadas y los periodos de espera. Aprendizaje automático: Utilizamos un modelo de regresión logística de scikit-learn para estimar la probabilidad de cierre de una oportunidad comercial a partir de casos históricos. Integración con Gemini: Incorporamos un agente de IA para clasificar la intención de los mensajes de los clientes y generar explicaciones para las recomendaciones. Su funcionamiento se complementa con el motor de reglas, que determina las acciones de acuerdo con las condiciones y restricciones de cada caso. Tolerancia a fallos: Cuando Gemini presenta errores o no está disponible, el sistema recurre a un mecanismo de respaldo para mantener su funcionamiento. Interfaz web: Desarrollamos una interfaz que permite consultar los casos comerciales de forma individual, visualizar su estado actual y la probabilidad estimada de cierre, y revisar el historial de eventos y las restricciones registradas. También muestra las recomendaciones generadas por el sistema, incluyendo su justificación, la evidencia que las respalda y el seguimiento sugerido. Además, permite registrar nuevos eventos y consultar cómo estos influyen en la evaluación del caso.

Desafíos que enfrentamos

Datos inconsistentes: Nos encontramos con eventos duplicados, campos faltantes e información fuera de orden, por lo que tuvimos que validar y organizar los datos antes de procesarlos correctamente. Riesgos de inyección de instrucciones: Algunos mensajes de los clientes podían contener instrucciones que intentaran manipular el comportamiento de la IA. Por ello, buscamos identificar estos casos y tratarlos como entradas no confiables para evitar que afectaran las recomendaciones. Limitaciones de las API externas: Durante el desarrollo nos encontramos con modelos retirados, saturación del servicio y cuotas agotadas en Gemini, lo que provocaba retrasos y errores. Para solucionar estos problemas, implementamos reintentos, pausas temporales, caché y un mecanismo de respaldo local. Confiabilidad de las recomendaciones: Uno de nuestros principales desafíos fue lograr que las recomendaciones respetaran las restricciones comerciales, incluso cuando los mensajes eran ambiguos o los servicios de IA presentaban fallos.

Logros

Mayor control sobre las decisiones: Utilizamos reglas de negocio para determinar las acciones recomendadas, evitando depender completamente de las respuestas de la IA, especialmente cuando existen restricciones de contacto. Continuidad del servicio: Implementamos un mecanismo de respaldo local que permite mantener el funcionamiento del sistema cuando Gemini no está disponible. Recomendaciones explicables: Logramos que las recomendaciones incluyeran una justificación, los eventos que las respaldan y la información que hace falta para tomar una mejor decisión. Integración de tecnologías: Conseguimos integrar el procesamiento de eventos, el aprendizaje automático, la IA generativa y una interfaz web en un mismo prototipo.

¿Qué aprendimos?

-La IA puede ser más confiable cuando sus responsabilidades están bien delimitadas: los modelos de lenguaje ayudan a interpretar mensajes y explicar resultados, mientras que las reglas deterministas permiten aplicar restricciones críticas. -Los servicios externos deben considerarse posibles puntos de fallo, no dependencias que siempre estarán disponibles. -La calidad de los datos y el contexto de cada evento son fundamentales para generar recomendaciones útiles. -Construir un agente confiable implica más que producir una respuesta: también requiere comprender la situación, respetar las restricciones y justificar la decisión.

¿Qué sigue?

-Sustituir el almacenamiento JSONL por una base de datos que permita trabajar con múltiples usuarios y procesos simultáneos. -Ajustar los periodos de espera, los umbrales de confianza y los niveles de riesgo utilizando datos reales. -Mostrar en la interfaz si una explicación fue generada por Gemini o por el mecanismo local de respaldo. -Incorporar autenticación y límites de uso para controlar el acceso y los costos de las API. Integrar la solución con plataformas CRM y herramientas de comunicación para conectar las recomendaciones con los procesos comerciales reales.

Share this project:

Updates

Submission history