O desconto não é garantido
A oferta depende da análise de cada compra. Anunciar uma economia que não se confirma no caixa custa mais caro que uma conversão a menos, então a interface trata todo valor prévio como estimativa.
App mobile · iOS e Android Varejo alimentar · Desconto no ponto de venda 2024 – 2025
A BuyHelp intermedia desconto direto no caixa do supermercado, sem cupom e sem cashback. Entrei como product designer do squad, ao lado de PM, PO e engenharia. Parti da pesquisa levantada pelo time, desenhei os dois aplicativos — o do consumidor e o do credenciado — e organizei o design system que sustenta as duas pontas.
Entender esse mecanismo mudou a forma como desenhei as telas. A BuyHelp não altera o preço da etiqueta: ela recebe o pedido no momento em que o caixa fecha a compra, analisa e devolve uma proposta de desconto que o usuário aceita ou recusa. Tudo isso acontece em fração de segundo, dentro de uma fila.
A oferta depende da análise de cada compra. Anunciar uma economia que não se confirma no caixa custa mais caro que uma conversão a menos, então a interface trata todo valor prévio como estimativa.
Do outro lado existe um supermercado operando com margem estreita. Nenhuma tela do consumidor podia levar o credenciado a vender no prejuízo, e o painel dele precisava tornar isso verificável.
Fila, carrinho, sacola e operador esperando. Qualquer passo extra no ponto de venda aumenta a chance de desistência. Por isso o app não entra nesse momento: o vínculo é feito pelo CPF, que a pessoa já sabe de memória.
O estudo de campo foi conduzido pelo time. Participei da etapa de pesquisa a partir dessa base: revisei as entrevistas, ajudei na síntese e traduzi os achados em requisitos de interface. As decisões de tela deste case partiram desse material.
Comportamento e hábito de compra: frequência, ticket médio e como o orçamento do mês é montado.
Conversas com usuários reais sobre a dor de comprar sem saber o total, com foco em quem tem 40 anos ou mais.
Estudo de campo dentro do supermercado, acompanhando a compra até a fila do caixa.
Mapa de oportunidades, recorte do que entrava no MVP e a persona usada como referência dali em diante.
dos entrevistados relataram ansiedade ao comprar sem saber o valor total até o caixa. O dado aponta menos para desorganização e mais para falta de informação no momento em que ela ainda mudaria a decisão.
do gasto mensal da família vai para o mercado. É a maior despesa variável da casa, e uma em que o valor só aparece depois de todas as escolhas já terem sido feitas.
é o centro do público. A referência de interface desse grupo não é o banco digital, e sim aplicativos como INSS, Caixa e WhatsApp. Usei esses três como parâmetro de padrão familiar ao desenhar as telas.
A persona saiu da síntese da pesquisa e virou critério prático: sempre que uma solução dependia de um comportamento que a Maria não teria, ela era revista.
Professora · Curitiba, PR · familiaridade digital básica/intermediária
“Preciso saber quanto vai dar antes de chegar no caixa, senão o mês não fecha.”
Escrevi esses quatro critérios no começo do projeto e passei a usá-los como checklist nas revisões com o time. Valem tanto para o app do consumidor quanto para o do credenciado.
Todo valor calculado antes do caixa aparece rotulado como estimado, com a ressalva de que o preço pode mudar na hora da compra. A ressalva custa impacto visual, e é o que mantém o número confiável quando a compra é fechada.
Quanto já economizei e quanto essa lista vai dar são as duas perguntas centrais do produto. As duas são respondidas sem rolagem e sem toque: uma no topo da home, a outra fixa no rodapé da lista, acompanhando o usuário enquanto ele marca os itens.
Desconto, erro e confirmação carregam ícone, rótulo e posição próprios. Isso atende daltonismo e também o uso no corredor do mercado, onde a luz forte e o reflexo na tela reduzem a percepção de diferenças sutis de matiz.
CPF já cadastrado, telefone em uso, produto fora da base e SMS que não chega. Cada um desses casos tem tela própria, com o caminho de saída dentro dela, em vez de um alerta genérico.
O mesmo sistema atende o consumidor, o supermercado credenciado e o afiliado que traz novos mercados para a rede. São três contextos de uso distintos rodando sobre a mesma base de componentes.
| Território | O que tem dentro |
|---|---|
| 146 telas | de nível superior na página do MVP 2025, sem contar variação de estado |
| 3 perfis | cliente, credenciado e afiliado, com seleção de perfil no mesmo app |
| 6 passos | no registro, do telefone à home, incluindo termos e boas-vindas |
| 9 telas | só no fluxo de geração de lista pela IA, contando progresso e retorno |
| 5 relatórios | de exceção no painel do credenciado, cada um com sua regra de negócio |
| 5 passos | no fluxo de exclusão de conta, com confirmação digitada no último |
O arquivo tem duas frentes paralelas: a versão de lançamento, congelada para o time de engenharia, e o APP FULL, onde os fluxos novos eram testados antes de entrar na versão estável.
A priorização era discutida a partir dos achados de pesquisa e das regras de negócio. Quando um fluxo saía do escopo, a decisão vinha dessa conversa, não da tela.
Os componentes foram nomeados com os desenvolvedores para bater com o que já existia em código. Cada fluxo descia com carregamento, erro e vazio desenhados, não só o caminho feliz.
Os relatórios do credenciado saíram de regras definidas pelo time de negócio. Meu trabalho foi transformar cada uma delas em uma leitura que o gerente de loja entendesse sem treinamento.
O CPF é o que liga a pessoa ao desconto aplicado no caixa, então ele é obrigatório. Pedir esse dado logo na abertura, num formulário longo, aumenta a desistência. Dividi o cadastro em passos curtos e em linguagem direta, e posicionei o dado sensível depois de a pessoa já ter avançado algumas etapas.
Arraste para o lado →

