El scrape corre en el Mac con launchd porque ahí viven las cookies persistidas: la sesión se reutiliza y el banco no pide 2FA cada día.
El bot vive en Railway 24/7. Firestore es la memoria compartida: el dedup por hash evita volver a notificar un movimiento que ya pasó.
Las correcciones son texto libre («esto va al súper») y se guardan como regla, así el clasificador deja de preguntar lo mismo.