PRISM-INSIGHT
These are 13 specialized AI agents that analyze Korean and US stocks in real-time, and this is open source and free to use.
AI translation
Ordena tu quincena, controla tus gastos y sabe si tus metas de ahorro de verdad alcanzan.
Translation pending
FinanceHTML · JavaScriptGitHub @GERARDOBR01OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Finanzas personales sin cuenta ni servidor: le pasas la captura del aviso de tu banco y lee monto, fecha y comercio. PWA que funciona sin conexión.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗App de finanzas personales para quien no tiene tiempo de llevarlas. Le pasas la captura de pantalla del aviso de tu banco y ella lo lee: saca el monto, la fecha y el comercio, y tú confirmas. Si prefieres, pegas el correo. Y aprende: si corriges una categoría una vez, no vuelve a preguntar — ni por los cargos que vienen, ni por los que ya estaban, que se ofrece a arreglar de un toque.
El efectivo, que en México sigue siendo el medio de pago más usado (según la ENIF 2021, el 78.7 % de las personas de 18 a 70 años lo usa en pagos de más de 501 pesos), se anota con un teclado propio en dos toques. Y tu ingreso sale del XML de tu recibo de nómina: exacto, sin teclearlo.
Contesta lo que importa a diario: a dónde se va el dinero, cuánto puedes gastar hoy sin quedarte corto, y si una meta de ahorro de verdad alcanza o no.
Abrir la app · desde el celular, Añadir a pantalla de inicio y queda instalada con su ícono, funcionando sin conexión.
Sin servidor, sin cuenta y sin dependencias. No hay registro ni login. Los datos se guardan en el navegador de quien la usa: aquí no hay backend al que mandarlos.
index.html la app publicada (esto es lo que sirve GitHub Pages)
finanzas.html la misma app en un archivo suelto: ábrelo desde el disco, sin servidor
motor/ el cálculo, en JavaScript puro y sin DOM
| Pantalla | Qué contesta |
|---|---|
| Hoy | Cuánto queda de la quincena, cuánto por día, con cuánto cierra el ciclo a este ritmo, qué se paga esta semana, cuántas quincenas aguantaría el fondo de emergencia, y qué suscripción te subió de precio |
| Bandeja | Lo que llegó solo y espera confirmación. Pegar, compartir, traer del correo o subir el estado de cuenta (CSV u OFX, eligiendo qué columna es qué); aceptar es un toque |
| Historial | Mes por mes, con buscador, la tendencia de las últimas seis quincenas, y en qué llevas gastado más que a estas alturas de la quincena pasada |
| Presupuesto | Cuánto va gastado por categoría contra su tope, con semáforo |
| Metas | Cuánto hay que apartar por quincena — y si eso cabe en la capacidad real de ahorro |
| Fijos | Qué vence, qué ya se pagó y cuánto se debe, más las suscripciones que encontró sola en el historial |
| Tarjetas | Cuánto pagar para no generar intereses y para cuándo, qué llevas gastado desde el corte —que se cobra hasta el siguiente—, cuánto de tu línea vas usando, cuánto tienes comprometido a meses y hasta cuándo, y cuántos de los últimos seis cortes pagaste completos |
| Ajustes | Ingreso (o sube tu recibo de nómina y sale exacto), ciclo, fondo de emergencia, reglas (las que aprendió de ti y las que escribes: varias palabras por regla, o «esto es un pago de tarjeta», aplicables a lo de antes eligiendo cuáles), plantillas para lo que se repite igualito, avisos, el puente de correo y respaldo en JSON |
Cinco cosas mueven dinero: gasto, ingreso, apartar, retirar y pagar una
tarjeta —que no es un gasto, sino dinero que cambia de lugar—. Las cuatro primeras salen del
botón +; el pago sale de la tarjeta que se paga. El + abre directo el teclado de efectivo —nueve de cada diez capturas son un
gasto— y los otros tres están a un toque de ahí. Un retiro no borra el apartado original — los dos
quedan en el historial, porque eso fue lo que pasó.
1. El código decide. No hay ningún modelo de por medio: todo sale de reglas deterministas y cada veredicto dice de dónde salió. El lector de capturas no es la excepción — convierte píxeles en texto, y de ahí en adelante manda el mismo lector determinista que lee un correo pegado. Ningún modelo decide un peso. Y por eso mismo, lo que sale de una imagen nunca se acepta sin mirarlo: un OCR puede leer $89.00 donde decía $8,900.00.
NO_ALCANZA — requiere $3,750.00 por quincena, capacidad estimada $530.00 — fuente: CODIGO
2. Declarar la ignorancia es una feature. Sin datos suficientes, la app responde
SIN_DATOS_SUFICIENTES y dice qué falta capturar. No promedia sobre aire:
—, nunca $0.00.SIN_TOPE, porque no hay contra
qué comparar.AJUSTADO, no NO_ALCANZA: no es un plan que no
cierre, es un ahorro en progreso.3. Los datos reales nunca entran al repositorio. Lo que se versiona es el motor.
0.1 + 0.2 no es 0.3,
y una app de finanzas que arrastra ese error miente por unos centavos cada mes.AAAA-MM-DD en local: una zona mal aplicada mueve un gasto
de quincena y descuadra el ciclo.localStorage lanza: por
eso no se pregunta con typeof, se intenta dentro de un try. Si no se puede guardar, la
app lo dice de entrada y sigue usable; si hay datos que esta versión no sabe abrir, se
niega a escribir en vez de pisarlos.••••4574 no se extrae y encima se cuela dentro del nombre del comercio.id, y lo borrado a propósito deja
lápida para que la otra copia no lo resucite.Todo lo que toca el mundo exterior vive en adaptadores opcionales que nadie importa: la app pregunta en tiempo de ejecución si existen. Bórralos, arma, y queda exactamente igual.
| Capa | Qué hace | ¿Se puede borrar? |
|---|---|---|
| IndexedDB (o localStorage) | el almacén base, en el dispositivo | no, es el piso |
| Respaldo JSON | exportar/importar; la mudanza a donde sea | no |
almacen/anfitrion-claude.js | sincroniza entre dispositivos | sí |
almacen/puente-correo.js | trae los avisos de Gmail | sí |
Eso no es una promesa escrita en un README: hay pruebas que recorren motor/, interfaz/ y
almacen/ y fallan si alguien nombra ese entorno fuera de su adaptador, si alguien los
importa, o si algún archivo que no sea el puente pide algo a la red.
Cuatro formas de llenar la bandeja, todas contra el mismo lector:
Un aviso cuando venga un pago fijo, cuando esté por vencer la fecha límite de una tarjeta, y cuando lleves varios correos sin confirmar. Nada más: una app que avisa de todo se apaga a los tres días y no se vuelve a encender. La tarjeta entra en esa lista corta porque llegar tarde ahí no es un recargo: es perder el periodo sin intereses sobre todo el saldo. Se enciende en Ajustes —nunca se pide el permiso al abrir— y en Android los atajos del ícono llevan directo a pegar un aviso o a capturar un gasto.
Y aquí va lo que casi ninguna app dice: con la app cerrada, esto no te despierta. Ningún sitio web puede hacerlo de forma fiable —Periodic Background Sync no existe en iOS y en Chromium pide app instalada y uso frecuente—, así que el canal que de verdad llega con la app cerrada es el correo diario del puente. Está escrito así en Ajustes, en vez de prometer de más.
Lo que hay que decir antes de que alguien se ilusione: el correo no cubre todo tu dinero. Nu manda correo de las transferencias que envías, pero no de las compras con tarjeta. HSBC solo avisa de operaciones arriba de $1,500, así que los gastos chicos no llegan. Banorte, Santander, Banamex, Mercado Pago, DiDi y OXXO sí avisan completo. La app lo dice en Ajustes, banco por banco, en vez de prometer de más.
node --test pruebas/*.test.js # toda la suite: sin red, sin API, sin gastar un peso
node herramientas/armar.mjs # arma index.html y finanzas.html desde motor/ e interfaz/
node herramientas/humo.mjs # navegador real: disco, sin almacenamiento, e instalada
node herramientas/logo.mjs # solo si cambia el logo
El armado falla ruidosamente ante lo que produciría un HTML roto en silencio: un módulo
que existe pero nadie metió en la lista, dos nombres de nivel superior repetidos, un
import sin resolver, o un resultado que no compila.
La prueba de navegador corre tres escenarios: la app abierta desde el disco, servida en un navegador que no deja guardar nada, e instalada y abriendo con la red apagada.
Tres capas, porque cada una atrapa lo que las otras no:
| Capa | Qué comprueba |
|---|---|
| Ejemplos | los casos concretos que ya se rompieron una vez |
Corpus (pruebas/correos/) | un archivo por aviso real, con lo que debe salir de él. Añadir un banco es añadir dos archivos, no escribir código |
Invariantes (pruebas/invariantes.test.js) | lo que debe cumplirse para cualquier entrada, sobre miles generadas con semilla fija: que nunca lance, que nunca invente dinero (el monto que devuelve tiene que estar en el texto), que la fecha siempre exista en el calendario, que canonizar sea idempotente, y que "confianza alta" signifique de verdad que no quedó nada que revisar |
La última capa incluye un candado de rendimiento: leer una entrada patológica —60,000 caracteres, miles de disparadores encadenados— debe tardar menos de 50 ms. Los topes de los cuantificadores son lo que evita el backtracking catastrófico, y esa prueba avisa el día que alguien afloje uno.
motor/ cálculo puro, sin DOM: dinero, ciclos, presupuesto, ahorro, metas, fijos, deudas,
tarjetas de crédito y compras a meses, lectura de avisos, recibo de nómina,
bandeja, aprendizaje, recurrentes, tendencia, fusión y qué merece un recordatorio
almacen/ persistencia detrás de 4 métodos, con adaptadores intercambiables
interfaz/ plantilla, estilos, render, teclado de efectivo, lector de capturas y el logo
ocr/ el motor que convierte una captura en texto (lo único que no escribimos nosotros)
pruebas/ node --test: ejemplos, corpus de avisos e invariantes sobre entrada generada
herramientas/armar.mjs (build), humo.mjs (navegador) y logo.mjs (íconos)
puente/ el script de Google Apps Script que lee el correo, con sus instrucciones
publicar/ la variante para publicar en un enlace privado
Los archivos de la raíz (index.html, sw.js, manifest.webmanifest, los íconos) son
salida generada: se regeneran con armar.mjs y no se editan a mano.
Gerardo Barrera · perfil