Case 01 · Product design · 0 → 1

Reservar uma limpeza deve parecer comprar uma passagem aérea, não preencher um formulário.

Blue Services é um marketplace australiano de serviços residenciais. Desenhei e programei o produto de ponta a ponta: o fluxo de reserva do cliente, o aplicativo de campo dos profissionais com GPS em tempo real e o console de operações.

Função
Product designer & front-end engineer (end-to-end)
Plataformas
Web responsiva, PWA, shells nativos para iOS & Android (Capacitor)
Públicos
Clientes, diaristas/profissionais, operadores da central
Escopo
Pesquisa → IA → UI → design system → código em produção

O problema

Confiança bilateral, precificada por hora e agendada ao minuto.

Limpeza residencial parece simples até você tentar desenhá-la. O valor varia conforme o imóvel, os extras e a frequência. A disponibilidade depende de cada profissional individualmente. E o cliente está abrindo a sua casa para um estranho.

A experiência típica dessa categoria é um formulário longo que termina num orçamento enviado por e-mail: as pessoas se comprometem antes de saber o valor, e o setor operacional perde tempo cobrando confirmações por telefone.

Brief de design que defini para mim mesmo: mostrar o preço real e a disponibilidade exata a cada escolha, tornando auditável cada promessa feita pelo produto — incluindo a localização exata do profissional no mapa.

Mapa do sistema

Uma plataforma, três objetivos muito diferentes.

O maior desafio de design não foi uma tela isolada, mas garantir que três públicos distintos, com dispositivos e níveis de ansiedade diferentes, enxergassem a mesma verdade em tempo real.

Cliente · web & app

Reservar, acompanhar, gerenciar

"Me diga quanto custa, quando vai acontecer e quem está vindo."

  • Fluxo de reserva com preço ao vivo
  • Assinaturas: pausar, modificar, cancelar
  • Rastreamento do profissional em tempo real
  • Clube de indicações com níveis de recompensa
Profissional · PWA + nativo

Trabalhar o dia

"Me mostre o próximo serviço, a rota e exatamente o que fazer. Com apenas uma mão."

  • Fila de serviços com alertas de novas oportunidades
  • Checklists específicos por tipo de limpeza
  • Transmissão de GPS em segundo plano
  • Disponibilidade e extrato de ganhos
Admin · desktop

Cumprir a promessa

"Me avise o que está prestes a dar errado, antes que o cliente perceba."

  • Mapa ao vivo de todos os profissionais
  • Atribuição inteligente e grade de horários
  • Serviços, cupons, níveis e relatórios
  • Painel de segurança e monitoramento de taxa de requisições

Processo

Publicar, observar, calibrar.

Trabalhei direto no ambiente de produção, com um ciclo curto entre a decisão de design e o uso real. 206 commits no repositório contam a história desse ciclo; o documento do design system registra a maturidade do sistema, incluindo onde ele ainda demanda refinamento.

EstruturarMapear as três jornadas, listar cada estado possível de uma reserva e definir as regras de preço e disponibilidade.
Prototipar em códigoConstruir o fluxo direto no navegador para testar precificação real, calendários reais e endereços verdadeiros.
SistematizarExtrair tokens e componentes assim que um padrão se repetisse três vezes. Documentar cada um.
AuditarRevisar acessibilidade, animações, responsividade e débitos técnicos. Registrar o que corrigir em seguida.

Decisão 01 · Fluxo de reserva

Uma única superfície onde o preço é sempre transparente.

Desenhei o fluxo como uma página viva única em vez de um formulário com múltiplas etapas: endereço, data, horário e extras recalculam o resumo instantaneamente. Nenhuma etapa exige compromisso antes de precificar.

