En esta página 00-day-brief 0%

00-day-brief.md

00 — Day brief · 2026-08-12 · PRIMA

Decisiones ALS-2 BRIEF

CampoValor
Fecha2026-08-12
NombrePRIMA
ComplejidadNivel 3 (no L2 consecutivo tras CANTERA)
SectorSeguros / micro-corredurías
TipoSaaS B2B: mesa de siniestros + pólizas multi-rol JWT
PlataformaWeb responsive (desktop staff + mobile agente)
RegistroR-HY — marketing sobrio + tool data-dense innovadora
ShellS-SIDE — sidebar app / dashboard
HomeH-DATA — dashboard-first (métricas + cola, sin hero marketing genérico)
FlujoF-KAN — tablero kanban de siniestros por estado
Por qué no CANTERANo S-BOTTOM/H-WIZARD/F-ONB; no construcción; no wizard de campo
Por qué no PLIEGONo S-MIN/H-FULL/F-STORY; no moda editorial

Terna unicidad

R-HY · S-SIDE · H-DATA · F-KAN

Directivas

  • D-P0-01…08, D-P1-01 (≥12 UX Paper), D-P0-08 (≥10 UI), D-P1-05 JWT multi-rol
  • Tipografía Outfit + Source Serif 4 (evitar Archivo, Fraunces/Figtree, Syne, Literata, Sora)
  • Paleta slate / ice / teal trust / coral — no limestone/copper, no wine, no maritime navy, no lime, no sage

Alcance L3 must

  1. Landing híbrida corta (propuesta de valor correduría) + login
  2. Dashboard data-first (KPIs + atajos)
  3. Kanban de siniestros (OPEN → IN_REVIEW → INFO_NEEDED → APPROVED → CLOSED / REJECTED)
  4. Detalle siniestro + cambio de estado con audit note
  5. Listado/búsqueda de pólizas
  6. Roles JWT: AGENT (agente), BACKOFFICE (tramitador), CLIENT (vista limitada de sus siniestros)
  7. Empty / loading / error / mobile claim board
  8. ≥12 UX + ≥10 UI artboards Paper

Supuestos documentados

  • No somos una aseguradora: somos la mesa operativa de la correduría (intermediación).
  • Volumen modelo: 15–40 siniestros abiertos por correduría pequeña; 1–3 agentes.
  • No hay pasarela de pago en L3 slice (pólizas seed; cobro fuera de alcance).

00-paper-reference.md

Paper reference · PRIMA

URLhttps://app.paper.design/file/01KZTCHNZ8PSNBMX9Q42CEFDW5
File ID01KZTCHNZ8PSNBMX9Q42CEFDW5

UX-count: 12 UI-count: 11

UX process (prefijo UX- · mínimo 12)

IDNombreContenido
UX-00Process coverIdentidad PRIMA + terna
UX-01StakeholdersDueño, agente, backoffice, cliente
UX-02PersonasElena, Marcos, Laura
UX-03JTBDCuando hay siniestro…
UX-04StoriesMust kanban/create/portal
UX-05JourneyLanding→portal
UX-06BlueprintFront/back/soporte/fallos
UX-07Site map / IARutas app + portal
UX-08FlujosF1–F6
UX-09Datos + permisosER + roles
UX-10MétricasNorth star + activación
UX-11Research notesComprobado/supuesto/hipótesis

UI producto (prefijo UI- · mínimo 10)

IDNombreFlujo
UI-00Design tokensDS slate/teal
UI-01Landing hybridMarketing + preview kanban
UI-02LoginSplit trust
UI-03Dashboard dataH-DATA KPIs + S-SIDE
UI-04Kanban claimsF-KAN core
UI-05Claim detailStatus + audit
UI-06New claimAlta
UI-07Policies tableBúsqueda
UI-08Portal clientCLIENT list
UI-09Mobile kanbanMobile core
UI-10Empty error loadingSystem states

Media

  • Tokens: Outfit + Source Serif 4; ink/ice/teal/coral
  • Portfolio card: export UI-04 Kanban (producto, no UX-*)

01-project-definition.md

01 — Project definition · PRIMA