“Digite o seu número de telefone pra gente se conhecer melhor” é o título da tela, não o rótulo do campo. O tom veio da linguagem registrada nas entrevistas e afasta a tela do formato de formulário bancário.
O teclado do código de verificação mostra as letras sob os números, como no teclado telefônico tradicional. É um detalhe pequeno que aproxima a tela de uma referência que o público já conhece.
CPF já cadastrado e telefone em uso têm tela própria, com o caminho de recuperação dentro dela. Nenhum dos dois termina em um alerta vermelho sem continuação.
O total economizado fica numa faixa verde logo abaixo do banner, antes de qualquer navegação. Em seguida vêm o mercado credenciado mais próximo e o histórico de compras, com o valor cheio riscado ao lado do valor efetivamente pago.
A economia depende de a BuyHelp saber o que a pessoa pretende comprar antes da compra. Isso faz da lista o ponto por onde passam a navegação e as decisões do app, e foi a definição que o squad tomou como base para priorizar o MVP.
Arraste para o lado →

Valor estimado fixo na base da tela, recalculado a cada item marcado. É o retorno que permite ajustar a compra enquanto ela ainda está sendo montada.
Cada lista recebe cor e ícone no momento da criação. É o que permite localizar uma lista específica no meio de dez outras sem precisar ler os nomes.
O convite de lista compartilhada sai pelo WhatsApp, canal que a pesquisa apontou como o lugar onde a família já combina a compra. Quem recebe entra direto no fluxo de aceite, com a lista visível.
A Bhia é a inteligência da BuyHelp. Na interface ela aparece em dois momentos: montando a lista a partir do histórico de compras e, com a lista pronta, propondo substituições mais baratas. As duas situações envolvem valores que a pessoa vai pagar, então as duas exigiram regra explícita de comunicação.
A Bhia se apresenta, pergunta se a compra é semanal ou mensal e pede nome, ícone e cor da lista antes de processar. O processamento não bloqueia a tela: aparece uma barra de progresso, a pessoa pode sair e usar o resto do app, e um snackbar na home avisa quando a lista fica pronta.
“Quer pagar ainda menos nessa compra?” abre a comparação entre o item escolhido e a sugestão da Bhia, os dois com preço e selo de desconto. A troca pode ser feita item a item ou de uma vez, com a economia total somada antes do aceite.
E logo abaixo, em corpo menor: valor estimado, pode variar conforme os preços na hora da compra. Essa segunda linha foi discutida com PM e engenharia antes de entrar.
Um produto que guarda CPF e histórico de compra tem obrigações de privacidade e de segurança. Esses fluxos foram desenhados com o mesmo nível de detalhe dos fluxos de uso, em conversa com o time sobre o que a operação conseguia sustentar.
Cada alteração de dado de contato passa por verificação, porque o número é a chave de acesso da conta.
Despedida, consequências reais do cancelamento, alternativa de falar com a equipe, confirmação e conclusão.
Para apagar de vez, a pessoa digita EXCLUIR CONTA. O botão destrutivo é o único vermelho da tela e o cancelar continua sendo o botão de peso.
Cliente, credenciado e afiliado assinam termos diferentes, com a versão certa amarrada ao perfil dentro do app.
O fluxo de exclusão tem retenção: mostra o que a pessoa perde e oferece falar com a equipe. Retenção sem dark pattern foi a regra combinada com o time — em nenhum dos cinco passos o botão de sair fica escondido, desabilitado ou disfarçado de outra ação.
Do lado do consumidor o produto entrega economia. Do lado do credenciado ele precisa mostrar que essa economia saiu de otimização e não da margem da loja. Esse app é o instrumento dessa verificação, e é onde o design trabalha junto das regras de risco definidas com PM e engenharia.
Arraste para o lado →

