modo raíz · lo rojo son medidas, lo verde es criterio · tecla R
01 · Sistema de diseño · Arquitectura · N5 Now

MOB: del sistema de diseño a la fuente de verdad

Cómo convertí un pedido de "modernizar la estética" en una capa de reglas separada de la tecnología. Es la que hoy consume el equipo de desarrollo para reconstruir la plataforma.

Dibujo: una persona coloca una pieza en un muro hecho de módulos de interfaz apilados; la mitad derecha del muro ya está resuelta y pintada de un solo color.

Construí MOB sin que nadie lo pidiera, con un desarrollador frontend, y pasé meses evangelizando equipos que no creían que hiciera falta. Cinco años después era el estándar oficial de la compañía.

Y entonces apareció el pedido que hace interesante a este caso. Dirección quería modernizar por completo el lenguaje visual de la plataforma. En paralelo, desarrollo estaba reconstruyendo el producto entero sobre una librería de componentes, un trabajo que no podía ni debía frenarse.

Dos pedidos legítimos que, en el tiempo, se contradecían: cada sprint construido sin previsión de cambio visual sumaba costo futuro de retrabajo.

Módulo de campañas del CRM anterior: tabla densa de filas, cabecera azul saturada y una columna de indicadores al costado. Antes de MOB
El mismo módulo rehecho con MOB: cabecera clara, cuatro gráficos de dona arriba y la tabla con más aire entre filas. Después
Ese sistema —el que ya funcionaba y era el estándar— era el que ahora había que modernizar sin romperlo.

Y el sistema tenía tres representaciones que habían evolucionado por separado: la documentación de diseño, la implementación real y la herramienta de prototipado decían cosas distintas.

Canvas de la librería en Figma: el panel de páginas a la izquierda y una grilla de variantes de botón con todos sus estados.
Una de las tres representaciones: la librería en Figma. Mantenida a mano, y por eso siempre un paso detrás del código.

Rediseñar la estética sobre esa base habría producido una cuarta.


Antes de dibujar la estética nueva hice una apuesta estructural: codificar el sistema que ya existía —el viejo, el que estaba por reemplazarse— en una herramienta de prototipado. Reglas de comportamiento, filosofía de diseño, layouts, patrones de composición, mapeo componente a componente.

No un inventario de piezas: el criterio detrás de las piezas, escrito de forma que una máquina pudiera aplicarlo.

Lámina numerada 4 del sistema: el título «Menos es más» y su regla, sobre una foto en blanco y negro de un hombre de traje fumando frente a una copa, un arma y un rosario.
Los mandamientos del sistema: reglas con un porqué, no preferencias estéticas.

Empezar por el sistema viejo fue deliberado. Si las reglas quedaban capturadas aparte de los componentes, la capa visual pasaba a ser intercambiable.

Lo validé usándolo. Prototipé con la herramienta durante semanas y la fui corrigiendo con lo que aparecía al usarla: cada vez que una pantalla real revelaba una regla mal escrita, la regla se arreglaba en la fuente, no en la pantalla.

Recién cuando la herramienta fue consistente, y con la dirección visual ya definida, reemplacé los componentes por los de la librería nueva. Los layouts y los patrones no se tocaron.


Ese orden es lo que resolvió la contradicción del encargo. Como los layouts y los patrones eran independientes de la librería, los prototipos que el equipo ya tenía seguían siendo especificaciones válidas: las mismas pantallas, los mismos comportamientos, cambiando solo los componentes.

Pantalla de agenda y CTAs en el lenguaje anterior: cabeceras azules, fotos de perfil en cada fila y color de acento en cada línea de texto. Lenguaje anterior
La misma pantalla con los componentes de MOB: saludo en texto plano, iniciales en lugar de fotos y el color reservado para el estado. Lenguaje nuevo
La misma pantalla, el mismo layout, los mismos datos y los mismos comportamientos. Lo único que cambió fueron los componentes.

La auditoría previa confirmó el tamaño de la apuesta. El acoplamiento real con la librería vieja estaba concentrado en tres lugares. Las 990 líneas de especificación de comportamiento tenían apenas dos referencias a la paleta, y siete organismos se mantuvieron uno a uno sin tocar nada. La capa cara de rehacer salía intacta.


Con el lenguaje visual separado de su implementación apareció una decisión que no era técnica sino de rol.

