CRM para controle de pragas
Capturas de tela
Pontos-chave
-
Cada estação de controle tem uma etiqueta com QR code. O técnico a escaneia e registra no local a constatação (por exemplo, o consumo da isca), o estado do dispositivo, as pragas encontradas e uma foto. O relatório não pode ser assinado enquanto faltar alguma estação do serviço.
-
Quando o cliente e o técnico assinam, o sistema gera o PDF no formato da empresa e o arquiva sem alterações: é a evidência apresentada em uma auditoria. Se o cliente for pessoa jurídica e houver aplicação de produtos, também emite o certificado de controle de pragas com a assinatura do proprietário.
-
Integrei a WhatsApp Cloud API da Meta para enviar ao cliente uma mensagem de modelo quando o relatório dele é assinado, e o Google Maps para marcar no mapa os endereços dos clientes e abrir a rota no celular do técnico.
-
O app de campo, feito com Expo e React Native, permite concluir o relatório inteiro sem sinal: guarda cada etapa no celular e a envia sozinho quando a conexão volta, sem duplicar relatórios nem pagamentos.
-
O escritório tem agenda por mês, semana, dia e técnico, clientes com seus endereços e estações, orçamentos em PDF, serviços recorrentes, receitas e contas a receber, e estatísticas de pragas e tendências das estações.
Problema
Em uma auditoria sanitária, uma empresa de controle de pragas precisa comprovar o que aconteceu em cada visita: quais estações foram verificadas, o que foi encontrado, qual produto foi aplicado e quem assinou. O relatório de serviço era o formulário impresso da empresa, e o certificado de controle de pragas era emitido à mão. Além disso, os técnicos trabalham em depósitos e subsolos onde o sinal cai.
Solução
Uma única API em FastAPI atende a uma aplicação web com três visões e a um app móvel. No escritório, a equipe agenda as visitas, gerencia os clientes com seus endereços e estações, faz orçamentos e acompanha os pagamentos. Em campo, o técnico abre sua jornada, escaneia o QR code de cada estação e completa o relatório em quatro etapas: estações, produtos aplicados, comprovações e assinaturas do cliente e do técnico. Ao assinar, o sistema arquiva o PDF, emite o certificado quando for o caso e avisa o cliente pelo WhatsApp. No portal, cada cliente consulta seus serviços, as próximas visitas, suas estações e seus certificados.
Decisões técnicas
- O FastAPI é a única porta de acesso aos dados: nem o navegador nem o app falam com o Supabase, e as fotos, assinaturas e PDFs são servidos pela API.
- As permissões são concedidas por capacidade, não por perfil. Cada endpoint declara a que exige, e um registro fora do alcance do usuário responde 404 para não revelar quais clientes existem.
- Um relatório assinado nunca é editado: o PDF é arquivado no momento da assinatura e não é gerado de novo com catálogos que possam ter mudado depois.
- O desenvolvimento usa um Supabase local no Docker com dados anonimizados. O backend, a aplicação web e o app se recusam a iniciar em desenvolvimento se apontarem para produção.
Tratamento de falhas
- O aviso pelo WhatsApp roda em segundo plano depois da resposta: se falhar, o relatório continua assinado. Só os erros temporários são repetidos, até três vezes.
- No app de campo, cada ação entra em uma fila no SQLite. O fechamento do relatório e a declaração de pagamento levam uma chave gerada no celular; assim, reenviá-los depois de perder a resposta não cria um segundo relatório nem uma segunda receita.
- Se o servidor rejeitar um envio, nada é apagado: ele fica em “Requer atenção” com o motivo, e o técnico decide se tenta de novo, corrige ou descarta.
Meu papel
Desenvolvo o projeto sozinho, de ponta a ponta. Projetei o banco de dados no Supabase (PostgreSQL) e o mantenho com migrações versionadas; construí a API em FastAPI, organizada por módulos de negócio; implementei a aplicação web em React, TypeScript e Material UI a partir de um protótipo no Figma, e o app de campo com Expo e React Native. Integrei a WhatsApp Cloud API e o Google Maps, configurei o deploy no Render e escrevi mais de mil testes automatizados para o backend.
Resultados
- O cliente também contratou a manutenção.
Próximos passos
Compilar e testar o app no iOS, fazer a câmera do celular abrir o app ao escanear uma etiqueta (hoje abre a versão web) e desenvolver o módulo de despesas.
Código privado por confidencialidade com os clientes; capturas de tela, arquitetura e demonstração disponíveis mediante solicitação.