5.1 Identidad

CampoValor
NombrePRIMA
SignificadoLa prima es el compromiso; el producto ordena el después del siniestro. También evoca “primera línea” de la correduría.
EsloganSiniestros claros. Clientes informados.
Una fraseMesa operativa multi-rol para corredurías independientes: kanban de siniestros, pólizas y portal ligero del asegurado.
EjecutivaPRIMA es un SaaS B2B para micro-corredurías que aún gestionan siniestros por email y hojas de cálculo. Centraliza la cola de tramitación, estados auditables y la vista del cliente sin sustituir al core de la aseguradora.
SectorSeguros / intermediación
TipoPlataforma SaaS B2B + portal cliente
Plataforma principalWeb responsive (desktop tramitación)
SecundariasMobile web para agente en visita
MercadoEspaña (ES-es); extensible LATAM
Idioma UIEspañol
Otros idiomasCatalán/inglés (Won’t have L3)

5.2 Problema

TipoContenido
PrincipalSiniestros dispersos en WhatsApp, email y Excel: sin estado compartido ni SLA visible.
SecundariosCliente sin visibilidad; re-trabajo entre agente y backoffice; sin historial de decisiones.
QuiénAgentes de correduría, tramitadores, asegurados.
HoyHilos de email + carpetas compartidas + Excel.
DeficienciasNo hay dueño claro del estado; no hay métricas; incumplimiento percibido de plazos.
CosteHoras de chase-up, churn de cartera, riesgo reputacional.
OportunidadTool vertical light (no core asegurador) con kanban + JWT multi-rol.

Comprobado (secundario): sector de corredurías atomizado en ES; digitalización parcial (hipótesis de mercado documentada, no encuesta propia).
Supuesto: 15–40 siniestros abiertos por oficina pequeña.
Hipótesis: kanban + notas de estado reducen tiempo medio de resolución percibido.
Decisión de diseño: no integrar APIs de aseguradoras en L3 (manual status + seed).

5.3 Objetivos

  • Negocio: activar corredurías piloto; retención por uso diario del tablero.
  • Usuario agente: abrir y mover siniestros sin fricción.
  • Usuario backoffice: priorizar cola y documentar decisiones.
  • Usuario cliente: ver estado sin llamar.
  • Producto: vertical slice JWT + kanban + pólizas + portal.
  • Experiencia: data-dense, sobrio, confiable (trust teal).
  • Técnicos: Nest+Prisma+Neon; Angular standalone+Tailwind; a11y AA.
  • No objetivos: cotización, cobro de primas, multitenancy org tree, OCR de partes, app nativa.
  • Restricciones: L3 en un día; sin pasarela de pago.
  • Riesgos: confusión con “core asegurador”; datos sensibles (PII).

5.4 Métricas

MétricaDefinición
North StarSiniestros movidos de estado por día / usuario activo
ActivaciónPrimer siniestro creado o estado cambiado en ≤24h tras login
ConversiónLanding → trial/login demo
RetenciónWAU agentes
Tiempo en estadoMediana horas por columna kanban
AbandonoSiniestros sin update >7d
CSAT portalEncuesta post-cierre (futuro)
Errores API5xx rate
Accesibilidad0 issues críticos axe en flujos core

Roles

RolCódigo JWTPuede
AgenteAGENTCrear siniestro, ver propios, mover a INFO_NEEDED
TramitadorBACKOFFICEVer todos, cualquier transición, notas de audit
ClienteCLIENTVer solo sus siniestros y estado

02-ux-research-strategy.md

02 — UX research strategy · PRIMA

Enfoque

Investigación secundaria + modelo operativo (cron): sin entrevistas inventadas.

Fuentes / razonamiento

  1. Observación de operaciones de intermediación: el valor está en estado compartido, no en tarificación.
  2. Analogías: mesas de tickets (Zendesk/Jira) adaptadas a dominio siniestro.
  3. Riesgo de datos: DNI, matrícula, IBAN → minimizar campos en UI; mask en listados.

Stakeholders (mapa)

