Giulia Bins

Trabalhos / Tradeverifyd

Unificar o design system, e uma revisão pra manter ele assim

O produto tinha dois design systems crescendo lado a lado e regras que ninguém checava. Organizei tudo num só, defini as fundações e criei o DS Police, uma revisão de design que roda em cada pull request pra o sistema continuar sendo um só.

Papel
Staff Product Designer
Quando
Junho a outubro de 2026
Produto
Plataforma de inteligência de supply chain, B2B
Feito com
Claude Code, Storybook, checagens automáticas, um revisor de design com IA

Observação.As telas desta página foram redesenhadas e simplificadas por causa de um NDA. Nomes, rótulos e dados são fictícios. As decisões e o raciocínio são meus.

  • 39 de 41passos da limpeza do design system sob minha responsabilidade
  • 139 → 0violações do design system, mantidas em zero
  • ~2.950pull requests revisados pelo DS Police em cinco meses
  • 3 → 1seletores de país, agora uma família só que funciona no Windows

Contexto

A Tradeverifyd tem dois produtos na mesma plataforma: o portal do cliente e uma ferramenta interna de admin. O time trabalhava com IA como parte essencial do processo.

Cada produto tinha o seu Button, Badge, Card, Table, Modal e empty state. Cada par nasceu de um momento real, em que alguém precisou de uma peça e a que existia estava no lugar errado. As regras de design viviam em documentos e na cabeça das pessoas, então cada tela ia se desviando um pouco: um tom novo aqui, um botão feito à mão ali.

O time não usava Figma. A plataforma mudava tão rápido que qualquer arquivo no Figma ficava defasado em relação ao que estava no ar, e uma designer trabalhando lá vira gargalo. Então eu desenhava direto no produto com o Claude Code, o que também me deixava consertar o sistema onde ele de fato vive.

Parte 1

Virar um só

O problema

Em 15 de outubro a gente percorreu o Storybook publicado, o catálogo de componentes do time, e anotou tudo que estava errado: 26 problemas de limpeza separados, três seletores de país diferentes (dois quebrados no Windows) e um catálogo em que o maior grupo, 23%, era um app de demonstração no meio dos componentes reais.

Olhar o uso real primeiro

Mapeei os dois sistemas por onde cada componente era usado de verdade. O Button próprio do portal do cliente tinha 29 usos, o compartilhado 24. Números assim transformaram um "vamos consolidar" vago numa lista que dava pra pôr em ordem.

O componente do portal do cliente fica. O admin adota. A duplicata sai.

Uma regra, 41 passos

Essa foi a regra que o time fechou, e eu escrevi a limpeza em volta dela, em 41 passos, 39 deles comigo. Quando a versão do admin fazia algo que a do cliente não fazia, essa capacidade era levada antes, pra ninguém perder nada.

Reestruturei o catálogo pelo que um componente é, não pelo produto de onde ele vem: Brand Book, Foundations, Components. O app de demonstração foi pra trás de uma chave, escondido mas não apagado. A página de Cores lê os estilos ao vivo, então não tem como ficar desatualizada.

Antes
  • Components
  • Badge
  • Badge (compartilhado)
  • Button
  • Button (compartilhado)
  • Card
  • Country flag
  • Country scope select
  • Country select
  • Demo: página de chat
  • Demo: página de relatório
  • Demo: configurações
Depois
  • Brand Book
  • Logo, voz, papéis da tipografia
  • Foundations
  • Cores, ao vivo dos estilos
  • Escala tipográfica
  • Ícones
  • Components
  • Pill
  • Button
  • Card
  • Country select
Redesenhado. O catálogo antes (duplicatas em vermelho, páginas de demonstração em cinza) e depois, agrupado pelo que o componente é.

Juntar, peça por peça

A ferramenta de admin agora usa o tema do cliente. Três seletores de país viraram uma família só. As listas do admin ganharam o empty state compartilhado, conferido no claro, no escuro e em tela estreita. Os estados de botão e os ícones batem nos dois produtos.

Cada mudança chegou primeiro pra mim como antes e depois, com telas reais, antes de qualquer outra pessoa ver.

Antes

Nenhum time ainda

Depois

Nenhum time ainda

Os times aparecem aqui quando alguém da conta faz login.

Convidar alguém
Redesenhado com dados falsos. Uma lista vazia do admin antes e depois de adotar o empty state compartilhado.

Parte 2

Fundações decididas com evidência

Tipografia e cor

Levei o produto pra Inter e entreguei uma escala tipográfica de nove passos como tokens, cada passo com tamanho, entrelinha, peso e espaçamento, pra toda tela herdar.