InteractiveTry it: every control works
Service starting date *Select a date
Start time *Select a time
Bedroom 3
Bathroom 2
Extras
Extra hour (housekeeping)approx. 60 min
0
Inside Kitchen Cupboardsapprox. 30 min
0
Pantry Cleaningapprox. 30 min
0
Deep Clean (per area)approx. 35 min
0
Select Service Date
October 2026
SunMonTueWedThuFriSat
AvailableLimitedUnavailable
Selected Date:—
Select Your Starting Preferred Time
Morning (6AM - 12PM)
Selected Time:—
Recurring options *
Review your booking $240.00(Including GST)(approx: 3h 30m) Proceed to Checkout
Demo only — no payment taken
O autoplay demonstra um caminho e depois entrega o controle a você. Os preços são ilustrativos; as regras (total em tempo real, duração estimada e limites de capacidade) são reais.
Recriação interativa da página de agendamento em produção, desenhada a partir das telas reais abaixo: os mesmos rótulos, cores e estados do booking.php, descontos reais de recorrência e duração de extras. Valores ilustrativos.
Página de agendamento real no desktop: endereço, data e horário preenchidos, plano semanal com resumo de contrato de 6 meses e barra fixa com total ao vivo, duração e botão de checkout
Captura de tela real, desktop. A mesma página a 1440 px: uma única superfície, com o total e a duração fixados na barra inferior. Build local com dados de teste.

Disponibilidade por cor, não por beco sem saída

O calendário consulta a capacidade real por dia via API. Três estados visuais (disponível, limitado, esgotado) permitem ao cliente escolher com contexto, em vez de descobrir um conflito após preencher tudo. Dias com vagas limitadas continuam selecionáveis; eles apenas oferecem menos janelas de chegada e deixam isso claro.

O horário é escolhido como uma janela de chegada, refletindo como as equipes de limpeza realmente se deslocam na cidade, com seus próprios estados de carregamento e contingência.

Apresentação progressiva no mobile

Abaixo de 768px a página se transforma em um assistente guiado com barra inferior persistente: indicador da etapa, total acumulado, duração estimada e uma única ação primária. O resumo no desktop e o assistente no mobile compartilham a mesma lógica de componentes, apenas adaptando seus contêineres.

O total e a estimativa de tempo recalculam automaticamente quando itens com requisitos mínimos alteram o escopo, garantindo que a promessa feita no checkout corresponda exatamente à entrega física.

Real mobile booking, step 1 of 4: address, date, start time, weekly subscription and a 6-month contract. Bottom bar shows $105.60, about 2h 50m Real mobile booking, step 2 of 4: 3 bedrooms, 2 bathrooms and one extra. Bottom bar now shows $259.60, about 4h 30m Real mobile booking, step 3 of 4: preferences, with a pet fee shown as applied. Bottom bar shows $286.00 Real booking summary sheet: address, date, time, 4h 30m duration and the price breakdown with the 12% recurrence discount, ending in Secure Checkout
Capturas de tela reais do assistente mobile, obtidas de um build local do código de produção com dados de teste. Acompanhe a barra inferior: o total e a duração mudam a cada etapa.
Step 1: address, date, time and recurring plan, with the contract summary01Onde & quando, plano e contrato
Modal de data para outubro de 2026: dias passados riscados, dias disponíveis e uma quinta-feira 22 selecionada02Capacidade diária via API
Modal de janelas de chegada agrupadas em manhã, tarde e noite, com 8 às 9h selecionada03Janelas de chegada por período
Seletores de cômodos e extras com duração estimada por item04Cômodos e extras recalculam ao vivo
Etapa de preferências com confirmação de custo da taxa de animais05Preferências transparentes no preço
Folha de resumo da reserva com detalhamento de preços e Checkout Seguro06Resumo antes de qualquer pagamento
O fluxo real no celular, em ordem sequencial. Telas capturadas de um build local a 390 px de largura. Dados de teste: endereço público de Sydney e contatos fictícios. A etapa de pagamento com Stripe não é exibida.
Padrão do segmento · formulário de orçamento
Serviços · Preços · Sobre · Contato
Solicitar orçamento de limpeza
Nome
Sobrenome
E-mail
Telefone
Endereço do imóvel
Quartos ▾
Banheiros ▾
Data preferencial (vamos confirmar)
Conte-nos sobre sua limpeza…
Pedir orçamentoEnviaremos o valor por e-mail em até 24h.
Antes: o padrão comum no segmento (não uma versão anterior da Blue). Compromisso primeiro, preço depois.Depois: a tela de agendamento real: endereço, data e plano numa só superfície, com total e duração sempre visíveis na barra inferior.
Por que isso importa: preço e duração são os dois números em que os clientes se ancoram. Tornar ambos visíveis ao vivo significa que ninguém precisa esperar por um orçamento por e-mail para decidir se quer contratar.

