Saltar al contenido
Proyectos / Lukre
LukreEn producción

Control de gastos que empieza con un mensaje.

Finanzas personales por conversación en WhatsApp: registra un gasto por mensaje y deja que el software determinista gestione los registros, totales y recordatorios.

Rol
Creador · producto e ingeniería
Áreas
Finanzas personales · Productos conversacionales · IA
Ejemplo de conversación

Almuerzo 38

Registrado: almuerzo, 38,00, en alimentación.

¿Cuánto gasté en alimentación esta semana?

Esta semana, hasta ahora:

Alimentación
284.00
Transporte
120.00

Conversación ilustrativa · importes de ejemplo

El problema

El control de gastos suele fallar por un motivo banal: es otra aplicación, otro formulario, otra cosa que recordar al pagar el café. La información existe. Simplemente rara vez llega a algún lugar útil.

Lukre parte de una apuesta menor. Si registrar un gasto se parece a enviar un mensaje, quizá se registre. Trabaja con lo que las personas le cuentan: no se conecta a bancos, no mueve dinero y no ofrece asesoramiento fiscal ni de inversión.

La experiencia

Hablas con Lukre por WhatsApp. Escribes un importe, lo describes en una nota de voz o envías la foto de un recibo, y se convierte en un registro categorizado. Después preguntas en el mismo chat: cuánto se gastó en alimentación este mes, qué aumentó, cómo va el presupuesto. Un hogar puede compartir el historial y cada miembro escribe desde su propio número.

Un panel web complementa la conversación. Allí los registros se convierten en gráficos e historial y algunas revisiones resultan más cómodas que en el chat: confirmar un recibo que requiere revisión, responder una pregunta pendiente o ajustar un límite presupuestario.

La arquitectura en pocas líneas

Vista lógica. Un miembro del hogar envía un mensaje por WhatsApp a la capa de conversación, donde un agente lo lee y un plugin verifica el hogar y fija el remitente validado. La llamada cruza el contrato MCP hasta el servicio financiero, pasando por herramientas MCP, servicios de aplicación y reglas de dominio, y se persiste en PostgreSQL con seguridad por fila para cada hogar. Un resultado estructurado vuelve al agente, que responde al miembro.
Diagrama conceptualVista lógica simplificada: responsabilidades y llamadas, no dónde se ejecuta cada parte.Selecciona el diagrama para ampliarlo.

Lukre son dos sistemas con un contrato entre ellos. Una capa de conversación, construida sobre el agente de código abierto Hermes, mantiene la sesión de WhatsApp, lee cada mensaje y decide qué operación se solicita. Un servicio financiero en Python es la única fuente de verdad para el dinero y expone al agente un conjunto seleccionado de operaciones como herramientas de Model Context Protocol (MCP).

El agente propone; el servicio comprueba quién lo pide, lee los números con código determinista, aplica las reglas y guarda el registro. La frase de confirmación que recibes se construye a partir de los valores almacenados.

Decisiones que lo definen

Los números quedan en el código

Para gastos escritos, el modelo transmite el mensaje; un analizador del dominio lee importe, fecha y categoría. El dinero usa Decimal de extremo a extremo.

El hogar nunca es un argumento

Proviene de la credencial del agente y vuelve a imponerse mediante seguridad por fila en PostgreSQL. El modelo no puede elegir otro hogar.

Cada mensaje se aplica una vez

El identificador del mensaje se reserva en la misma transacción que el registro; así, un mensaje reenviado no registra el gasto dos veces.

Tecnología por responsabilidad

Conversación

Hermes, un entorno de ejecución de agentes de código abierto, con WhatsApp mediante Baileys. Mi parte es un plugin Python que controla la entrada de cada mensaje y fija el remitente.

Model Context Protocol (MCP)

El límite estructurado de herramientas entre agente y servicio financiero: entradas tipadas, resultados JSON y ninguna autoridad propia.

Aplicación y dominio

Python 3.12 y FastAPI, con Pydantic en los bordes y un paquete de dominio sin código web ni de base de datos.

Registros

PostgreSQL mediante SQLAlchemy y Alembic, con cada tabla multiinquilino delimitada por el hogar.

Recibos y voz

Un modelo multimodal lee recibos y genera un candidato que debe superar comprobaciones de confianza y aritmética. Las notas de voz llegan como transcripciones.

Panel

Páginas renderizadas en el servidor con htmx y gráficos, que leen del mismo servicio.