Un motor que audita suscripciones leyendo solo los correos de facturación
SaaSClerk conecta el buzón con OAuth de solo lectura, extrae importes y avisos de renovación y marca las subidas de precio. El autor detalla el montaje con Next.js, Prisma y Neon.

Una auditoría a mano sacó siete servicios que su autor recordaba pagar. El escaneo del buzón entero encontró 23. Esa distancia es el argumento de SaaSClerk, un servicio que audita suscripciones leyendo el correo, y su creador ha detallado cómo funciona el motor: qué mensajes mira, qué guarda y qué decisiones de arquitectura sostienen la promesa de privacidad.
El primer intento fue una librería de cliente de correo con acceso IMAP directo. Se cayó por tres sitios: el rendimiento empeoraba con buzones grandes, los flujos de autenticación eran un incordio de mantener en cada proveedor y la frontera de privacidad quedaba borrosa, porque el servidor podía verlo todo.
Cómo funciona
El montaje final es Next.js con TypeScript para la aplicación y las rutas de API, Prisma como ORM y Neon Postgres como base de datos. La conexión al buzón va por OAuth con permisos de solo lectura sobre Gmail y Outlook, y los tokens se guardan cifrados con AES-256-GCM.
El escáner consulta únicamente los mensajes que encajan con patrones de facturación: asuntos con términos como "invoice", "receipt", "subscription" o "renewal", más remitentes conocidos de cobros. Una pasada ligera de lenguaje natural saca el nombre del servicio, el importe, la moneda, la periodicidad y la próxima renovación, y el usuario revisa la lista resultante. Nada fuera de esos mensajes se toca, y el contenido de los correos no se persiste: la extracción ocurre en memoria y solo sobrevive el registro estructurado.
Lo que se le escapó
La primera versión solo extraía importes. Funcionaba, pero la señal más valiosa estaba en el cambio. Los proveedores no anuncian las subidas en su página de precios; la subida vive en el aviso de renovación. A su autor le pasó con GitHub Pro, que pasó de 4 a 6 dólares al mes, y lo detectó dos meses tarde en el extracto del banco. Ahora el escáner busca señales de cambio —"will increase", "new price", "effective", junto a un valor numérico— y marca la suscripción con el importe viejo y el nuevo al lado. Si la diferencia supera el 5%, entra sola en la cola de revisión.
Encontrar el gasto es media faena; la otra es actuar antes del cobro. Los recordatorios son opt-out: al marcar una suscripción como "cancelar", el motor programa un correo 14 días antes de la siguiente fecha de facturación con el servicio, el precio y, cuando lo conoce, el enlace directo a la página de baja. Un clic en "Keep" dentro de ese correo los detiene.
Entre las decisiones que mantiene: escaneo en servidor en vez de una extensión de navegador, porque una extensión no corre con el navegador cerrado y la vigilancia de renovaciones necesita ejecutarse con una planificación; Neon en lugar de un Postgres autogestionado, por el branching de bases de datos; y nada de contraseñas IMAP, solo OAuth de solo lectura, a cambio de perder compatibilidad con algunos proveedores.
Lo que sigue abierto es el parseo de correos de facturación en otros idiomas. El conjunto de patrones nació en inglés y los primeros usuarios de otros mercados se toparon con el hueco; ampliarlo a español, francés y alemán sin debilitar la garantía de no almacenar es el trabajo en curso. El escáner destapó 4.200 dólares de gasto anual entre planes olvidados, duplicados y subidas silenciosas: la cifra es suya, de la auditoría sobre su propio buzón.


