Commit Graph

2 Commits

Author SHA1 Message Date
Kavi dd8931c04c Side exercise: DTE factura <-> payment reconciliation view
- scripts/build_reconciliation.py: normalizes the existing SII-RCV cross-
  reference CSV (Muralla/Murallita, 519 DTEs) into web/reconciliation.json
  with per-status / per-company / per-payer summaries.
- web/reconciliation.html: standalone reconciliation view in the money-trace
  aesthetic — KPIs (facturado, asignado, pendiente, IVA), breakdown bars,
  and a searchable/sortable table of every factura with its linked payment,
  who paid, source of funds, and confidence. Reuses logos.js for providers.
- dashboard.html: header link to the reconciliation view.

State: $15.6M facturado · 168 asignado ($6.1M) · 315 pendiente ($9.2M).
2026-06-02 18:08:24 -04:00
Kavi e0f2252124 Add Brandfetch merchant logos to dashboard
- web/logos.js: high-precision alias map (description regex -> brand domain)
  feeding the Brandfetch logo CDN; only attaches a logo when a merchant
  confidently maps to a known brand, else a coloured-initial fallback.
- Logos rendered in: top-merchants list, category breakdown rows, ledger.
- scripts/resolve-logos.mjs: offline resolver (alias + Brandfetch search) that
  measures coverage and writes merchant-logos.json. Current: 33 brands cover
  ~35% of expense txns (Uber, MercadoPago, Apple, Rappi, Santa Isabel, Copec,
  etc.); the long tail is local businesses with no brand -> fallback.
- Client ID is public (CDN); no secret key in the repo.
2026-06-02 14:41:09 -04:00