g/
← projetos

Nação em Movimento

Captação e roteamento

Cada torcedor na agência certa

Roteando cada torcedor para a agência mais próxima — e, agora, direto para o pacote do próximo jogo, com atendimento especializado.

Em produçãoexit 0jul 2026Arquiteto e desenvolvedor único
Next.js 16React 19Tailwind v4Google Sheets API

o problema

Uma rede de agências de turismo esportivo precisava mandar cada torcedor para a agência certa — e saber qual agência converteu.

o projeto

O site conecta torcedores a uma rede de agências de turismo esportivo. O visitante digita o CEP, o sistema encontra a agência mais próxima e leva o contato direto para ela — e cada agência tem um link próprio que mede exatamente quanto trouxe. Depois ele ganhou um segundo ato: já sabe qual é o próximo jogo e encaminha o torcedor para um atendimento especializado naquele destino, com a mensagem do WhatsApp já contextualizada ao confronto. E tudo se cadastra numa planilha que o cliente já usa — trocar o próximo jogo ou incluir uma agência é editar uma linha; em cinco minutos está no ar, sem depender de mim.

Como a operação funcionava antes

  • O torcedor que queria um pacote para ver o time fora não sabia qual agência da rede procurar — caía em qualquer contato e às vezes em nenhum.
  • Cada agência divulgava por conta própria, mas não tinha como saber quantos contatos aquela divulgação gerou.
  • O encaminhamento do interessado até a agência certa era manual, e o dado de conversão se perdia no caminho.
  • Cadastrar uma agência nova, ou trocar o jogo em destaque, significava mexer no site — depender de um desenvolvedor para cada mudança.

As decisões difíceis

01

A planilha vira o painel de controle

o caminho óbvio
Um CMS headless, ou um painel administrativo feito sob medida.
o que eu fiz
O Google Sheets virou a fonte de dados do site, lido a cada 5 minutos. Cadastrar agência é preencher uma linha.
por quê
O cliente já vivia na planilha. Cadastrar ali e ver o site atualizar sozinho, sem deploy, sem painel para manter e sem mensalidade de CMS, significou zero treinamento e zero custo recorrente.
o que custou
Não há validação forte na entrada nem histórico de alteração. Aceitável nesta escala; vira problema com dezenas de editores.

02

Uma landing page que é várias

o caminho óbvio
Uma página, um WhatsApp central, e alguém distribui os contatos depois.
o que eu fiz
Uma rota por agência: a página perde a busca, a agência já vem fixada e todos os botões de contato vão direto para ela. Cada evento é gravado com o identificador da agência.
por quê
A busca por CEP resolve o torcedor que chega frio. O link por agência resolve o parceiro que quer divulgar e saber quanto aquilo converteu. São dois públicos, não um.
o que custou
Duas variantes da mesma página para manter em sincronia.

03

O próximo jogo controlado por um arquivo

o caminho óbvio
Escrever o próximo confronto no código e publicar o site de novo a cada rodada.
o que eu fiz
O próximo jogo virou um arquivo editável com uma chave de liga/desliga. O site exibe o confronto, monta o pacote com atendimento especializado e leva o torcedor ao WhatsApp certo com a mensagem já contextualizada ao jogo.
por quê
O próximo jogo muda toda semana. Isso não pode depender de um desenvolvedor fazer deploy — o cliente troca uma linha e está no ar.
o que custou
A responsabilidade de manter o confronto atualizado passa a ser do cliente; um jogo desatualizado fica visível.

o pulo do gato

O site que o próprio cliente atualiza, sem me chamar

As agências e o próximo jogo vêm de arquivos que o cliente edita. A página é estática — rápida e barata de servir — mas se atualiza a cada 5 minutos: a mudança aparece sozinha, sem novo deploy.

// revalidação incremental
export const revalidate = 300; // 5 min

const agencias = await lerAba("agencias");
const jogo = require("data/proximo-jogo.json");
// editar a planilha ou o JSON → o site se reconstrói sozinho
// sem CMS, sem painel, sem mensalidade
Fonte de dados editável com revalidação incremental

Onde chegou

5 min

para uma mudança aparecer no site

0

mensalidade de CMS ou painel para manter

2

modos: busca por região e link por agência

O torcedor digita o CEP, o site resolve a cidade e ordena as agências por proximidade; cada agência ganha um link próprio que fixa o contato e atribui a conversão a ela. O próximo jogo é exibido com o pacote e o atendimento especializado, e o contato já chega ao WhatsApp com a mensagem do confronto pronta.

o que ainda falta

  • A conversão por agência já é gravada, mas ainda não há volume real para virar número de resultado no case.
  • Foto oficial e dados reais das agências são as pendências antes da operação plena.

Tem um problema parecido?