Playbook · Castañer
Guia operativa de l'e-commerce

El centre de comandament, el negoci en directe.

El Dashboard Castañer és el lloc on totes les dades de la botiga online —vendes, comandes, stocks, tràfic, devolucions, fulfillment— conflueixen, vives les 24 hores. Una sola font de veritat, sempre actualitzada, en la qual es pot confiar cegament.

Playbook v1 Juny 2026 Dashboard Castañer
00
Manifest

El comandament de control de l'e-commerce de Castañer

El Dashboard Castañer és el lloc on totes les dades de la botiga online —vendes, comandes, stocks, tràfic, devolucions, fulfillment— conflueixen en una sola veritat, viva les 24 hores del dia.

No és un informe que es mira un cop al mes. És el pols diari del negoci: el primer que s'obre al matí i el que respon, en segons, la pregunta que importa en cada moment. Una sola font de veritat, sempre actualitzada, en la qual es pot confiar cegament. Aquesta confiança és tot el projecte; tota la resta —l'arquitectura, els automatismes, els agents— existeix per protegir-la.

01
Visió ràpida

El projecte en 30 segons

Què és. Un dashboard intern 24/7 de KPIs operatius per a castaner.com, la botiga online de Castañer (marca catalana de calçat, fundada el 1927).

Per a qui. L'equip d'e-commerce de Castañer. Va néixer com a eina d'un sol usuari i avui és multi-usuari amb rols: gestió, agència, direcció, operacions, marketing i l'equip de botiga UK, cadascun amb la seva vista.

Quin problema resol. Castañer ven per molts canals i mercats; les dades viuen escampades entre Shopify, Klaviyo, GA4 i REVENI, sovint amb criteris que no quadren entre ells. El dashboard les unifica, les fa consistents i les serveix consolidades, sense que ningú hagi d'exportar Excels ni recalcular res.

Fets clau

7
mercats: ES · FR · IT · UK · US · GR · EU_REST
2
botigues Shopify: principal (EUR) + internacional (UK, GBP)
~20
processos automàtics: snapshots, sync, còpies, emails, auditoria
4
subagents IA de Claude Code
3
idiomes complets: CA / EN / ES (~1.295 claus c/u)
FetDetall
MercatsES · FR · IT · UK · US · GR · EU_REST (la resta de la UE/món)
CanalsWeb (Shopify) · Marketplaces · Botigues físiques (POS, 10+ punts)
2 botigues ShopifyBotiga principal (EUR) + botiga internacional (UK, GBP)
IntegracionsShopify · Klaviyo · GA4 · REVENI · GLS/carriers
IdiomesTrilingüe complet CA / EN / ES (~1.295 claus per idioma)
Automatismes~20 processos automàtics: snapshots, sync, còpies de seguretat, 2 emails automàtics, auditoria diària
Agents IA4 subagents de Claude Code: redactor de mails, 2 traductors, auditor de dades
02
Regles d'or

Principis i regles d'or

Principis no negociables. Cadascun ha nascut d'un error real; seguir-los és el que manté el dashboard fiable i mantenible.

2.1

Les dades no s'inventen mai

Tot el que s'afirma surt d'una xifra real. Quan una vista, un email o el xat necessiten un número, llegeixen el camp ja publicat al snapshot de dades; no tornen a recalcular-lo pel seu compte.

Per què. Quan un email o una pantalla recalcula una xifra pel seu compte, acaba divergint de la resta: el mateix KPI surt amb dos valors lleugerament diferents, o una comparativa contra l'any passat dispara una falsa alarma. La regla: per quadrar, llegeix el valor ja publicat, no repliquis la lògica del càlcul.
2.2

Tot text passa per i18n (CA/EN/ES)

Cap text es codifica directament ("hardcoded"). Tot va a través d'un diccionari únic amb una clau per a cada frase i la seva traducció als tres idiomes (català, anglès i castellà).

Per què. L'idioma s'assigna per usuari. Un text fixat en un sol idioma surt sempre en català i trenca l'experiència de l'usuari anglès o castellà. Text nou = sempre la clau als 3 idiomes (via els agents traductors).
2.3

Els informes són autocontinguts

Cada informe monogràfic porta les seves dades incrustades dins el propi document. Es desa sempre la versió AMB dades, mai una plantilla buida pendent d'omplir.

