feat/energia-ux
needs attentionviewing older commit661a293 · incrementalPR #301reviewed 2026-07-16 13:30 UTC1H · 2M · 4L · 2I- Purpose
- Document the Energía product UX vision — a 7-screen minimal-decision-first platform prototype for multi-site enterprise energy consumers
- Goal
- Deliver design principles, JTBD map, detector ledger, and a working HTML prototype (7 screens + shared shell + assembler) that shows 'one question per screen, one action' as the north star for the Energía product
- Sub-goals
- SG-1: Design principles doc — psychology-of-design applied, critique of feature-maximalist approach
- SG-2: JTBD map — jobs-to-be-done for enterprise energy managers
- SG-3: Detector ledger — tracking which findings Batu surfaces
- SG-4: 7-screen HTML prototype (portfolio, budget, sites, payments, carbon, findings, site-detail) with shared shell + CSS design system
- SG-5: Assembler (assemble.mjs) to combine screen fragments into a single navigable HTML
- SG-6: CONTRACT.md for screen-builder constraints
- What
- Client anonymization pass: replaced 'Grupo Axo' → 'Cliente Demo' throughout design docs and prototype HTML, scaled site counts (266→250) and financial figures ($45.26M→$40.0M) proportionally
- Why
- Previous review flagged customer-identifying information committed to the public repo (Grupo Axo name, exact site count, spend figures)
- Areas
- docs/design+4130−0
- Blast
- 15 files, +4130 lines; all in docs/design/ — zero production code impact
Findings · 9
correctness1
Missed 'Axo' reference — anonymization incomplete
docs/design/energia-prototype/screens/findings.html:9
Line 9 still reads "Dinero en juego en la facturación CFE de Axo: $53K ya recuperado y verificado, $57K en aclaración activa con CFE". The pass replaced 'Grupo Axo' everywhere but missed this shorter 'Axo' variant. The same string propagates to energia-platform-full.html ~line 369 (the assembled output). Both files need the fix.
security2
Real venue names fingerprint the original client
docs/design/energia-prototype/screens/payments.html
The payments/portfolio screens list real Mexican retail venues: Antara, Plaza Satélite, Perisur, Toreo, Interlomas, Andares GDL, Mitikah, Puebla Angelópolis, Galerías Monterrey. This combination uniquely identifies Grupo Axo's store footprint even without the org name. Replace with generic names (e.g. 'Tienda Norte 01', 'CEDIS Zona Centro') to sever the re-identification path.
Git history preserves customer data from prior commits
docs/design/energia-prototype/
If the original prototype with 'Grupo Axo', 266 sites, and $45.26M MXN was pushed to origin before this anonymization, those commit objects remain reachable in the remote reflog/network graph. Confirm with GitHub whether any prior objects were purged; if the repo is private with no forks, risk is contained. BFG Repo-Cleaner or git filter-repo would guarantee removal.
conventions2
ROI multiplier 3.7× stale after site-count scale-down
docs/design/energia-prototype/energia-platform-full.html
The copy reads 'Vas 3.7× tu inversión anual en Batu' but after scaling from 266 → 250 sites the implied annual fee drops, making the value story $1.55M / lower-fee ~4.0×, not 3.7×. Minor for a prototype but a prospect who runs the math will notice.
Budget screen KPI rounding inconsistency ($19.4 M vs $19.44 M)
docs/design/energia-prototype/screens/budget.html
The KPI card shows '$19.4 M' while the waterfall SVG label shows '$19.44 M' — a visible discrepancy introduced by this diff. Gastado YTD is consistently '$20.2 M' / '$20.24 M'. Align to one precision level.
improvement3
'Cliente Demo' is a weak placeholder — consider a fictional company name
docs/design/energia-prototype/CONTRACT.md
"Cliente Demo" signals 'we replaced a real name' to any informed reader. A plausible fictional Mexican conglomerate name (e.g. 'Grupo Meridiano', 'RetailMX S.A.') would make the prototype more convincing in prospect presentations and remove the implicit acknowledgment.
Prototype data hardcoded across 7 files — parameterization would prevent future anonymization drift
docs/design/energia-prototype/assemble.mjs
Client name, site count, spend totals, and segment labels are duplicated across all screen HTML files. This commit missed one instance ('Axo' in findings.html) because there was no single source of truth. A lightweight client.json fixture + template-substitution pass in assemble.mjs would make future persona-switching a one-file change.
Per-segment site counts are suspiciously precise for a demo (73/51/57/37/32)
docs/design/energia-prototype/screens/portfolio.html
These uneven non-round numbers look like scaled-down real data rather than invented values. Rounder numbers (e.g. 80/60/55/35/20) would be less identifiable and more clearly illustrative.
seo1
SEO lens self-skipped — no apps/web/** files in diff
No marketing website files were modified in this incremental window.