ActorInfluenciaInterésNecesidadRiesgo
Dueño correduríaAltaAltaVisibilidad SLAResistencia a cambio
AgenteMediaAltaRapidez en campoBypass por WhatsApp
BackofficeAltaAltaCola priorizadaSobrecarga si UX densa mal
Cliente aseguradoBajaAltaTranquilidadLlamadas si portal opaco
Legal/complianceAltaMediaMinimización datosBloqueo si PII expuesta
Aseguradora (externa)MediaBajaDatos limpiosFuera de alcance L3

Personas (3)

1. Elena Vázquez — Agente (34)

  • Contexto: visita talleres y clientes; móvil + portátil.
  • Digital: media-alta.
  • Motivación: cerrar partes sin reescribir emails.
  • Frustración: “Nunca sé si backoffice ya lo cogió”.
  • Cita: “Si el estado está en la app, dejo de reenviar capturas.”
  • Escenario: registra siniestro de lunas y lo deja en OPEN.

2. Marcos Gil — Tramitador backoffice (41)

  • Contexto: oficina, 2 monitores, Excel histórico.
  • Motivación: priorizar y documentar.
  • Frustración: estados inventados en el asunto del mail.
  • Cita: “Necesito columnas, no hilos.”

3. Laura Peña — Asegurada (52)

  • Contexto: poco tiempo, poca paciencia con jerga.
  • Motivación: saber “en qué va lo mío”.
  • Frustración: “llame usted mañana”.
  • Cita: “Solo quiero ver si ya está con la compañía.”

JTBD

  • Funcional: Cuando hay un siniestro, quiero registrarlo y seguir el estado, para no perder el hilo con el cliente.
  • Emocional: Quiero sentir control y profesionalidad.
  • Social: Quiero que el cliente perciba una correduría moderna.

Historias (épicas)

E1 Kanban

  • Como BACKOFFICE, quiero ver columnas por estado, para priorizar.
    AC: 5–6 columnas; drag o botones de transición; contador por columna. MoSCoW: Must.

E2 Alta

  • Como AGENT, quiero crear un siniestro con póliza vinculada, para iniciar tramitación. Must.

E3 Portal

  • Como CLIENT, quiero listar mis siniestros y su estado legible, para no llamar. Must.

E4 Pólizas

  • Como AGENT, quiero buscar pólizas por matrícula/NIF, para vincular. Should.

Journey (agente + backoffice)

Descubrimiento landing → login → dashboard KPIs → kanban → detalle → cambio estado → cliente ve update.

Blueprint (resumen)

CapaElemento
UsuarioAgente crea; cliente consulta
FrontstageDashboard, kanban, portal
BackstageJWT, audit notes, Prisma
SoporteNeon Postgres, email (futuro)
FallosRed, 401, validación
RecuperaciónReintento, re-login, mensajes claros

03-information-architecture.md

03 — Information architecture · PRIMA

Mapa del sitio

/ (marketing hybrid)
/login
/app
  /dashboard          (H-DATA)
  /claims             (kanban F-KAN)
  /claims/:id
  /claims/new
  /policies
  /policies/:id
/portal
  /claims             (CLIENT)
  /claims/:id
  • Shell S-SIDE: Dashboard · Siniestros · Pólizas · (Salir)
  • CLIENT: solo Portal siniestros
  • Breadcrumbs en detalle

Taxonomía estados siniestro

OPENIN_REVIEWINFO_NEEDEDAPPROVEDCLOSED
Alt: REJECTED desde IN_REVIEW/INFO_NEEDED

Matriz de permisos

MóduloAGENTBACKOFFICECLIENT
DashboardVer propio scopeVer global
Claims list/kanbanVer (scope)Ver todos
Claim createNo
Claim statusLimitadoFullNo
PoliciesBuscar/verFull
Portal claimsSolo suyos

Inventario de contenido

ContenidoOwnerPrioridadUpdate
Marketing copyProductP1Raro
Labels estadoUX WriterP0Estable
Notas auditSistemaP0Cada transición
Seed demoDevP0Cada deploy

04-user-flows.md

04 — User flows · PRIMA

F1 — Login JWT

