Commit inicial: GTI Maquina Comercial
App local (Node + SQLite) para captura, tratamento e exportacao de leads comerciais, com dashboard de gestao, login/usuarios e integracao Z-PRO. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Visão Geral
|
||||
|
||||
O Grupo GTI opera uma **máquina comercial local**: um aplicativo (GTI-Comercial.exe)
|
||||
que captura leads B2B das fontes públicas — principalmente a base oficial de CNPJs
|
||||
da Receita Federal — e ajuda a tratá-los e exportá-los para as campanhas de
|
||||
WhatsApp no Z-PRO.
|
||||
|
||||
## Soluções vendidas
|
||||
|
||||
- **ERP e sistemas de gestão** para comércio, serviços, restaurantes, mercados e distribuidoras.
|
||||
- **Gestão de TI** para empresas com suporte, infraestrutura, servidores, redes, backup e segurança.
|
||||
- **Autoatendimento para WhatsApp** com triagem, atendimento automático, vendas e agendamento.
|
||||
|
||||
Cada nicho do catálogo (57 nichos) já vem associado ao interesse provável e às dores
|
||||
típicas, que alimentam a personalização das mensagens.
|
||||
|
||||
## Arquitetura (simples de propósito)
|
||||
|
||||
```
|
||||
GTI-Comercial.exe → servidor Node local (porta 3900) → navegador
|
||||
│
|
||||
├── Captura: base CNPJ por UF + OpenStreetMap + Wikidata (+ Google opcional)
|
||||
├── Banco SQLite local (data/gti.db): leads, score, dedup, histórico
|
||||
└── Tratamento: dashboard, filtros, relatórios e exportações Z-PRO
|
||||
```
|
||||
|
||||
Sem n8n, sem Docker, sem serviços externos obrigatórios: tudo roda no computador
|
||||
da GTI. O envio das mensagens é feito por fora (Z-PRO), a partir dos arquivos
|
||||
gerados pelo módulo de tratamento.
|
||||
|
||||
## Premissas
|
||||
|
||||
- Foco inicial na Bahia (Santo Antônio de Jesus e região + capitais), mas o app
|
||||
funciona para **qualquer UF/cidade do Brasil** sem mudança de interface.
|
||||
- A equipe não tem braço para operação manual intensa: o app faz a triagem
|
||||
(score de qualidade dos dados + score comercial por nicho, combinados numa
|
||||
prioridade P1-P4) e evita retrabalho (leads exportados ficam marcados).
|
||||
- O WhatsApp é o canal central de conversão — leads com telefone válido têm prioridade.
|
||||
|
||||
## Resultado esperado
|
||||
|
||||
- Base grande e organizada de leads com WhatsApp (97%+ de cobertura via base CNPJ).
|
||||
- Relatórios por nicho/cidade prontos para campanhas segmentadas.
|
||||
- Histórico de tudo que já foi exportado/enviado, sem duplicar contato.
|
||||
- Dashboard de gestão comercial na tela de Tratamento: percentual da base
|
||||
pronta para abordagem imediata (Potencial Comercial), cobertura da base
|
||||
já trabalhada, distribuição visual por prioridade, produtos recomendados
|
||||
por cidade e meta diária de exportações da equipe.
|
||||
- Interface explica o "porquê" de cada score (composição detalhada no modal
|
||||
do lead), destaca a cidade+produto de maior oportunidade, mostra a
|
||||
evolução diária de exportações e oferece atalhos de um clique para gerar
|
||||
listas de prospecção (só P1, só um produto, só não exportados etc.).
|
||||
- Acesso protegido por login (usuário/senha): o primeiro acesso vem com
|
||||
`admin`/`admin`, que pode cadastrar novos usuários (comercial ou admin)
|
||||
pela tela de Usuários.
|
||||
@@ -0,0 +1,83 @@
|
||||
# Playbook Comercial
|
||||
|
||||
## Oferta De Entrada
|
||||
|
||||
Nome: Diagnostico GTI de Gestao, TI e Atendimento.
|
||||
|
||||
Promessa: em 15 minutos, identificar gargalos em sistema, atendimento, infraestrutura ou processos manuais da empresa.
|
||||
|
||||
Essa oferta reduz resistencia porque nao comeca vendendo ERP, contrato de TI ou automacao diretamente.
|
||||
|
||||
## ICP Principal
|
||||
|
||||
Priorizar empresas de Santo Antonio de Jesus e regiao com qualquer uma destas caracteristicas:
|
||||
|
||||
- Controle por planilha ou papel.
|
||||
- Sistema atual ruim ou insatisfatorio.
|
||||
- Alto volume de WhatsApp.
|
||||
- Muitos computadores ou usuarios.
|
||||
- Problemas frequentes com suporte, rede, backup ou servidor.
|
||||
- Dificuldade com estoque, financeiro, fiscal ou vendas.
|
||||
|
||||
## Segmentos Prioritarios
|
||||
|
||||
- Mercados e supermercados.
|
||||
- Farmacias e drogarias.
|
||||
- Restaurantes e delivery.
|
||||
- Distribuidoras.
|
||||
- Autopecas.
|
||||
- Material de construcao.
|
||||
- Clinicas.
|
||||
- Oficinas.
|
||||
- Escolas.
|
||||
- Lojas de varejo.
|
||||
- Empresas de servicos.
|
||||
|
||||
## Metodo De Atendimento
|
||||
|
||||
Usar SPIN de forma simples:
|
||||
|
||||
- Situacao: entender como a empresa funciona hoje.
|
||||
- Problema: descobrir gargalos.
|
||||
- Implicacao: mostrar o impacto de continuar assim.
|
||||
- Necessidade: conectar a dor a uma solucao GTI.
|
||||
|
||||
## Perguntas Do Diagnostico
|
||||
|
||||
- Como voces controlam vendas, estoque e financeiro hoje?
|
||||
- Qual processo mais toma tempo ou gera retrabalho?
|
||||
- Hoje voces usam sistema, planilha ou controle manual?
|
||||
- Quando da problema de TI, quem resolve?
|
||||
- Existe rotina de backup?
|
||||
- Quantas mensagens chegam por dia no WhatsApp?
|
||||
- Qual o impacto se esse problema continuar por mais 6 meses?
|
||||
- Se a GTI resolver isso, qual resultado seria mais importante?
|
||||
|
||||
## Roteiro Para Lead Quente
|
||||
|
||||
```text
|
||||
Ola, [nome]. Vi aqui seu contato sobre [servico].
|
||||
Pelo que voce informou, parece que existe uma oportunidade clara de melhorar [dor].
|
||||
Quero fazer um diagnostico rapido de 15 minutos para entender sua operacao e te dizer o melhor caminho.
|
||||
Pode ser hoje pela tarde ou amanha pela manha?
|
||||
```
|
||||
|
||||
## Follow-up Manual Em Proposta
|
||||
|
||||
Dia 1:
|
||||
|
||||
```text
|
||||
Oi, [nome]. Conseguiu avaliar a proposta da GTI? Posso te ajudar com alguma duvida tecnica ou comercial?
|
||||
```
|
||||
|
||||
Dia 3:
|
||||
|
||||
```text
|
||||
[nome], queria confirmar se esse projeto ainda faz sentido para agora ou se prefere que eu reprograme o contato para outro momento.
|
||||
```
|
||||
|
||||
Dia 7:
|
||||
|
||||
```text
|
||||
Vou deixar seu atendimento em aberto para retomarmos quando fizer sentido. Se quiser avancar, me responda por aqui.
|
||||
```
|
||||
@@ -0,0 +1,48 @@
|
||||
# LGPD E Regras De WhatsApp
|
||||
|
||||
Este projeto deve ser operado com cuidado para evitar bloqueio de WhatsApp e problemas de privacidade.
|
||||
|
||||
## Regras Basicas
|
||||
|
||||
- Guardar origem do lead.
|
||||
- Registrar consentimento quando existir.
|
||||
- Evitar disparo massivo sem opt-in.
|
||||
- Permitir descadastro ou parada de contato.
|
||||
- Nao comprar listas frias para disparo automatico.
|
||||
- Usar abordagem consultiva, nao agressiva.
|
||||
- Manter historico de data, origem e mensagem enviada.
|
||||
|
||||
## Mensagem De Descadastro
|
||||
|
||||
Toda sequencia pode aceitar palavras como:
|
||||
|
||||
```text
|
||||
PARAR
|
||||
CANCELAR
|
||||
SAIR
|
||||
NAO QUERO
|
||||
```
|
||||
|
||||
Quando uma dessas respostas chegar, o lead deve ser marcado como `Opt-out` no CRM e sair das automacoes.
|
||||
|
||||
## Prospecao Ativa Segura
|
||||
|
||||
Para listas frias locais, a abordagem deve ser manual ou semi-automatizada, com baixo volume e personalizacao.
|
||||
|
||||
Exemplo:
|
||||
|
||||
```text
|
||||
Ola, tudo bem? Aqui e do Grupo GTI, de Santo Antonio de Jesus.
|
||||
Vi que sua empresa atua em [segmento] e queria entender se hoje voces ja usam algum sistema para vendas, estoque ou atendimento.
|
||||
Se nao fizer sentido, pode me avisar que nao envio novas mensagens.
|
||||
```
|
||||
|
||||
## Dados Minimos No CRM
|
||||
|
||||
- Nome.
|
||||
- Empresa.
|
||||
- WhatsApp.
|
||||
- Origem.
|
||||
- Data do primeiro contato.
|
||||
- Consentimento.
|
||||
- Status de opt-out.
|
||||
@@ -0,0 +1,75 @@
|
||||
# Captura de Leads
|
||||
|
||||
A captura procura empresas por **UF + cidades + nichos** nas fontes selecionadas,
|
||||
pontua cada lead (score/classificação) e grava tudo no banco local com
|
||||
deduplicação automática — um lead capturado uma vez nunca é duplicado, em nenhuma
|
||||
execução futura.
|
||||
|
||||
O jeito normal de usar é pela **aba "Capturar Leads" do aplicativo**
|
||||
(GTI-Comercial.exe). Este documento cobre os detalhes e o uso por linha de comando.
|
||||
|
||||
## Fontes
|
||||
|
||||
| Fonte | Custo | Observações |
|
||||
|---|---|---|
|
||||
| `cnpj-base` | grátis | **Principal.** Base oficial da Receita Federal extraída por UF (~97% com telefone). |
|
||||
| `brasilapi` | grátis | Mesma base CNPJ, enriquecida online via BrasilAPI (mais lenta). |
|
||||
| `overpass` | grátis | OpenStreetMap por área da cidade (bounding box automática via geocode). |
|
||||
| `nominatim` | grátis | Busca textual no OpenStreetMap. |
|
||||
| `wikidata` | grátis | Empresas registradas no Wikidata (volume baixo). |
|
||||
| `google-places` | paga | Exige `GOOGLE_MAPS_API_KEY` no `.env`. |
|
||||
| `mock` | — | 3 leads fictícios para testar o fluxo. |
|
||||
|
||||
## Base CNPJ por estado
|
||||
|
||||
Cada UF precisa de uma extração única (~40–60 min) que gera
|
||||
`prospeccao/cnpj/estabelecimentos-<UF>.csv` a partir dos zips brutos da Receita
|
||||
(`prospeccao/cnpj/rfb-raw/`, Brasil inteiro, já baixados). A interface oferece o
|
||||
botão **"Extrair base agora"** quando a UF escolhida ainda não tem base; na linha
|
||||
de comando:
|
||||
|
||||
```bash
|
||||
node scripts/extrair-base-cnpj.mjs --uf=SP
|
||||
```
|
||||
|
||||
A extração cobre **todos os municípios da UF** — depois dela, qualquer cidade do
|
||||
estado pode ser capturada na hora, sem re-extração. Um checkpoint em disco permite
|
||||
retomar de onde parou se o processo for interrompido.
|
||||
|
||||
## Deduplicação e pontuação
|
||||
|
||||
- Chave de duplicidade: **CNPJ válido → WhatsApp válido → empresa+cidade**.
|
||||
- **Score de Qualidade** (0-100, "os dados são confiáveis?"): +30 WhatsApp válido,
|
||||
+20 CNPJ válido, +20 empresa válida, +5 cidade, +10 nicho, +10 CNAE, +5 website.
|
||||
- **Score Comercial** (0-100, "qual a chance de comprar?"): aderência do nicho
|
||||
(alta 40 / média 30 / baixa 20, configurada por nicho em `prospeccao/config.json`)
|
||||
+ website 15 + e-mail 10 + WhatsApp válido 15 + CNPJ válido 20.
|
||||
- **Score Geral** = 60% comercial + 40% qualidade — é o valor usado para ordenar
|
||||
a tela de Tratamento.
|
||||
- **Classificação**: 90-100 Excelente, 75-89 Bom, 55-74 Médio, 35-54 Baixo,
|
||||
0-34 Muito Baixo. A **Prioridade comercial** (P1-P4, mostrada na tela) deriva
|
||||
direto dela: Excelente/Bom ⇒ P1 (atacar já), Médio ⇒ P2 (na semana), Baixo ⇒ P3,
|
||||
Muito Baixo ⇒ P4 (só em campanhas específicas).
|
||||
- Cada nicho tem produtos GTI recomendados automaticamente (ERP, G-Delivery,
|
||||
G-Chat, Sistema de Ponto) que aparecem no card do lead. Se o catálogo de
|
||||
aderência/produtos do `config.json` mudar, rode `npm run recalc-scores` para
|
||||
recalcular todos os leads já capturados.
|
||||
|
||||
## Linha de comando (uso avançado)
|
||||
|
||||
```bash
|
||||
node scripts/capturar-leads.mjs --sources=mock
|
||||
node scripts/capturar-leads.mjs --sources=cnpj-base --uf=BA --cities="Ilheus,Itabuna"
|
||||
node scripts/capturar-leads.mjs --sources=cnpj-base,overpass --uf=BA --cities=all --segments=all
|
||||
node scripts/capturar-leads.mjs --help
|
||||
```
|
||||
|
||||
Parâmetros úteis: `--segments=a,b,c` (nichos pelo nome), `--segment-limit=N`,
|
||||
`--city-limit=N`, `--max=N` (resultados por consulta nas fontes de API),
|
||||
`--query-limit=N` (teto total de consultas).
|
||||
|
||||
## Ritmo e boas práticas (fontes OpenStreetMap)
|
||||
|
||||
Os servidores públicos do Overpass/Nominatim têm limites de uso. O app já aplica
|
||||
espera entre consultas (`OVERPASS_REQUEST_DELAY_MS`), failover entre endpoints e
|
||||
cooldown após falhas — falha de uma cidade não derruba a captura, só pula.
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user