IEM

Amazon Spending Tracker

En línia
  • Despesa anual a Amazon amb la variació respecte a l'any anterior, el nombre de comandes, la mitjana per comanda i un gràfic de barres per mes.
    Despesa anual i desglossament per mes
  • La mateixa vista de resum en tema clar.
    La mateixa vista en tema clar
  • Llista de les darreres comandes amb data i import, etiquetades com a reemborsament, subscripció o compra general.
    Darreres comandes, amb reemborsaments i subscripcions a part
  • Revisió manual: dos correus amb un import que no s'ha pogut llegir, cadascun amb un camp per introduir-lo.
    Revisió manual dels imports que el correu no deixa llegir
  • Pantalla de connexió: explica que cal accés de només lectura a Gmail per buscar les confirmacions d'Amazon.
    Connexió amb Gmail, amb permís de només lectura

Extensió Chrome MV3 que calcula i desglossa la despesa anual a Amazon a partir de les confirmacions de Gmail, amb OAuth de només lectura, deduplicació i emmagatzematge local.

  • Deduplicació per número de comanda, per no comptar dues vegades els correus d'una mateixa compra.
  • Sincronització incremental cada hora i escaneig complet setmanal.
  • Exportació a .xlsx generada sense dependències.
  • Interfície en castellà i anglès; les dades no surten del navegador.

El problema

Amazon no ensenya quant portes gastat l'any. Està repartit entre comandes, devolucions i diversos comptes de país, i l'única vista completa que existeix són els correus de confirmació, que sí que són tots junts a la bústia. El problema era llegir-los sense convertir-los en un altre lloc on les teves compres estan desades.

El meu paper

Tot: l'extensió, l'analitzador de correus, la interfície, la publicació a la botiga i la política de privacitat.

Decisions

  1. Llegeix el correu, i Amazon no el veu mai

    L'extensió demana tres permisos —identitat, emmagatzematge i alarmes— i com a amfitrions només les API de Google, amb l'àmbit de Gmail de **només lectura**. No pot llegir cap pàgina que visitis, ni la d'Amazon. L'alternativa òbvia era raspar l'historial de comandes des del navegador, i això exigeix permís sobre el domini: un permís que ningú pot verificar que facis servir només per a això.

  2. La clau de deduplicació és el número de comanda

    Una comanda genera diversos correus —confirmació, enviament, lliurament, a vegades un per paquet— i comptar-los per correu multiplica la despesa. La clau és el número de comanda, i només quan no apareix es cau a l'identificador del missatge. A l'inrevés —deduplicar per import i data— ajunta dues compres iguals del mateix dia, que és un error més difícil de veure perquè el total sembla raonable.

  3. L'.xlsx s'escriu a mà, sense dependències

    Un .xlsx és un ZIP amb diversos XML a dins, i la política de seguretat d'una extensió prohibeix carregar llibreries externes: ficar-ne una de full de càlcul no era una opció. Un CSV sí que ho era, però no admet capçaleres amb format, amplades de columna, filtres ni fila de totals, que és just el que es mira en una exportació de despeses. Les entrades del ZIP van sense comprimir: és vàlid, el codi es queda síncron i els fitxers són de pocs KB.

  4. Incremental cada hora, complet cada setmana

    Un escaneig anual de la bústia són desenes de megabytes, així que l'habitual és demanar només el nou. Però un correu que va arribar mentre l'extensió estava aturada, o un que Gmail va reclassificar després, no torna a aparèixer mai en una consulta incremental. El repàs complet setmanal és el que recull això; sense ell, el total es queda curt i ningú sap per què.

Resultat

  • Publicada a la Chrome Web Store, amb 21 mercats d'Amazon i 15 divises reconegudes i la interfície en castellà i anglès.
  • 2 628 línies en sis mòduls i zero dependències en temps d'execució: el que s'instal·la és el que està escrit, inclòs el generador de fulls de càlcul.
  • Set fitxers de proves sobre l'executor de Node, sense framework: l'analitzador, les comandes, la interfície i l'.xlsx es comproven a cada canvi.

Què canviaria

Vaig donar per fet que el difícil era llegir els correus, i el difícil va ser publicar: la política de privacitat, la justificació de cada permís, les captures, els textos de la fitxa i la revisió de Google. Vaig acabar escrivint una llista de comprovació per a la botiga **després** de passar-hi, que és l'ordre equivocat. El que faria diferent és llegir els requisits de publicació abans de decidir l'arquitectura, perquè alguns —els permisos, sobretot— condicionen el disseny i no l'embolcall.