Decisão 02 · Design system

"Liquid Glass": superfícies calmas para uma tarefa que gera ansiedade.

Entregar as chaves de casa é um ato emocional. A linguagem visual precisava ser acolhedora e limpa, sem frieza: camadas translúcidas, base em azul-marinho profundo e um único destaque vibrante na ação primária.

Receita de superfície. Desfoque, preenchimento translúcido, borda sutil de 1px, sombra azulada e um realce superior interno, para que a profundidade seja percebida como material físico, não mera decoração.
Navy#11284B
Marca · texto · CTA
Slate#344966
Par gradiente
Sky#78BEFF
Vidro primário
SignalDestaque · ação
Disponível#48BB78
Limitado#ED8936
Tipografia
AaInter 300–700

Uma família, quatro pesos. Hierarquia por tamanho e peso; micro-etiquetas em caixa alta para legendas.

Movimento

cubic-bezier(.23, 1, .32, 1)

Uma curva "líquida" em 200ms e 400ms. Usuários com preferência por redução de movimento recebem superfícies sólidas sem blur.

Escala

Espaçamento em 8 passos, 4 raios

0.25 → 3rem de espaçamento; raios de 12 / 14 / 16 / 20px pela função do componente. Campos de entrada fixados em 48px.

20Grupos de componentes documentados apenas na página de agendamento
3Breakpoints (992 / 768 / 480) além de regras para ponteiros touch e telas horizontais
11Camadas de profundidade (z-index) mapeadas e documentadas
1Painel de handoff estruturado como documento de artboards no estilo Figma

Decisão 03 · Orquestração

Dezessete transições de estado, três pessoas, uma única reserva.

Antes de desenhar telas, formalizei o ciclo de vida completo do serviço em diagramas swimlanes: cada estado da reserva, quem é o responsável e o que cada pessoa tem permissão de visualizar naquele instante.

Cliente

1. Configurar & pagarEscolhe o serviço e paga antecipadamente.Até 3 tentativas de recusa
2. Aguardar alocaçãoAvisado de que o pagamento foi aprovado e um profissional está sendo atribuído.
3. Conhecer o profissionalVisualiza os dados de quem irá atendê-lo.Pode cancelar a qualquer momento
4. Acompanhar a rotaNo dia agendado, acompanha o deslocamento do profissional no mapa.
5. Tela de execuçãoDurante o atendimento: interface serena com o resumo das tarefas em andamento.
6. Avaliar & reportarAvalia o serviço. Notas abaixo de 3 estrelas abrem um chamado automaticamente.Em até 48h

Admin

1. Fila de escalonamentoRecebe a reserva confirmada e busca o profissional mais adequado.
2. AtribuirDispara o convite de serviço para o profissional selecionado.
3. Tratar recusaEm caso de recusa, analisa o motivo e repassa ao próximo da fila.
4. MonitorarSe o sistema acusar abandono de área, aciona o profissional por telefone.Gestão de contingência
5. Fechamento financeiroProcessa o repasse; pode aplicar descontos caso o cliente tenha aberto chamado.

Profissional

1. Receber o serviçoNotificado por escalonamento. Aceita ou recusa a chamada.Muitas recusas geram alerta
2. Liberar rotaAo aceitar: navegação por GPS, endereço e checklist são desbloqueados.
3. Chegar & acessarAguarda o cliente ou utiliza o código de acesso. Se houver falha, cancela e recebe taxa parcial.
4. Executar a limpezaTrabalha no local. Afastar-se do raio de GPS sinaliza alerta de abandono.
5. Relatório fotográficoRegistra fotos e anotações que comprovam a qualidade da entrega.
6. Avaliar & encerrarAvalia o cliente. Ao concluir, perde o acesso a telefones e endereços particulares.Fim do ciclo