Quantidade e valor de pedidos, quantos deles passaram pela BuyHelp, a barra de progresso de aproveitamento contra a meta e a taxa de conversão. Todo indicador traz a comparação com o mês anterior, para que o número tenha referência.
Uma rede seleciona quais lojas entram na conta — “8 lojas selecionadas”, com o aviso de que o número exibido é a soma delas. O recorte é definido pelo gerente e fica declarado na tela, em vez de ficar implícito num filtro.
Produtos que estão saindo abaixo do custo. É o alerta mais crítico do painel e usa o vermelho do tema.
Itens sem custo cadastrado — invisíveis para qualquer cálculo de margem até alguém corrigir.
Itens que não podem receber desconto por regra externa, como acordo com a indústria.
O que a loja decidiu tirar da mesa, produto a produto, sem sair da plataforma.
Bloqueio de nível superior, aplicado antes de qualquer proposta de desconto ser gerada.
São cinco formas de o supermercado delimitar onde o desconto pode ou não ser aplicado. Elas transformam a plataforma em algo auditável pelo lado de quem paga a conta.
Duas aplicações, três perfis de usuário e um time de engenharia consumindo o arquivo em paralelo ao desenho. O sistema foi montado para esse ritmo: poucos tokens, componentes nomeados junto com os desenvolvedores e nenhuma variação sem uso real em tela.
Primária
#FF6600
Marca e ação principal do app do cliente. Recebe apenas texto escuro (5,9:1); com branco fica em 2,9:1 e não passa em AA.
Secundária
#008080
Tema inteiro do app do lojista. 4,8:1 com branco, o que libera texto e ícone sobre fundo cheio.
Sucesso
#1FC16B
Economia e confirmação. Carrega tinta escura (8,2:1); com branco cai para 2,1:1 e deixa de ser legível.
Erro
#D32F2F
Erro de formulário, margem negativa e ação irreversível. Uso restrito a esses três casos.
Preto
#1A1A1A
Título e número. Nunca preto puro, para suavizar o contraste sob a luz forte do corredor.
Text / Primary
#454A53
Camada semântica, da segunda geração de tokens. 8,9:1 no branco, confortável para leitura do público 40+.
Medium
#757575
Legenda e metadado. 4,6:1, no limite do AA, por isso não é usado abaixo de 14px.
Gray 200 · Stroke
#E0E0E0
Borda de campo e divisória. O sistema separa por linha e espaço, quase nunca por sombra.
Placeholder é o único cinza fraco do sistema (#9EA2AD, 2,5:1) e ele nunca carrega informação — todo campo tem rótulo próprio acima, então o texto de exemplo pode sumir sem que ninguém perca o contexto.
Escala de 4 em 4, com 2px reservado para o par rótulo e asterisco. Um raio único para as caixas e um raio completo para as pílulas. Traço de 1px em todo o sistema.
| Token | Valor | Onde vive |
|---|---|---|
spacing/gap/3xs | 2px | Rótulo e obrigatoriedade |
spacing/padding/xs | 4px | Ícone junto de texto |
spacing/gap/xs | 8px | Respiro interno padrão |
spacing/padding/m | 12px | Campo, cartão e item de lista |
radius/m | 8px | Campo, cartão, bottom sheet |
radius/round | 9999px | Avatar, chip e bandeira de país |
stroke/s | 1px | Toda borda do sistema |
Migração em andamento: o arquivo tem duas gerações de token convivendo. A primeira é
nomeada por cor (Primária, Preto, Medium) e a segunda por papel
(colours/text/primary, colours/text/brand-1). A troca começou pelos
componentes de formulário, que eram os mais reaproveitados, e avançava conforme cada
tela voltava para revisão.
Ação principal em 56px e campo em 44px, com espaçamento suficiente para dedo em movimento.
Texto e ícone verificados par a par. Nas combinações que não passavam, o ajuste foi na cor de fundo, não na legibilidade.
Numérico para telefone, CPF e código de verificação, para reduzir o tempo de preenchimento.
“Quanto você já economizou” em vez de “saldo acumulado de cashback”, seguindo o vocabulário registrado nas entrevistas.
Números informados pela BuyHelp, referentes ao período do projeto. App disponível na App Store e no Google Play.