La tentación era pedir la migración a la librería nueva: tenía el argumento armado y la exploración visual funcionaba. En lugar de eso entregué el lenguaje en un formato que cualquier stack puede implementar, y le devolví la decisión al equipo de front con un mecanismo para tomarla con datos. Un spike acotado donde un desarrollador reconstruye una o dos pantallas con el tema generado y se mide cuánto de la estética sale con puro theming.

El criterio quedó escrito de antemano, con un umbral numérico y tres caminos posibles según el resultado. En los tres, los tokens y la especificación son la misma inversión: no se tira nada. Lo único que pedí para el corto plazo fueron dos reglas de higiene de costo casi nulo: que todo estilo salga del tema y que se consuma una capa propia en vez de la librería directa.

El camino terminó decidiéndose por los hechos. Hoy existe una librería de 62 componentes en la estética nueva, viviendo en el repositorio de desarrollo con su propio Storybook y 196 casos de uso documentados. Crece con cada desarrollo que avanza, y los tokens están alineados byte a byte con ese repositorio.

Página del componente Botón en Storybook: los ejemplos renderizados arriba y la tabla de propiedades debajo, con el índice del sistema en la barra lateral.
El Storybook del equipo de desarrollo. En la columna izquierda, junto a los componentes: Fundamentos, Filosofía, Convenciones y Movimiento.

Los módulos que ya están en manos de los clientes no se tocaron: la transición ocurre donde se construye, no donde ya funciona.


La librería nueva trae once roles de color y nada más: no cubre estados semánticos, ni series de gráficos, ni acentos por módulo. En vez de diseñar tres subsistemas separados los unifiqué en uno, con diez series donde los estados son alias, no colores nuevos. Consecuencia: el rojo de un tag de error y el rojo de una serie de gráfico son el mismo token y no pueden divergir con el tiempo.

Toda la escala neutra deriva del hue del color de marca con chroma baja: cambiar la marca es cambiar una línea y los grises se recalculan solos.

Visualizador de componentes: botones, campos, tarjetas y estados mostrados juntos en una sola pantalla, con la paleta por defecto. Marca por defecto
El mismo visualizador con el selector de color abierto y todos los componentes ya redibujados sobre el color elegido. Otro primary, en vivo
Un solo valor cambia y el sistema entero se reacomoda: superficies, hovers, bordes y estados se recalculan como tonalidad del color nuevo, sin tocar un componente.

Las reglas salieron de probar, no de un manual. La luminosidad no se toca al tibiar, así el contraste queda intacto. Y el tope es el siete por ciento, porque al diez el gris chocaba con el estado activo.

Dos hallazgos que solo aparecen en una pantalla real. El fondo, el hover y el contenedor caían dentro de 0,004 de luminosidad: el hover de los botones fantasma se fundía con el fondo, y se resolvió empujando el fondo por encima del hover. Y los labels de formulario en monoespaciada se sentían recargados, así que la mono quedó reservada a overline, caption y micro-texto.


Los acentos por categoría de tarea fueron el único subsistema de color que no cerró de entrada. Son cuatro (comercial, operativo, riesgo y servicios) y tienen que distinguirse entre sí y, además, no pisar a los estados semánticos, que viven en la misma rueda.

Lo convertí en un problema medible en vez de una discusión de gustos: dos criterios, la distancia de hue entre categorías y la distancia contra los estados. Con eso el mapeo original quedó descartado solo. Tenía comercial a diecinueve grados de "advertencia", así que una tarea de rutina se leía como una alerta.

Rueda de hue con puntos distribuidos sobre la circunferencia, de dos tamaños, y etiquetas que indican cuántos grados separan cada par; una de esas etiquetas está resaltada.
Los círculos grandes son las categorías; los chicos y tenues, los estados que no se deben pisar. En rojo, la única colisión que quedaba por resolver.

Cinco variantes después apareció el umbral: por debajo de cincuenta grados de hue, dos categorías dejan de distinguirse.

Cuatro fichas en fila; cada una muestra un color aplicado a fondo y texto, su número de hue y una expresión oklch() debajo.
Cada categoría con su hue y la fórmula que la deriva de la paleta de series. Fondo y texto salen del mismo token: no hay valores sueltos.