Privacidade é um estado, não uma configuração

Profissionais visualizam endereço e telefone apenas entre os status "aceito" e "concluído". O cliente só vê os dados do profissional após a correspondência ser confirmada. As permissões acompanham o estado da reserva, eliminando qualquer tela em que alguém veja mais do que deveria.

Caminhos de exceção são desenhados, não descobertos no improviso

Recusas de serviço, portas trancadas, saída do raio geográfico e avaliações baixas têm, cada uma, um responsável e um desfecho definido (nova tentativa, pagamento parcial, ligação telefônica ou chamado automático de suporte). O fluxo principal ilustra o caminho ideal; as ramificações de exceção são onde o produto conquista a confiança.

Decisão 04 · App de campo & rastreamento

Projetado para alguém com as mãos molhadas e apenas um polegar.

O app do profissional prioriza leitura instantânea em movimento: próximo serviço, rota no mapa e checklist de cômodos. A central e o cliente consomem o mesmo stream de localização, garantindo uma única verdade operacional.

Recriado a partir das telas reais no código do produto (connectblue/professional/jobs.php e checklist.php, customer/track-professional.php, admin/live-tracking.php): os mesmos rótulos, status, cores e layout, com nomes, locais e valores demonstrativos. Os mapas são ilustrados, não Google Maps. Telas reais alimentadas por dados ao vivo.

Rastreamento que funciona no mundo real

Smartphones suspendem aplicações web no instante em que o profissional abre o Google Maps. Empacotei a PWA em um shell nativo exclusivamente para manter a geolocalização em segundo plano ativa, emitindo tokens de API com escopo restrito para que o app transmita sua posição sem exigir uma sessão ativa no navegador. O desafio de design foi tornar isso invisível: apenas uma solicitação de permissão, em linguagem direta e sem jargões técnicos.

Checklists como contrato de qualidade

Cada tipo de serviço possui seu próprio checklist estruturado. O que o cliente contratou, o que o profissional marca como concluído e o que o operador administrativo audita compartilham a mesma estrutura de dados — assim, a pergunta "o forno foi limpo?" sempre tem uma resposta auditável com foto do antes e depois.

Decisão 05 · Propostas de interface para a próxima versão

A lógica já roda em produção. Estas telas a tornam evidente.

Quatro fluxos cujas regras já existem no código em produção, mas cuja interface poderia explicá-las com maior clareza. Cada proposta detalha o comportamento atual e o que eu aperfeiçoaria.

Proposta · caso de borda

Adiar uma data deveria mostrar claramente quando será a próxima limpeza.

Como é hoje
Um toque adia o próximo serviço para o final do plano. Cada assinatura permite até 3 adiamentos; o cancelamento antecipado envolve cobrança de taxa.
Proposta
Pré-visualizar a nova data antes de confirmar, exibir os adiamentos restantes como marcadores visuais e destacar a opção "pausar" acima de "cancelar", tornando o caminho mais econômico a escolha natural.
Por quê
O limite é uma regra que o cliente só descobria ao atingi-lo. Torná-lo transparente transforma uma restrição em escolha consciente.
Proposta · ciclo de qualidade

Uma limpeza insatisfatória deve terminar em compromisso concreto, não em silêncio.

Como é hoje
Uma nota abaixo de 3 estrelas abre um ticket de suporte automaticamente e pode conceder desconto no fechamento contábil.
Proposta
Ramificar a interface no momento da avaliação: motivos rápidos em botões clicáveis em vez de uma caixa de texto em branco, seguidos por um protocolo de chamado para que o cliente veja que alguém assumiu o problema imediatamente.
Por quê
O escalonamento já acontecia no back-office, mas o cliente não tinha visibilidade, ficando com a impressão de que nada foi feito.
Proposta · motivação

Um anel visual que responde instantaneamente: "quanto falta para o próximo nível?"

