Aplicación PWA para gestión de finanzas personales con inteligencia artificial, registro inteligente de transacciones, reconocimiento de voz y escaneo de facturas.
Octubre 06, 2024
Next.js 15, React 19, Tailwind CSS v4, TypeScript 5, Zustand, TanStack React Query, Radix UI, Framer Motion, Supabase (PostgreSQL), Cloudinary, Clerk, Google Gemini (NLP/OCR), Supabase Vector, Web Speech API
Full Stack Developer
Finanzz es un asistente financiero personal que ataca la raíz del problema: el tedio de registrar gastos. En lugar de formularios, Finanzz utiliza IA conversacional con IA para que puedas registrar transacciones hablando o dictando. ¿Tienes un recibo? Tómale una foto y la IA extraerá los datos por ti. La app no solo registra, sino que categoriza inteligentemente tus gastos y te permite organizarlos en listas de finanzas separadas (personal, negocio, etc.). Construido con un stack moderno (Next.js, Supabase Vector), Finanzz está diseñado para ser rápido, intuitivo y conversacional. El resultado es una herramienta que transforma una tarea odiosa en una experiencia fluida, haciendo que la gestión financiera sea tan simple como enviar un mensaje de texto.
Finanzz: gestiona tus finanzas personales con IA, registro inteligente, escaneo de facturas y experiencia PWA moderna.
finanzz.vercel.app
Aplicación PWA para gestión de finanzas personales con inteligencia artificial, registro inteligente de transacciones, reconocimiento de voz y escaneo de facturas.
Finanzz es un asistente financiero personal que ataca la raíz del problema: el tedio de registrar gastos. En lugar de formularios, Finanzz utiliza IA conversacional con IA para que puedas registrar transacciones hablando o dictando. ¿Tienes un recibo? Tómale una foto y la IA extraerá los datos por ti. La app no solo registra, sino que categoriza inteligentemente tus gastos y te permite organizarlos en listas de finanzas separadas (personal, negocio, etc.). Construido con un stack moderno (Next.js, Supabase Vector), Finanzz está diseñado para ser rápido, intuitivo y conversacional. El resultado es una herramienta que transforma una tarea odiosa en una experiencia fluida, haciendo que la gestión financiera sea tan simple como enviar un mensaje de texto.
Octubre 06, 2024
Next.js 15, React 19, Tailwind CSS v4, TypeScript 5, Zustand, TanStack React Query, Radix UI, Framer Motion, Supabase (PostgreSQL), Cloudinary, Clerk, Google Gemini (NLP/OCR), Supabase Vector, Web Speech API
Full Stack Developer
Interfaz principal donde los usuarios visualizan y gestionan sus transacciones y listas financieras.
Registro de transacciones por voz, texto y escaneo de facturas con IA.
Video mostrando las funcionalidades principales de Finanzz.
Un caso de estudio sobre la creación de una PWA con Next.js, IA conversacional (Gemini) y búsqueda semántica (Supabase Vector).
Siempre me ha frustrado la tediosa tarea de registrar cada gasto. Las apps de finanzas existentes se sentían como hojas de cálculo glorificadas: llenar formularios, seleccionar categorías de listas interminables, introducir cada detalle manualmente. Era agotador y, sinceramente, la razón por la que siempre terminaba abandonando el hábito.
Me pregunté: ¿Y si pudiera gestionar mis finanzas simplemente hablando con mi teléfono, como si le pidiera algo a un asistente? ¿Qué pasaría si pudiera decir “Pagué 250 lempiras por la cena de ayer en el Trapiche” y la app entendiera automáticamente que fue un gasto de comida? ¿O si pudiera simplemente fotografiar un recibo y que se registrara solo?
De esas preguntas nació Finanzz, un proyecto enfocado en hacer que el seguimiento financiero se sienta menos como una obligación y más como una conversación natural con una herramienta inteligente.
Construir Finanzz fue un viaje fascinante a través de la integración de IA en una aplicación web moderna. Aquí detallo las decisiones y los retos más importantes.
El verdadero desafío no era solo llamar a una API de IA, sino enseñarle a interpretar la ambigüedad del habla humana. Una frase como “lo de la gasolina del otro día, fueron 800” contiene una intención clara, pero es un reto para un sistema rígido.
Para resolverlo, desarrollé un sistema de prompt engineering robusto para Google Gemini. Tras muchas pruebas, conseguí que el modelo extrajera con fiabilidad entidades (cantidad, lugar, categoría, fecha) de frases complejas. Fue un proceso de iteración que me enseñó el poder y los matices de trabajar con LLMs. Para asegurar una experiencia de usuario fluida y mantener el cliente ligero, todas estas operaciones se ejecutan en el servidor gracias a los Server Components de Next.js 15.
Cada tecnología fue elegida con un propósito:
Next.js 15 (App Router): La elección de su arquitectura de Server Components fue deliberada. Procesar las peticiones de IA en el servidor era crucial para mantener la seguridad de las API keys y ofrecer una respuesta rápida en el cliente.
Supabase y Supabase Vector: Supabase fue una elección natural por su sencillez y su base en PostgreSQL. Pero la verdadera joya fue Supabase Vector. Me permitió implementar una futura categorización semántica. Almaceno embeddings (representaciones vectoriales) de las transacciones, lo que permite buscar por significado. Funciona como un bibliotecario que organiza libros no por su título, sino por su contenido, permitiendo encontrar ideas similares aunque se expresen con palabras diferentes.
Clerk para Autenticación: Consideré implementar autenticación personalizada, pero Clerk me permitió tener OAuth (Google, Apple) y un sistema de usuarios robusto funcionando en minutos. Fue un trade-off claro: sacrifiqué control total por velocidad de desarrollo, una decisión pragmática para un MVP.
Zustand vs. Redux: Habiendo usado Redux antes, me decidí por Zustand para gestionar el estado global. Su simplicidad y mínima sobrecarga fueron perfectas para manejar la complejidad de múltiples listas, cuentas y filtros sin el boilerplate tradicional.
Implementar el escaneo de facturas fue más complejo de lo esperado. Las facturas en Latinoamérica, a diferencia de otras regiones, no siguen un estándar. La posición del total, la fecha o el nombre del comercio varía enormemente.
La solución fue entrenar el prompt de Gemini Vision no solo para “leer”, sino para “entender” la estructura de una factura, buscando patrones clave como Total:
, Subtotal:
, fechas en distintos formatos y nombres de comercios, sin importar su ubicación en la imagen.
Como único desarrollador de Finanzz, mis responsabilidades abarcaron todo el ciclo de vida del producto:
Finanzz no es solo un proyecto de portafolio, sino una herramienta que resolvió un problema real para mí y que tiene el potencial de ayudar a otros.
Este proyecto fue una inmersión profunda en la creación de productos de IA de principio a fin. Mis mayores aprendizajes fueron:
Finanzz es el resultado de mi pasión por resolver problemas cotidianos con tecnología. Es un testimonio de cómo la IA, cuando se aplica de forma reflexiva, puede transformar tareas tediosas en experiencias fluidas y agradables.
Construir Finanzz fue un máster acelerado en la integración de IA en una aplicación web moderna. La lección más grande fue que trabajar con LLMs es más parecido a enseñar que a programar: requiere paciencia, iteración constante y una comprensión profunda de cómo estos modelos “piensan”.
El roadmap a futuro incluye:
Construido con ❤️ por Yamir Alejandro Rodas Elvir