Entre las dos finalistas hay un trade-off abierto, y la pregunta de fondo no es estética sino de producto: ¿el hue de alerta lo tiene la categoría de riesgo, o ninguna categoría "positiva" toca el amarillo? Las dos respuestas son defendibles y la decisión no me corresponde solo a mí.

Queda documentada con el recorrido completo. Cuando se cierre, el cambio son cuatro líneas de token, no una revisión de pantallas.


6 semanas de redefinición
62 componentes en desarrollo
3 desarrollos sobre el mismo sistema
4 formatos desde un solo JSON

El activo más reutilizable no fueron las pantallas: fue la capa. El sistema dejó de ser documentación que alguien consulta y pasó a ser la fuente que consume el equipo de ingeniería —incluidos los agentes de IA con los que están reconstruyendo la plataforma— y se actualiza con cada decisión que se toma.

Y no viajaron solo los componentes. En ese Storybook, al lado de los 62 componentes, hay páginas de filosofía, convenciones, fundamentos y movimiento.

El criterio de diseño dejó de vivir en un archivo que alguien consulta cuando se acuerda: está en el mismo lugar donde se escribe el código, y lo lee tanto la gente como las máquinas.

El equipo de producto lo usa sin mí: mi reporte directo, la Directora de Producto, arma artefactos para demos comerciales apoyada en la herramienta, sin pasar por diseño. Y todo lo que la compañía construye hoy sale de la misma librería y los mismos tokens: la reconstrucción del CRM y los dos productos nuevos que avanzan en paralelo.

También cambió la escala de tiempo del prototipado. En uno de los productos nuevos adapté el prototipo de escritorio a iOS y Android en un par de horas, con una auditoría de veinticuatro hallazgos contra las guías de plataforma —priorizados, resueltos y cerrados— y después a webapp en quince minutos.

App de escritorio: barra lateral con Home, Interacciones, Contactos y Ajustes; al centro, la agenda de la semana y un campo de conversación al pie.
El punto de partida: la versión de escritorio.
El producto en iPhone: un círculo de puntos ocupa la pantalla con la instrucción de tocar para grabar, y abajo una barra de pestañas flotante, solo con íconos. Dialecto iOS
El producto en Android: la misma pantalla de grabación, con la barra de navegación anclada al borde inferior y cada ícono con su etiqueta. Dialecto Android
No es la misma pantalla encogida: cada plataforma tiene su gramática de navegación y sus patrones. Lo que se mantiene constante es el sistema debajo.

Y se mantiene solo: cada corrección que aparece diseñando entra por un buzón y se aplica a la fuente con historial versionado. Diez consolidaciones documentadas hasta hoy. Nada se pierde en una conversación.

Lo que me llevo. Separar las reglas de las piezas antes de tocar la estética hizo que el rediseño dejara de ser una apuesta y pasara a ser el reemplazo de una capa. Y devolverle la decisión técnica al equipo de front convirtió una discusión de gustos en un experimento medible.


corrección El encargo decía "modernizar la estética" y yo dije que sí. Tardé tres semanas en darme cuenta de que si lo aceptaba tal como estaba escrito, iba a producir exactamente el problema que después tendría que resolver. La discusión que hubo que dar no fue de diseño: fue de alcance.
Empezar por el sistema viejo no fue nostalgia. Era la única forma de capturar las reglas antes de tocar la estética. Si redibujaba primero, las reglas se perdían adentro de los componentes nuevos y no quedaba capa que separar.
Acá está el argumento entero del caso. Ingeniería no tuvo que esperarme porque lo que les entregué no fueron pantallas: fue una especificación que podían implementar con la librería que ellos eligieran. Un sistema que obliga a esperar al diseñador no es un sistema, es un cuello de botella con documentación.
corrección Las primeras cinco variantes de la paleta las hice a ojo. Se veían bien y no servían: no tenía forma de defender por qué esos cuatro colores y no otros cuatro. El umbral de cincuenta grados apareció recién cuando dejé de elegir y empecé a medir. Ahí la conversación con el equipo cambió de gusto a criterio.
Este caso casi termina en el capítulo 04. Un caso que solo cuenta lo que salió bien no se puede verificar — cualquiera escribe eso. Lo que todavía no cerró es la parte que prueba que el sistema es real y que sigo adentro.
← Volver al inicio Singular →