Caso de estudio · Trabajo interno de producto

Centro de control analítico

Un dashboard analítico basado en roles, diseñado para que equipos de producto y operaciones revisen señales críticas, comparen tendencias y tomen decisiones con mayor rapidez sin depender de exportaciones frágiles ni pantallas de reporting sobrecargadas.

Prueba del proyecto

Mi rol

  • Me encargué de la arquitectura frontend, el modelo de interacción y los patrones reutilizables del dashboard desde el análisis del problema hasta la implementación.
  • Convertí necesidades de producto y operaciones en arquitectura de información por roles, contratos de estado y componentes React accesibles.
  • Trabajé entre producto, diseño y APIs para que el dashboard soportara flujos reales de decisión, no solo pantallas estáticas de reporting.

Restricciones

  • La interfaz debía soportar varios roles de usuario sin fragmentar el producto en variantes de pantalla desconectadas.
  • Los datos podían estar cargando, retrasados, vacíos por filtro, parcialmente disponibles, obsoletos o no disponibles, y cada estado necesitaba una guía clara.
  • Los gráficos y tarjetas de métricas debían seguir siendo comprensibles sin depender solo del color, hover, capturas o datasets privados.

Decisiones clave

  • Usé un layout pensado para escaneo rápido, con KPIs críticos antes de tendencias, filtros e investigación tabular profunda.
  • Definí nombres explícitos de estado para mantener consistentes carga, vacío, error, parcial y no disponible entre módulos.
  • Acompañé los gráficos con etiquetas, resúmenes y valores estructurados cercanos para que los datos fueran legibles para personas y máquinas.
Tipo de proyecto
Dashboard SaaS intensivo en datos
Rol
Arquitectura frontend e ingeniería UI
Enfoque principal
Accesibilidad, rendimiento y UX de datos
Área técnica
React, TypeScript, estado y flujos API
  • Dashboard React
  • TypeScript
  • Gráficos accesibles
  • UX de datos
  • UI basada en roles
  • Core Web Vitals

Contexto

El producto necesitaba un espacio analítico más claro para usuarios que dependían de datos cambiantes para tomar decisiones operativas. La experiencia existente distribuía información relacionada en vistas separadas, lo que ralentizaba las comparaciones y aumentaba la posibilidad de perder estados importantes.

El objetivo no era crear un dashboard decorativo. El objetivo era hacer que una superficie de producto densa fuera más fácil de escanear, más segura de usar y más resiliente cuando los datos estuvieran cargando, incompletos, obsoletos o no disponibles.

Problema

Las interfaces con muchos datos fallan cuando tratan cada número, gráfico, filtro y tabla como si tuviera la misma importancia. Los usuarios necesitan jerarquía clara, estados de interacción predecibles y contexto suficiente para entender qué cambió antes de decidir qué hacer.

El dashboard también debía soportar distintos roles de usuario sin convertir la UI en una colección de pantallas aisladas. Eso creó una restricción de diseño e ingeniería: la experiencia debía adaptarse a permisos sin romper el mismo modelo mental.

  • Las métricas importantes debían ser visibles sin ocultar detalles de apoyo.
  • Los gráficos necesitaban etiquetas, resúmenes y significado no dependiente solo del color.
  • Los estados de carga, vacío, error y datos parciales necesitaban diseño propio.
  • Las vistas por rol debían compartir patrones reutilizables de UI.
  • La página debía mantenerse responsive y estable mientras los paneles se actualizaban.

Enfoque

Abordé el trabajo como un sistema de interfaz de producto, no como una única página de dashboard. El primer paso fue separar las señales principales de decisión de los detalles secundarios de investigación, y luego mapear esos grupos a tarjetas, paneles de gráficos, filtros y patrones de tabla reutilizables.

Cada módulo se diseñó alrededor de un contrato de estado estable: cargando, con datos, vacío por filtro, no disponible y error. Esto redujo sorpresas en el renderizado condicional y facilitó razonar sobre la UI durante la revisión de código.

  • Definí una estructura escaneable con tarjetas resumen antes de los paneles de detalle.
  • Separé componentes visuales de la lógica de transformación de datos.
  • Usé props tipadas y nombres de estado explícitos para visibilizar casos límite.
  • Mantuve filtros, resúmenes de gráficos y estados de tabla consistentes entre vistas por rol.

Decisiones de accesibilidad

Los productos analíticos suelen depender demasiado de la interpretación visual de gráficos. Este enfoque trató los gráficos como una representación de los datos, no como la única fuente de significado.

Cuando un patrón visual podía ocultar significado para usuarios de teclado o tecnologías de asistencia, la interfaz ofrecía etiquetas, resúmenes o valores estructurados cercanos. Los estados de interacción se diseñaron para no depender solo del color.

  • Los encabezados semánticos mantuvieron el dashboard navegable por secciones.
  • Los paneles de gráficos incluyeron etiquetas descriptivas y texto de apoyo cuando era necesario.
  • Los estados de foco, rutas de teclado y etiquetas de controles permanecieron visibles y predecibles.
  • Los estados vacíos y de error explicaban qué ocurrió y qué podía hacer el usuario después.

Rendimiento y estabilidad

El dashboard se estructuró para mantener ligera la capa inicial de decisión. Los paneles costosos y detalles secundarios se trataron como divulgación progresiva, no como contenido obligatorio del primer render.

La implementación evitó sorpresas de layout reservando regiones estables para tarjetas, tablas y contenedores de gráficos. Los cambios de datos podían actualizar contenido sin obligar a toda la página a reacomodarse alrededor de UI insertada tarde.

  • Priorización del contenido resumen above-the-fold antes de paneles de análisis profundo.
  • Límites de componente suficientemente pequeños para evitar cascadas de render innecesarias.
  • Espacio reservado para estados dinámicos, manteniendo estables carga y vista poblada.
  • Reducción de trabajo de UI evitable en listas, tarjetas y resúmenes junto a gráficos.

Por qué importa este caso

Este proyecto muestra el tipo de ingeniería frontend que importa en productos SaaS: no solo construir pantallas, sino unir arquitectura de información, accesibilidad, manejo de estado y rendimiento en una interfaz coherente.

Para reclutadores, engineering managers y equipos de producto, la señal importante es el método de trabajo: aclarar la tarea de decisión, diseñar para estados reales de datos, construir primitivas reutilizables y mantener el producto suficientemente rápido para usarse bajo presión.

Resultados

  • Una estructura de dashboard basada en roles más clara para flujos analíticos complejos.
  • Patrones reutilizables para tarjetas resumen, paneles de gráficos, filtros, tablas y estados resilientes.
  • Patrones accesibles de presentación de datos que no dependían solo del color o lo visual.
  • Una base frontend más mantenible para futuros módulos analíticos.

Próximos pasos

  • Añadir capturas o diagramas aprobados cuando la confidencialidad lo permita.
  • Publicar métricas medidas de rendimiento y adopción solo cuando puedan verificarse.
  • Extender la biblioteca de patrones para flujos adicionales de reporting y monitorización.