Per què. Un informe que depèn de carregar les dades a part és fràgil: si la càrrega falla, l'informe es queda en blanc. Amb les dades ja incrustades, l'informe és immune a aquest problema i mostra sempre la foto del moment en què es va generar.
2.4

Un únic procés de desplegament controlat

Els canvis arriben a producció sempre pel mateix camí reproduïble i versionat. Mai es modifiquen fitxers directament al servidor saltant-se aquest procés.

Per què. Tocar fitxers a mà fora del flux habitual deixa el sistema en un estat incoherent i pot bloquejar en silenci les actualitzacions posteriors. Un sol camí, sempre el mateix, fa que cada desplegament sigui previsible i fàcil de revertir.
2.5

Col·lisions de funcions JS

El codi del frontend viu repartit en diversos mòduls que comparteixen un únic espai de noms global. Si dos mòduls defineixen una funció amb el mateix nom, una sobreescriu l'altra silenciosament.

Per què. Una col·lisió d'aquest tipus pot fer sobreviure un error durant moltes versions sense que ningú se n'adoni. Regla: abans de crear una funció auxiliar, comprovar que el nom no s'usa ja en cap altre mòdul; si col·lisiona, posar-li un nom específic del context.
2.6

Consistència visual via CSS global

Tots els blocs amb el patró títol → descripció → filtres tenen el mateix espaiat vertical, governat per shared.css. Amplada uniforme (width:90%; max-width:1900px).

Per què. Mai margin-top inline als banners o filtres. Un bloc nou amb aquesta estructura no cal estilar-lo: el CSS global ja el fa quadrar.
2.7

Colors només via variables CSS

Hi ha dark mode (per defecte) i light mode (monocrom estricte: negre/blanc/grisos, només verd i vermell per a positius/negatius). Mai hardcodejar colors: sempre var(--xxx).

Per què. Perquè s'adapti al tema. Excepció: Chart.js no resol var() al canvas → dins configs de gràfics s'usen grisos neutres literals que funcionen als dos temes.
2.8

Les API keys read-only no es roten

Per a keys de tercers (Klaviyo, Shopify) amb scope només lectura, si s'exposen accidentalment no es roten: el risc és limitat (es poden llegir dades, no modificar res).

Per què. Les keys read-write o amb permisos sensibles sí que s'han de rotar.
2.9

UK és un món a part

UK té la seva pròpia botiga, magatzem, Klaviyo i moneda (GBP→EUR). Es veu a Realtime, Negoci, Producte i "Operacions UK".

Per què. S'EXCLOU d'Operacions, Stocks, Analítica i CRM del shop principal (les seves comandes no afecten la nostra logística). Les vendes LY pre-abril 2025 venen d'un override d'Excel (la BD no és fiable).
03
Arquitectura

El sistema d'un cop d'ull

El dashboard és un pipeline de 4 capes. La clau de tot és la capa de snapshots: cap pantalla ni email toca mai la base de dades en viu.

Les 4 capes · flux de dades

CAPA 1Fonts
Shopify botiga principal Shopify botiga UK Klaviyo email/SMS, campanyes, flows GA4 canals d'adquisició REVENI devolucions/RMA GLS/carriers (tracking) ECB (FX GBP)
processos automàtics
CAPA 2Base de dades unificada
comandesdevolucionsinventari sessionsanalítica Klaviyo / CRMvendes POS funnel UKusuaris
publicació cada ~60s
CAPA 3Snapshots de dades publicats
realtimeanalíticastocks operacionsbudgetCRM Klaviyodevolucionsstock UK
accés amb sessió
CAPA 4aFrontend
12 pàgines HTML + 9 mòduls JS refresc 90s (Realtime) 14 min (comandes/stocks)
CAPA 4bEmails · Xat · Informes
Email diari/setmanal (insights) Manuel (xat) llegeix els mateixos JSON Informes públics monogràfics

El patró snapshot · per què existeix

El frontend, l'email diari i el xat Manuel no consulten mai la base de dades en viu: llegeixen els mateixos snapshots de dades que es regeneren periòdicament en segon pla.

  • Una sola font de veritat. És impossible que el dashboard, l'email i el Manuel mostrin xifres diferents: tots llegeixen el mateix camp del mateix snapshot.
  • Velocitat. Llegir un snapshot ja preparat és gairebé instantani; tornar a calcular-ho tot contra la base de dades seria molt més lent.
  • No carrega la base de dades, que ja està ocupada capturant dades noves contínuament.
  • Consistència temporal. Tots veuen la mateixa foto del mateix instant.