Como é hoje
Os níveis do Clube de Indicações são orientados por dados: cada faixa possui uma meta financeira, um ícone e sua respectiva porcentagem de comissão.
Proposta
Destacar a distância até o próximo nível em vez de apenas listar uma tabela estática, transformando o compartilhamento do link em uma ação de um toque com feedback imediato.
Por quê
As pessoas se motivam pela proximidade da meta, não pela leitura de tabelas. Valores exibidos são dados demonstrativos.
Proposta · sistema

Modo escuro como substituição de tokens, não como refatoração de código.

Como é hoje
Três blocos concorrentes de tokens em :root e uso excessivo de !important em campos tornam a troca de temas frágil (ver trade-offs abaixo).
Proposta
Após a consolidação em um arquivo semântico unificado, o tema "vidro noturno" apenas remapeia superfícies, tipografia e estados. A estrutura dos componentes permanece intacta.
TokenDayNight --surface#F4F7FB#0B1730 --glasswhite 85%white 6% --ok#E8F7EEgreen 18%

As abas avançam automaticamente; clique em uma para pausar nela. Tudo neste palco é uma proposta de evolução, não interface final em produção.

Dos arquivos de trabalho

Os documentos que a equipe realmente utilizou.

Dois artefatos reais extraídos do repositório, sem edições: o fluxo em swimlanes utilizado para alinhar o comportamento do cliente, da administração e dos profissionais, e o painel do design system utilizado no handoff de engenharia. A nomenclatura original está em português, o idioma de trabalho da equipe técnica.

Diagrama original em swimlanes do sistema de reservas com fluxos de cliente, admin e profissional
Fluxo de interação: Sistema de Reservas. A base conceitual da seção de ciclo de vida acima.
Painel do design system exibindo tokens de cor e paleta semântica de reservas
Painel do Design System. Tokens e cores semânticas, com componentes estilizados pelo arquivo blue.css de produção.

Decisões técnicas e trade-offs

O que eu refaria e por que documentei tudo abertamente.

Um design system construído em ritmo acelerado dentro de um produto em lançamento inevitavelmente acumula dívida técnica. Auditei cada ponto com franqueza e documentei para o time de engenharia. Assumir isso faz parte do trabalho de um designer sênior.

Problema identificadoImpactoDireção planejada
Três conjuntos sobrepostos de tokens em :rootCores de superfície e borda podem divergir silenciosamente entre páginas.Arquivo único de tokens; criar aliases temporários e depois remover variáveis legadas.
Uso de !important em campos de formulárioCustomização de temas e modo escuro tornam-se frágeis.Migrar para cascade layers do CSS; componente único e padronizado de input.
Dois padrões distintos de seleção de horárioInterface inconsistente entre diferentes fluxos do produto.Padronizar tudo sobre o modelo de janela de chegada.
Estilos inline em templates de páginasDificuldade de revisão de código e baixa reutilização.Extrair para arquivos CSS modulares por componente.
Conclusão: Optei por colocar o fluxo no ar primeiro e sistematizar os componentes após a repetição dos padrões. Essa escolha comprou velocidade de mercado ao custo da dívida técnica acima descrita — um trade-off que eu faria novamente em um produto 0→1, desde que acompanhado por uma etapa planejada de consolidação.

Reflexões

O que este projeto me ensinou.

Desenhe os estados invisíveis

A maior parte da percepção de qualidade mora nos estados de carregamento, telas vazias, retornos parciais e cenários de erro: disponibilidade reduzida, falha na busca de endereço ou um profissional atrasado. Especifiquei cada um desses comportamentos antes mesmo de refinar o caminho feliz.

Domine a transição entre design e código

Desenvolver aquilo que projetei significou que cada compromisso técnico (performance de renderização, integração com mapas ou limitações de background do iOS) foi uma decisão de design consciente e tomada com pleno conhecimento de causa.

Sistemas também são produtos

O documento de design system e o quadro de handoff foram concebidos com empatia para o próximo profissional da equipe — incluindo o meu próprio eu do futuro.