Pular para o conteúdo
Matheus Prates

Hora em Goiânia: Goiânia

ENCurrículo
Voltar para os projetos

02Tenaz

Nenhum cliente fica no vácuo.

Aplicativo que lê as conversas de WhatsApp de quem vende e monta sozinho a lista do que foi prometido, do que esperam de você e do que deixou de valer.

A IA só lê; nunca responde por você. Três rodadas por dia com o Claude, fila no PostgreSQL e conversa antiga guardada em Parquet.

  • React Native
  • Expo
  • Express
  • Graphile Worker
  • Claude
Tela Compromissos no modo escuro: quanto há a receber e a pagar, e a pergunta se um compromisso antigo ainda vale
Tela Conversas: os clientes da conta de ensaio, com o que falta ler e a etapa de cada negociação
Tela Hoje do Tenaz: duas conversas novas para liberar, uma pergunta sobre um compromisso parado e cinco pessoas esperando resposta

O problema

Quem vende pelo WhatsApp promete retorno o dia inteiro. No meio de centenas de mensagens, uma promessa esquecida vira um cliente que comprou do concorrente.

O que eu construí

  • Aplicativo para Android e iOS, feito em React Native com Expo.
  • Conexão com o WhatsApp da pessoa pela Evolution API. A mensagem aparece no app na hora, sem passar por IA.
  • Três rodadas por dia, às 8h, 12h e 19h, em que o Claude lê só o que é novo, junto com a memória da conta.
  • Cada compromisso vem com a citação da conversa, e a API confere se a citação existe antes de gravar.
  • Quando um assunto se encerra, os compromissos ligados a ele são revistos e fechados sozinhos.
  • Áudio transcrito pelo Whisper; conversa com mais de 180 dias vai para Parquet num armazenamento barato.

As telas

Prints do sistema de verdade. Clique numa tela para ver em tamanho real.

  • Tela Pessoas: 14 pessoas na carteira, divididas por etapa, com busca e filtros

    Pessoas: a carteira por etapa, do contato novo ao negócio fechado.

  • Tela Resultados: cinco compromissos cumpridos e o gráfico de cumpridos por mês

    Resultados: o que saiu do caminho e quanto do prometido foi cumprido.

  • Tela O que a IA lê, no modo escuro: oito de treze conversas ligadas para a leitura

    O que a IA lê: a pessoa escolhe cada conversa que entra na leitura.

  • Tela Conexão: WhatsApp conectado, 13 conversas, 683 mensagens e 12 dias de histórico

    Conexão: o estado do WhatsApp e o que já está guardado.

  • Tela de pareamento no modo escuro: o código de oito letras para digitar no WhatsApp

    Pareamento por código, no mesmo celular, sem precisar de outro aparelho.

Como funciona

  1. Chega a mensagem

    O webhook grava no PostgreSQL e o app já mostra.

  2. Áudio vira texto

    O Whisper, rodando no Groq, transcreve os áudios.

  3. A rodada

    Três vezes por dia, uma chamada ao Claude por conta, com o que não foi lido, a memória e o estado de cada conversa.

  4. A conferência

    A API confere cada citação na conversa certa e só então grava compromissos, assuntos e decisões.

Decisões que importaram

  1. A IA só lê

    Por quê: Responder cliente em nome de alguém é um risco que ninguém quer correr. O app avisa; quem responde é a pessoa.

  2. Três rodadas por dia

    Por quê: Testado com 14 dias de conversas reais: o mesmo custo de uma leitura diária, com três vezes mais leituras e a espera média caindo de 9 horas para 2,9.

  3. Nicho: quem vende

    Por quê: Medido com conversas reais, o app rende mais para quem atende muito cliente no WhatsApp. Funcionalidade nova só entra se ajuda esse público.

O que deu errado

Todo sistema de verdade quebra de algum jeito. Estes foram os tropeços que mais ensinaram, e o que mudou por causa deles.

  1. O teste inventado dizia 88%. O real, 54%

    O que aconteceu

    Afinei o pedido de um modelo pequeno olhando conversas que eu mesmo inventei. Nas conversas reais, a mesma leitura acertava bem menos, e metade do erro vinha de uma regra que eu tinha escrito só para acertar o teste.

    O que mudou

    Só afino com conversa real exportada da produção. E aprendi que, em modelo pequeno, acrescentar regra piorou quatro vezes seguidas; o que melhorou foi tirar e reordenar.

  2. A fila parou sem dar erro

    O que aconteceu

    Uma faxina diária da fila rodou com o processo no ar e apagou os tipos de tarefa que ele tinha guardado na partida. As tarefas novas ficaram paradas, sem erro e sem trava, e as rodadas não aconteceram por um dia e meio.

    O que mudou

    A faxina de tipos só roda na partida da fila. E aprendi a vigiar a ausência: rodada que não acontece também é falha, mesmo sem mensagem de erro.

  3. O modelo local não passou na régua

    O que aconteceu

    Testei rodar a leitura num modelo aberto, num Mac em casa, para zerar o custo. Na etapa do funil ele acertou 60,7%, contra 82,1% do Claude Haiku, e inventava total de venda que ninguém tinha dito.

    O que mudou

    A leitura ficou no Claude. Nenhum modelo entra no produto sem passar antes pela régua de conversas reais.

Onde está hoje

Beta em produção. A publicação na Play Store vem em seguida.