🌍
On viu tot. El dashboard s'allotja en un servidor al núvol i és accessible de forma privada a través d'una URL pròpia amb connexió segura (HTTPS). Tot l'accés requereix iniciar sessió.
⚠️
Optimització clau. El snapshot de Real Time havia crescut massa i trigava a carregar. Es va alleugerir enviant al navegador només el detall recent de comandes; els mesos passats es carreguen sota demanda quan l'usuari els necessita.
04
Producte

Les pàgines, en clau de negoci

Cada pestanya respon una pregunta de negoci. "Qui la veu" indica els rols amb accés (l'admin ho veu tot).

Real Time
"Què està passant ARA mateix?" Vendes, comandes, conversió d'avui en viu (refresc 90 s).
Qui: Tothom
Negoci
"Anem bé respecte al pressupost i a l'any passat?" Progrés sobre budget, indicadors per país, mes/any en curs.
Qui: Gestió, agència, direcció, marketing
Producte
"Quins models es venen i quins es demanen quan no n'hi ha?" Rànquings, mix i devolucions per model, tot per 4 canals (Web · Botigues · Marketplaces · Total).
Qui: Tothom (operatiu)
Operacions
"Com va el back-office?" Tres vistes en una pestanya: Comandes (fulfillment, enviaments encallats, PUDO), Devolucions (motius REVENI + cicle del RMA) i Stocks (inventari, alertes de restock/talles/deadstock, evolució).
Qui: Gestió, agència, operacions
Operacions UK
"Com va la botiga UK?" Negoci + funnel del dia + stock del magatzem del Regne Unit.
Qui: Equip UK, gestió, agència
BBDD
"Com està la nostra base de dades de clients?" Subscriptors, altes/baixes, compradors FY, estat Klaviyo.
Qui: Gestió, agència, marketing
CRM
"Què funciona del nostre email marketing?" Top campanyes/flows per revenue, subjects, comparativa revenue TY/LY.
Qui: Gestió, agència, direcció, marketing
Analítica
"On perdem els visitants pel camí?" Funnel (sessions→cistella→checkout→compra), canals d'adquisició, evolució mensual.
Qui: Gestió, agència, direcció, marketing
Informes
"On són els informes monogràfics?" Directori d'informes (Member Days, Checkout US, etc.).
Qui: Admin i gestor
Admin
"Qui té accés i a què?" Gestió d'usuaris, rols, permisos, subscripcions a emails, seguiment d'activitat.
Qui: Només admin
🎙️
El xat Manuel (no és una pestanya de dades) respon en llenguatge natural qualsevol pregunta sobre les xifres del dashboard, llegint els mateixos snapshots JSON. Té veu (micròfon + lectura en veu alta).
05
Automatització

Els ritmes automàtics

Tot funciona sol gràcies a una vintena de processos automàtics. Aquesta és la jornada d'un dia normal (hora local).

contínu
Captura de comandes
Recull comandes, devolucions i seguiment d'enviaments de Shopify cada pocs segons
60 s
Publicació de snapshots
Regenera els snapshots de dades que llegeixen les pantalles
10 min
Sincronització UK
Comandes de la botiga UK + conversió de divisa GBP→EUR
15 min
Inventari
Captura l'inventari de Shopify (+ històric per referència)
15 min
Analítica
Captura sessions, funnel i dades per país
30 min
Sincronització Klaviyo
Sync incremental de Klaviyo (newsletter + SMS + històric)
cada hora
Sessions
Sessions de tràfic dels 2 shops, amb el mercat correcte
cada 2 h
Stock i funnel UK
Stock UK + funnel UK del dia
03:30
Còpia de seguretat
Còpia de seguretat diària de la base de dades (retenció 14 dies)
04:00
Compradors FY
Reconstrucció de compradors de l'any fiscal (creuament BBDD↔Klaviyo)
04:30
Marketing Klaviyo
Campanyes + flows dels últims 12 mesos
04:45
Back-in-Stock
Cohort de sol·licituds per falta d'stock dels últims 90 dies
05:15
Devolucions
Baixa tot l'any fiscal de devolucions de REVENI
07:30
Vendes POS
Refà les vendes de botiga física per botiga i dia
07:45
🛡️ Auditoria diària
Auditoria de coherència dels KPIs; email d'alerta NOMÉS si hi ha un problema real
08:00
✉️ Email diari
Briefing diari redactat per l'agent redactor
dl 08:05
✉️ Email setmanal
Resum setmanal més detallat, els dilluns
dl 09:30
Còpia externa
Còpia de seguretat de la base de dades desada fora del servidor
:05 h
Informe Checkout US
Regenera l'informe horari del test Checkout US
congelat
GA4
GA4 reactivable 1×/dia ~03:00 (només canals d'adquisició)
🧭
Ordre intencionat al matí. Primer els snapshots de la nit (CRM, Klaviyo, devolucions, POS) → després l'auditor (07:45) valida que tot quadra → i només llavors surt l'email diari (08:00), ja sobre dades verificades.

El calendari de comunicació

Els emails d'insights tenen en compte el calendari de comunicació (campanyes, Early Access i Rebaixes per mercat). Serveix per contextualitzar les comparatives vs l'any passat: sovint una caiguda vs LY no és una alarma sinó un desplaçament de calendari.

📅
Exemple típic. La web pot caure de manera marcada vs l'any passat un dia concret simplement perquè l'any anterior aquell dia coincidia amb l'inici de rebaixes (un pic), mentre que enguany la demanda s'havia avançat a l'Early Access dels dies previs. El mateix passa per mercat: si un país obre l'Early Access més tard que l'any passat, la comparativa d'aquell dia sembla dolenta sense que hi hagi cap problema real de conversió.

Manteniment manual: quan arriba un calendari de comunicació nou, s'afegeix l'entrada del mes corresponent. Detall de marca: Castañer NO fa Black Friday (posicionament "NO Black Friday").

06
Arquitectura

Decisions clau i el perquè

Registre de decisions d'arquitectura. Format: Decisió → Context → Per què.

🗂️Snapshots de dades en lloc de la base de dades en viu
Context
El frontend, els emails i el xat necessiten dades.
Per què
Una sola font de veritat (impossible que divergeixin xifres), molta més velocitat, no es carrega la base de dades (ocupada capturant dades noves) i tots veuen la mateixa foto temporal. És el principi central de tot el sistema.
Conversió realtime = comandes ÷ visitants
Context
La tassa de conversió de Real Time.
Per què
La conversió que reportava directament la font externa barrejava mercats (donava xifres absurdes a UK) i arribava amb hores de retard. En comptes d'això es calcula com comandes ÷ visitants × 100 amb els mateixos números que es VEUEN a la pantalla → quadra a ull i és verificable.
🔑Accés multi-usuari amb rols
Context
El dashboard l'utilitzen diversos perfils (gestió, agència, direcció, operacions, marketing, equip UK) amb necessitats diferents.
Per què
Cada usuari inicia sessió i veu només les pàgines que li corresponen segons el seu rol; l'accés es valida al servidor. L'experiència de login es va cuidar perquè estigui a l'altura d'una marca de moda.
🤖Emails redactats amb la subscripció de Claude Code (zero API)
Context
Els emails diaris els redacta un agent d'IA i calia un model de cost sostenible.
Per què
Es redacten amb la subscripció de Claude Code, no amb l'API de pagament → redacció sense consumir crèdits. El sistema calcula els fets, l'agent redactor escriu, els traductors tradueixen i el sistema envia.
🇬🇧El Regne Unit, com un món a part
Context
El Regne Unit té la seva pròpia botiga, magatzem i moneda.
Per què
El funnel del shop principal no representava bé el Regne Unit. Per això es captura el funnel, les vendes i el tràfic directament de la botiga UK, amb el seu propi criteri (i un ajust manual per a les dades històriques anteriors a la migració de botiga).
📅Calendari de comunicació als insights
Context
Caigudes vs LY que semblaven alarmes.
Per què
Moltes són desplaçaments de calendari (Early Access avança la demanda). Donar el calendari al redactor permet explicar-ho per mercat en lloc de fer saltar falses alarmes.
🌐i18n trilingüe CA/EN/ES
Context
El dashboard l'usa equip intern + agència, en idiomes diferents.
Per què
Tot text passa per diccionari → l'idioma s'assigna per usuari i el dashboard s'obre directament en la seva llengua. El manuel (xat) queda en català per disseny.
🛡️Auditor de dades proactiu
Context
Hi havia números mal calculats que l'equip havia de detectar a mà.
Per què
Un motor de regles audita els snapshots cada dia a les 07:45; si hi ha troballes, la IA les verifica contra les dades reals i descarta falsos positius; només envia alerta si en queda alguna de real. "Contrasta abans d'afirmar", automatitzat.
07
Intel·ligència

Els agents de Claude Code

Quatre subagents especialitzats de Claude Code, cadascun amb una funció concreta.

✍️
redactor-mails
Redacta el text del briefing diari/setmanal en català, amb el to de la casa i regles anti-invenció (no recalcula números, només els interpreta). Corre amb la subscripció, no l'API.
Quan: de manera automàtica cada dia (08:00) i cada dilluns (08:05). Manualment, per generar qualsevol resum/email basat en dades del dashboard.
🇬🇧
traductor-angles
Sincronitza les traduccions CA→EN del diccionari d'idiomes i tradueix qualsevol text a l'anglès amb el glossari e-commerce canònic.
Quan: s'afegeix text català nou (crear-ne la versió anglesa) o cal versió anglesa de qualsevol text.
🇪🇸
traductor-castella
Igual que l'anterior però CA→ES (castellà neutre, evita catalanismes).
Quan: s'afegeix text nou (crear-ne la versió castellana) o cal versió castellana.
🛡️
auditor-dades
Només lectura. Verifica un número/card/KPI/afirmació contra les dades reals i el snapshot; dictamina ✅/⚠️/❌ amb evidència, diagnostica la causa i proposa correcció (sense aplicar-la).
Quan: un valor fa dubtar, o per validar un bloc/pàgina abans de confiar-hi. També corre sol cada dia (07:45).
08
Referència

Glossari i convencions

Canals

TermeDefinició
WEBVendes de la botiga online (web + app). Tots els mercats, inclòs UK.
MARKETPLACESVendes a marketplaces. Imports petits; el senyal real és que la majoria no arrenquen (només El Corte Inglés factura de manera consistent).
BOTIGUES / POSVendes de botiga física, per botiga. Fora dels KPIs online.

Mercats

ESFRIT UK (botiga internacional) USGR EU_REST (la resta)

Els mercats principals i els del seguiment mensual inclouen UK.

Mètriques

TermeSignificat
Vendes netes (pre-IVA)Suma de les línies de comanda (preu menys descomptes), sense IVA ni enviament. Mètrica de referència.
Brut vs NetEl KPI gran "Vendes avui" + cards de mercat = BRUT (no resta devolucions). Les taules de detall + Objectius/Mensual = NET (sí resten). L'email diari usa BRUT.
LY (Last Year)Mateix dia de l'any anterior, llegit del snapshot (no de la base de dades en viu).
MTDMonth to date — mes en curs acumulat.
FY (Fiscal Year)Any fiscal de Castañer: agost → juliol.
Same-storeCreixement de botigues obertes els 2 anys (exclou les noves i les tancades). El % brut de botigues l'inflen les noves.
Visitants vs SessionsVisitants = usuaris únics (lleugerament per sota de les sessions). Sessions = comptabilitzades amb el mercat correcte. Per UK, els visitants es deriven de les sessions.
Conversió (realtime)comandes ÷ visitants × 100 (mai la conversió que reporta directament la font externa).

Altres termes

  • Funnel: Sessions → Cistella → Checkout → Compra (font Shopify; la "fitxa de producte" prové de GA4).
  • BIS / Back-in-Stock: sol·licituds de "avisa'm quan torni" (Klaviyo). "Diners perduts" = sol·licituds no convertides × preu mig (sense IVA).
  • RMA: procés de devolució (estat, mètode, transportista, dates). La talla és el principal motiu de devolució.
  • PUDO / pickup point: paquet deixat en un punt de recollida; detectat a posteriori (estat virtual "Pendent recollida").
  • PUDO ≠ checkout: Castañer no ofereix pickup points de tercers al checkout.