Inspiration
Todo empezó con la historia de María: entra al chat de una institución financiera para resolver dudas sobre cómo empezar a invertir, hace un par de preguntas y se va. Nadie registra su interés, nadie identifica qué producto necesita, nadie le da seguimiento. Para María fue una simple consulta; para la institución fue una oportunidad de negocio perdida.
Esa historia no es hipotética: las instituciones financieras reciben cientos de consultas diarias sobre inversiones, créditos y productos financieros, pero la mayoría de esos procesos siguen siendo manuales. Los asesores dedican su tiempo a responder preguntas repetitivas en vez de cerrar oportunidades de alto valor. Quisimos construir el sistema que hubiera evitado que María se perdiera en el camino.
What it does
NexoFin IA, convierte conversaciones financieras en oportunidades comerciales calificadas, con tres piezas que trabajan juntas:
- Agente Comercial IA: conversa con el prospecto, identifica si es B2B o B2C, aplica preguntas de calificación configurables y calcula una prioridad de lead (interés, presupuesto, perfil, urgencia). Crea y actualiza automáticamente el contacto y la oportunidad en el CRM.
- Tutor IA (Futuro Academy): responde dudas financieras con contenido aprobado y cita su fuente (para mitigar alucinaciones), propone una ruta de aprendizaje o un quiz de 3 preguntas, y —con consentimiento explícito del usuario— registra el tema de interés como señal comercial.
- Seguimiento y derivación: para cada oportunidad, el sistema resume necesidad, perfil y objeciones, y sugiere una acción (agendar reunión, enviar material o derivar a un especialista). Esa acción queda pendiente de aprobación humana: el ejecutivo puede aprobarla, editarla o rechazarla antes de que se envíe cualquier comunicación real.
También incorporamos "function calling real" para validar cédulas y RUC ecuatorianos: en vez de dejar que el modelo "adivine" si un documento es válido, el LLM decide cuándo invocar una función determinística en Python que aplica el algoritmo real de dígito verificador del SRI, y responde al prospecto basándose únicamente en ese resultado.
How we built it
- Backend: FastAPI + SQLAlchemy, con arquitectura en capas -
agents/orquesta el prompt hacia Gemini,tools/contiene la lógica de negocio y persistencia (CRM, validación de documentos), yrouters/expone la API HTTP. Esta separación fue deliberada: la lógica no depende de la interfaz ni del modelo específico usado. - IA: Google Gemini, combinando dos patrones según el caso: salida estructurada (
response_schemacon clases Pydantic) para calificación de leads, resumen de oportunidades y quizzes; y function calling automático para la validación de documentos, donde el cálculo lo hace código determinístico, no el modelo. - Base de datos: SQLite en desarrollo (rápido de iterar durante el hackathon), con la capa de conexión ya abstraída por variable de entorno para migrar a PostgreSQL/Supabase sin tocar el resto del código.
- Frontend: React + Vite + TypeScript, con manejo de errores y timeouts explícitos en cada llamada a la API.
- Tests: mocks del cliente de Gemini para probar la lógica de negocio (scoring, CRM, agentes) sin depender de la disponibilidad ni el costo de la API real, más pruebas puras para el algoritmo de validación de cédula/RUC.
Challenges we ran into
El mayor reto no fue construir el flujo feliz, sino que el agente no diera información financiera incorrecta o inventada, el criterio de "antialucinación" que pide el track. Eso nos llevó a decisiones concretas: pedir siempre salida estructurada con esquema fijo en vez de texto libre para los datos que alimentan el CRM, exigir que el Tutor cite su fuente en cada respuesta, y usar function calling (no el criterio del modelo) para cualquier cálculo determinístico como la validación de un documento.
También tuvimos que endurecer el manejo de errores: si la API de Gemini tarda o falla, el sistema no debe romperse con un error crudo — debe fallar con un mensaje claro y dar al usuario la oportunidad de reintentar, tanto en el backend (timeout explícito y errores controlados) como en el frontend.
Accomplishments that we're proud of
- Las tres historias de usuario del track completas y conectadas entre sí: un prospecto puede llegar por el Tutor, generar una señal comercial, y terminar como una oportunidad calificada con una acción sugerida esperando aprobación humana.
- Ninguna acción sensible se ejecuta sola: todo lo que toca al cliente final pasa por revisión humana antes de salir.
- Cobertura de tests más allá del mínimo, incluyendo mocks del LLM y pruebas del algoritmo real de validación de documentos.
What we learned
Que la arquitectura de un agente "de verdad" no es el prompt — es todo lo que rodea al prompt: dónde vive la lógica de negocio, qué se le pide al modelo en formato estructurado versus texto libre, y qué decisiones nunca se le delegan al modelo (como calcular un dígito verificador). También aprendimos a diseñar pensando en que la IA puede fallar o tardar, y que el sistema tiene que degradar con gracia, no romperse.
What's next for NexoFin AI
- Migrar de SQLite a PostgreSQL/Supabase para persistencia real en producción y datos que sobrevivan cada despliegue.
- Autenticación y roles para los ejecutivos comerciales (hoy cualquiera con la URL puede ver/aprobar acciones).
- Conectar el Agente Comercial a un canal real (WhatsApp Business) además del chat web.
- Integración con un CRM real del mercado (HubSpot, Salesforce) en vez de nuestro CRM simulado.
- Ampliar el function calling a más validaciones del dominio financiero ecuatoriano.
Built With
- crm
- css3
- fastapi
- fintech
- function-calling
- gemini-api
- genai
- google-gemini
- llm
- postgresql
- pydantic
- pytest
- python
- rest-api
- sqlalchemy
- sqlite
- sri
- supabase
- typescript
- uvicorn
Log in or sign up for Devpost to join the conversation.