IEM

Amazon Spending Tracker

En línea
  • Gasto anual en Amazon con la variación respecto al año anterior, el número de pedidos, la media por pedido y un gráfico de barras por mes.
    Gasto anual y desglose por mes
  • La misma vista de resumen en tema claro.
    La misma vista en tema claro
  • Lista de los últimos pedidos con su fecha e importe, etiquetados como reembolso, suscripción o compra general.
    Últimos pedidos, con reembolsos y suscripciones aparte
  • Revisión manual: dos correos cuyo importe no se pudo leer, cada uno con un campo para introducirlo.
    Revisión manual de los importes que el correo no deja leer
  • Pantalla de conexión: explica que hace falta acceso de solo lectura a Gmail para buscar las confirmaciones de Amazon.
    Conexión con Gmail, con permiso de solo lectura

Extensión Chrome MV3 que calcula y desglosa el gasto anual en Amazon desde las confirmaciones de Gmail, con OAuth de solo lectura, deduplicación y almacenamiento local.

  • Deduplicación por número de pedido, para no contar dos veces los correos de una misma compra.
  • Sincronización incremental cada hora y escaneo completo semanal.
  • Exportación a .xlsx generada sin dependencias.
  • Interfaz en español e inglés; los datos no salen del navegador.

El problema

Amazon no enseña cuánto llevas gastado en el año. Está repartido entre pedidos, devoluciones y varias cuentas de país, y la única vista completa que existe son los correos de confirmación, que sí están todos juntos en el buzón. El problema era leerlos sin convertirlos en otro sitio donde tus compras están guardadas.

Mi papel

Todo: la extensión, el analizador de correos, la interfaz, la publicación en la tienda y la política de privacidad.

Decisiones

  1. Lee el correo, y Amazon no lo ve nunca

    La extensión pide tres permisos —identidad, almacenamiento y alarmas— y como anfitriones sólo las APIs de Google, con el ámbito de Gmail de **sólo lectura**. No puede leer ninguna página que visites, ni la de Amazon. La alternativa obvia era raspar el historial de pedidos desde el navegador, y eso exige permiso sobre el dominio: un permiso que nadie puede verificar que uses sólo para eso.

  2. La clave de deduplicación es el número de pedido

    Un pedido genera varios correos —confirmación, envío, entrega, a veces uno por paquete— y contarlos por correo multiplica el gasto. La clave es el número de pedido, y sólo cuando no aparece se cae al identificador del mensaje. Al revés —deduplicar por importe y fecha— junta dos compras iguales del mismo día, que es un error más difícil de ver porque el total parece razonable.

  3. El .xlsx se escribe a mano, sin dependencias

    Un .xlsx es un ZIP con varios XML dentro, y la política de seguridad de una extensión prohíbe cargar librerías externas: meter una de hoja de cálculo no era una opción. Un CSV sí lo era, pero no admite cabeceras con formato, anchos de columna, filtros ni fila de totales, que es justo lo que se mira en una exportación de gastos. Las entradas del ZIP van sin comprimir: es válido, el código se queda síncrono y los ficheros son de pocos KB.

  4. Incremental cada hora, completo cada semana

    Un escaneo anual del buzón son decenas de megabytes, así que lo habitual es pedir sólo lo nuevo. Pero un correo que llegó mientras la extensión estaba parada, o uno que Gmail reclasificó después, no vuelve a aparecer nunca en una consulta incremental. El repaso completo semanal es el que recoge eso; sin él, el total se queda corto y nadie sabe por qué.

Resultado

  • Publicada en la Chrome Web Store, con 21 mercados de Amazon y 15 divisas reconocidos y la interfaz en castellano e inglés.
  • 2 628 líneas en seis módulos y cero dependencias en tiempo de ejecución: lo que se instala es lo que está escrito, incluido el generador de hojas de cálculo.
  • Siete ficheros de pruebas sobre el ejecutor de Node, sin framework: el analizador, los pedidos, la interfaz y el .xlsx se comprueban en cada cambio.

Qué cambiaría

Di por hecho que lo difícil era leer los correos, y lo difícil fue publicar: la política de privacidad, la justificación de cada permiso, las capturas, los textos de la ficha y la revisión de Google. Acabé escribiendo una lista de comprobación para la tienda **después** de pasar por ella, que es el orden equivocado. Lo que haría distinto es leer los requisitos de publicación antes de decidir la arquitectura, porque algunos —los permisos, sobre todo— condicionan el diseño y no el envoltorio.