Pra cor, levei contraste medido em vez de gosto, e registrei o que estava falhando: uma combinação de aviso em 1,85:1, um azul de ação abaixo do AA no tema escuro, nove controles sem nenhum hover. Com isso na mesa, o time decidiu: azul virou a cor de ação, pra uma ação nunca ser confundida com risco; o laranja da marca ficou só como identidade; o amarelo de aviso ficou mais vivo, com texto escuro em vez de branco.

BotãoRepousoHoverPressionadoDesabilitado
PrimárioBuscarBuscarBuscarBuscar
SecundárioExportarExportarExportarExportar
GhostCancelarCancelarCancelarCancelar
DestrutivoExcluirExcluirExcluirExcluir
Redesenhado. Uma família de botões com todos os estados definidos, ação em azul.

Parte 3

Continuar um só: DS Police

Regras que se checam sozinhas

Um design system só se sustenta se alguma coisa continua checando ele. Então coloquei as regras onde toda mudança já é revisada: no pull request. O DS Police começou com 7 checagens automáticas: usar os tokens de cor, usar os componentes de verdade, nada de valor avulso. Antes de ligar, corrigi todos os lugares que já quebravam essas regras, 139 em 56 arquivos, pra o time começar do zero.

  1. Uma mudançaAlguém do time propõe uma mudança
  2. Regras de designCores, componentes e tipografia, checados automaticamente
  3. Revisão de design com IALê a mudança contra o que o time decidiu
  4. Comenta, depois barraUma nota na mudança. A partir de 6 de outubro, barra o merge.

Descobrir o que ficava de fora

A contagem de cor ficava em zero, mas só porque cor era a única coisa que as regras olhavam. Então auditei 13 telas no ar do jeito que uma pessoa vê, não o código:

TelaCores fora da paletaBotões feitos à mão
Assistente, busca, monitoramento, perfil e ajuda00
Mapa de fornecedores03
Alertas020 de 48
Documentação, umas 30 subpáginas012 a 15 por página

Zero violações não queria dizer consistente. Queria dizer sem checagem.

Ensinar o design system real ao revisor

O revisor com IA comparava cada mudança com uma lista escrita à mão dos componentes. A lista estava desatualizada.

21componentes que o revisor conhecia
123componentes que existiam de verdade

Fiz a lista se montar sozinha a partir do produto. Depois criei as checagens do que o time tinha decidido mas nada garantia: a escala tipográfica, onde tinham se acumulado 408 tamanhos de fonte avulsos, e cores com nomes diferentes mas o mesmo valor, que é como 58 estados de hover não mudavam nada. Toda regra nova começou como aviso, com a condição pra virar erro escrita do lado.

Levar as decisões de design pra revisão

As instruções do revisor foram de 9 pra 19 regras, levando o que as nossas reuniões de design decidiram:

  • "Pill" é a única palavra pra indicador de status. Badge, tag e chip saíram de uso.
  • Uma pill é chapada e nunca é clicável.
  • Navegação é link. Ação na mesma tela é botão.
  • Componente novo precisa de uma story no catálogo.
Antes
StatusSançõesTrabalho forçadoAlfândegaLiberado
Depois
StatusSançõesTrabalho forçadoAlfândegaLiberado
Redesenhado com rótulos falsos. Pills de status antes e depois: chapadas, nunca clicáveis, com contraste legível.

Fazer valer

Por quatro meses as checagens só comentavam, e dava pra fazer o merge mesmo assim. Em 6 de outubro de 2026, a pedido do product owner, quebrar o design system passou a barrar o merge.

Não importado não é o mesmo que não usado

Uma contagem de uso disse que quatro componentes não tinham ninguém usando. Um deles tinha zero importações e duas cópias feitas à mão pelo produto. Apagar teria tirado a única versão reutilizável.

Primeiro avisa, depois exige

Regra que trava o trabalho de todo mundo no primeiro dia acaba desligada. Então toda regra começou como aviso, e o revisor fica em silêncio quando a mudança só move código que já existia.

Resultado

Dois design systems mapeados em 41 passos, 39 deles comigo, a maioria entregue ou em revisão no fim de outubro. Três duplicatas já viraram uma só. Um catálogo organizado pelo que as coisas são, com as lacunas à vista: 48 de 123 componentes documentados.

E uma revisão que mantém tudo assim: cerca de 2.950 pull requests passaram pelo DS Police em cinco meses, 12 engenheiros citaram ele no próprio trabalho, e as violações foram de 139 pra 0 e ficaram lá.

Um design system é um conjunto de decisões sobre quem é dono do quê, e ele só é tão consistente quanto aquilo que continua checando ele.

O que eu levei comigo: a frase mais difícil foi "o componente do portal do cliente fica". A segunda mais difícil foi admitir que uma checagem verde só significa alguma coisa se você sabe o que ela olha.