Inspiración

Una tarea bancaria suele comenzar con una necesidad sencilla: “Ayúdame a entender mis inversiones” o “Quiero pagar menos intereses”. Sin embargo, resolverla puede exigir recorrer menús, interpretar términos desconocidos y conectar varios pasos.

El reto Banorte x Tec nos inspiró a explorar una pregunta: ¿qué pasaría si la interfaz bancaria se adaptara a la intención del usuario?

Así desarrollamos IntelliBank con NortAI, un asistente que conecta solicitudes en lenguaje natural con interfaces interactivas y acciones controladas.

¿Qué hace?

IntelliBank transforma solicitudes escritas o habladas en interfaces bancarias adaptadas a la tarea. NortAI consulta información mediante herramientas y la presenta con resúmenes de portafolio, tablas, gráficas, simuladores y pantallas de confirmación.

Por ejemplo, una persona puede solicitar un resumen de sus inversiones, explorar una simulación disponible, revisar una operación y confirmarla dentro del entorno de demostración. Cada interacción permite continuar el proceso y construir el siguiente paso.

También es posible retomar solicitudes anteriores desde el historial y regenerar sus interfaces con datos actualizados de la demo.

El prototipo utiliza datos sintéticos. Las operaciones modifican la base de demostración, no cuentas bancarias reales.

¿Cómo lo construimos?

Dividimos el sistema en capas con responsabilidades claras:

  • Frontend: React y Vite construyen la aplicación, mientras Zustand administra el estado de sesión e interacción.
  • Interfaz generativa: un renderer propio transforma un contrato JSON equivalente a A2UI en pantallas, utilizando un catálogo de 22 componentes React.
  • Backend: Python y FastAPI coordinan solicitudes, validan respuestas y administran las transiciones del flujo.
  • Orquestación de IA: un modelo de lenguaje de OpenAI interpreta las solicitudes y selecciona herramientas y componentes visuales.
  • Integración de herramientas: un cliente y un servidor MCP persistentes conectan al orquestador con 44 herramientas de dominio.
  • Persistencia: SQLite almacena datos financieros sintéticos, conversaciones, pantallas generadas y el estado de los procesos.

El modelo describe la interfaz utilizando componentes permitidos. Pydantic valida su estructura y el backend comprueba las transiciones del flujo antes de entregar la pantalla al usuario.

Retos que enfrentamos

Uno de los principales retos fue conectar una conversación flexible con una ejecución controlada. Las personas pueden expresar una misma necesidad de muchas maneras, pero una operación requiere parámetros claros, validaciones y una confirmación adecuada.

También tuvimos que mantener el contexto entre pantallas generadas. El sistema necesita identificar cuál está vigente, qué acciones ofrece y en qué etapa del proceso se encuentra el usuario.

El historial planteó otro desafío: reabrir una solicitud debía recuperar información actualizada sin repetir una operación anterior. Por eso, su reproducción utiliza herramientas de lectura para reconstruir la interfaz.

Durante el desarrollo local en Windows, utilizamos un transporte MCP persistente en memoria para abordar problemas de estabilidad, conservando la comunicación mediante el protocolo MCP.

Logros de los que estamos orgullosos

Estamos orgullosos de conectar la intención del usuario, la ejecución de herramientas, una interfaz interactiva y un resultado persistido dentro de una misma demostración.

Construimos nuestros propios componentes visuales y herramientas de dominio. Esto permite que el asistente prepare interfaces útiles y continúe el proceso a partir de las decisiones de la persona.

Además, implementamos controles en el backend para comprobar la vigencia de la pantalla, las acciones ofrecidas y el estado de confirmación. Estos mecanismos nos permitieron demostrar cómo una interfaz generada puede participar en un flujo accionable.

Lo que aprendimos

Aprendimos que las interfaces generativas necesitan una separación clara entre razonamiento, acceso a datos, presentación y ejecución. El modelo coordina la experiencia; las herramientas realizan las operaciones y el backend aplica las reglas.

También comprendimos que una interfaz con estructura válida no garantiza que todos sus datos sean correctos. La validación del esquema debe complementarse con comprobaciones que permitan verificar el origen de los valores mostrados.

Finalmente, aprendimos a comunicar con precisión el alcance del prototipo. El acceso mediante passkeys y la autorización de una transacción son funciones distintas, al igual que una animación de texto y el streaming real. Entender estas diferencias nos ayudó a definir los siguientes pasos del proyecto.

¿Qué sigue para IntelliBank?

Nuestro siguiente paso es probar IntelliBank con usuarios y medir el tiempo, la comprensión y la finalización de las tareas. Queremos obtener evidencia de que adaptar la interfaz facilita la experiencia bancaria.

Las prioridades técnicas incluyen streaming real, validaciones más fuertes de los datos financieros mostrados, confirmación WebAuthn vinculada a cada transacción y mejor observabilidad. También planeamos fortalecer la autenticación, los permisos, la prevención de operaciones duplicadas y los registros de auditoría.

A largo plazo, buscamos conectar las herramientas con servicios bancarios autenticados, manteniendo la separación entre el agente, las operaciones y la interfaz.

Nuestra meta es facilitar que las personas entiendan y completen sus tareas bancarias, comenzando por lo que necesitan resolver.

Built With

Share this project:

Updates