Entrada: /login → email+password → JWT+role → redirect por rol
Errores: 401 credenciales; red
Analítica: login_success, login_fail

F2 — Dashboard data-first

KPIs: abiertos, en revisión, info pendiente, cerrados 7d
Atajos: Nuevo siniestro, Ir a kanban

F3 — Kanban siniestros

Columnas por estado; card con ref, asegurado, póliza, updatedAt
Acción: abrir detalle; (backoffice) mover estado

F4 — Crear siniestro

Form: policyId, title, description, incidentDate
Validación: policy requerida, title ≥ 4
Success → detalle OPEN

F5 — Cambio de estado

Select/botones permitidos + nota opcional → audit log
Cliente ve nuevo label amigable

F6 — Portal cliente

Lista simple + detalle read-only

Estados de sistema

Empty kanban · Loading skeleton · Error red · 403 · 401 sesión

05-data-model.md

05 — Data model · PRIMA

Entidades

User

id, email, passwordHash, name, role (AGENT|BACKOFFICE|CLIENT), createdAt

Policy

id, number, holderName, holderNif, plate?, productType, status (ACTIVE|LAPSED), agentId?, createdAt

Claim

id, ref (PRM-YYYY-####), policyId, title, description, status, incidentDate, createdById, assigneeId?, createdAt, updatedAt

ClaimEvent (audit)

id, claimId, fromStatus?, toStatus, note?, actorId, createdAt

Relaciones

User 1—N Policy (agent)
Policy 1—N Claim
User 1—N Claim (createdBy)
Claim 1—N ClaimEvent

Índices

Claim(status), Claim(ref unique), Policy(number unique), Policy(holderNif), User(email unique)

Privacidad

holderNif parcialmente enmascarado en listados; no IBAN en L3.

06-tech-stack.md

06 — Tech stack · PRIMA

CapaElecciónPor qué
WebAngular standalone + TailwindCRON fijo + data UI
APINestJS + Passport JWTMulti-rol
DBNeon Postgres + PrismaServerless + migraciones
AuthJWT bearerSimple L3
Hosting (doc)API Railway/Fly; web Vercel (opcional)Documentado, no bloqueante

No usamos Firebase/Supabase Auth para no diverger del playbook ALS.

07-creative-direction.md

07 — Creative direction · PRIMA

Concepto visual

Trust desk: sobriedad de oficina de seguros moderna sin clichés de “escudos dorados”. Slate profundo, hielo, teal de confianza, coral para riesgo/rechazo.

Mood

Profesional, denso, tranquilo. Dashboard y kanban como protagonistas (H-DATA / F-KAN).

Tipografía

  • Display / serif acentos: Source Serif 4
  • UI: Outfit

Color

TokenHexUso
ink#0F172ATexto
ice#F1F5F9Fondo app
surface#FFFFFFCards
teal#0F766EPrimary
teal-soft#CCFBF1Chips
coral#E11D48Danger / REJECTED
amber#D97706INFO_NEEDED
border#E2E8F0Divisores

Anti-cliché

No stock de familias felices con paraguas; no navy marítimo RELE; no limestone CANTERA.

08-design-system.md

08 — Design system · PRIMA

Tokens

Ver creative direction + CSS variables en Angular (styles.css / tailwind theme).

Componentes

  • SideNav (S-SIDE)
  • KpiCard
  • KanbanColumn / KanbanCard
  • StatusPill (por estado)
  • DataTable (pólizas)
  • FormField / Button primary-secondary-ghost
  • EmptyState / ErrorBanner / Skeleton

Densidad

App: 8px grid; cards radius 10px; no rounded-3xl genérico.

09-content-guide.md

09 — Content guide · PRIMA

Voz

Clara, adulta, sin infantilizar. Evitar jerga de aseguradora sin glosa.

Labels de estado (cliente)

CódigoLabel UI
OPENRecibido
IN_REVIEWEn estudio
INFO_NEEDEDNecesitamos información
APPROVEDAceptado por tramitación
CLOSEDCerrado
REJECTEDNo procede

Microcopy

  • Empty kanban: “No hay siniestros en esta columna.”
  • Error red: “No pudimos cargar el tablero. Reintenta.”
  • CTA: “Nuevo siniestro”, “Mover estado”, “Ver póliza”

10-accessibility.md

10 — Accessibility · PRIMA

  • WCAG 2.2 AA objetivo
  • Contraste teal/ink sobre ice ≥ 4.5:1
  • Kanban operable por teclado (focus cards + botones de estado; drag no es único path)
  • Landmarks: nav, main
  • StatusPill no solo color (texto)
  • Focus visible 2px teal
  • Reduced motion: sin parallax

11-privacy-security.md

11 — Privacy & security · PRIMA

  • JWT short-lived; passwords bcrypt
  • Roles en claim guards
  • PII: NIF enmascarado en listas (12345678A***45678A pattern simplificado)
  • No logs de password
  • Neon SSL
  • No afirmación de cumplimiento legal definitivo (RGPD: bases lícitas a validar con cliente real)
  • Retención: claims activos + audit; borrado lógico futuro

12-analytics.md

12 — Analytics · PRIMA

EventoProps
login_successrole
claim_createdpolicyId
claim_status_changedfrom, to
kanban_viewed
policy_searchq_len
portal_claim_viewedclaimId

North Star dashboard: status transitions / day.

13-qa-test-plan.md

13 — QA test plan · PRIMA

Smoke must

  1. Login AGENT / BACKOFFICE / CLIENT
  2. AGENT crea claim
  3. BACKOFFICE mueve estado + nota
  4. CLIENT ve claim propio, no ajenos
  5. Kanban render columnas
  6. 401 con token basura

A11y spot

  • Tab order login → nav → kanban
  • Status text present

14-dev-handoff.md

14 — Dev handoff · PRIMA

Repo

prima-app — apps/api (Nest) + apps/web (Angular)

Env

DATABASE_URL=
JWT_SECRET=
PORT=3012

Scripts

npm run db:migrate
npm run db:seed
npm run api   # :3012
npm run web   # :4212

Demo users

EmailPasswordRole
agente@prima.seguropassword123AGENT
mesa@prima.seguropassword123BACKOFFICE
cliente@prima.seguropassword123CLIENT

15-roadmap.md

15 — Roadmap · PRIMA

Hecho (L3 día)

Landing, auth, dashboard, kanban, detalle+estado, pólizas, portal, Paper, seed

L4 futuro (explícito fuera de alcance hoy)

Integraciones aseguradoras, adjuntos OCR, multitenancy org, notificaciones email, métricas SLA automáticas

16-interaction-specs.md

16 — Interaction specs · PRIMA

Kanban card

  • Hover: elevación 1; focus ring
  • Click: navega a detalle
  • Transición estado: botones en detalle (no solo drag)

Side nav

  • Item activo: teal-soft bg + ink text
  • Collapse no en L3

Toasts

Success 3s; error sticky hasta dismiss

17-prototype-map.md

17 — Prototype map · PRIMA

Paper hi-fi + Angular app como prototipo clicable.

Flujos prototipados: login → dashboard → kanban → detalle → status; portal cliente.

18-completeness-audit.md

18 — Completeness audit · PRIMA

GateEstado
Day brief ternaSí R-HY·S-SIDE·H-DATA·F-KAN
Docs 00–20
UX Paper ≥12Ver 00-paper-reference
UI Paper ≥10Ver 00-paper-reference
JWT multi-rol
Kanban + estados
Empty/error/loading
Neon + seed
GitHub
Portfolio
SCORE craft ≥4Tras densificar Paper

19-backlog-completo.md

19 — Backlog · PRIMA

Must (hecho en día)

Auth, claims CRUD-ish, kanban, policies list, portal, DS tokens

Should (si tiempo)

Filtros kanban por agente; búsqueda póliza avanzada

Could

Export CSV, dark mode

Won’t L3

Pasarela pago, API aseguradoras, app nativa

20-implementation.md

20 — Implementation notes · PRIMA

  • API port 3012, web 4212
  • Prisma models User Policy Claim ClaimEvent
  • Guards RolesGuard
  • Seed 3 users, 4 policies, 8 claims across columns