Aplicação interativa em Streamlit conectada ao banco de dados cloud, que identifica, prioriza e analisa clientes sem compra — transformando dados comerciais em oportunidades reais de reativação.
Do estratégico ao operacional: funil de risco, priorização por valor e monitoramento de comportamento da base.
Problema
Empresas possuem milhares de clientes inativos, mas não sabem quais priorizar, onde está o risco e qual o impacto financeiro da perda.
Solução
Aplicação analítica conectada ao banco de dados que identifica clientes sem compra, classifica risco, prioriza por valor histórico e fornece múltiplas visões estratégicas e operacionais.
Resultado
Identificação de oportunidades de reativação com alto potencial financeiro, melhoria na gestão da carteira e tomada de decisão orientada por dados.
3.000+
clientes analisados
Top 20
oportunidades priorizadas
4
níveis de risco
9
visões analíticas
┌────────────────────┐ ┌──────────────────────────┐ ┌──────────────────────────┐ │ │ │ │ │ │ │ Neon Cloud │──────▶│ Streamlit App │──────▶│ Dashboards Plotly │ │ (PostgreSQL) │ │ (Python) │ │ (Interativos) │ │ │ │ │ │ │ │ Dados comerciais │ │ Queries SQL + │ │ 9 visões analíticas │ │ anonimizados │ │ Lógica analítica │ │ + filtros dinâmicos │ └────────────────────┘ └──────────────────────────┘ └──────────────────────────┘
Comunicação criptografada via psycopg2 + SSL com Neon Cloud PostgreSQL. Credenciais isoladas em variáveis de ambiente protegidas.
Consultas SQL parametrizadas com retry automático em caso de timeout ou falha de conexão. Garantia de resiliência operacional.
Utilização de @st.cache_data para evitar queries repetidas no Streamlit. Dados pesados carregam uma única vez por sessão ativa.
Gráficos dinâmicos com Plotly Express: barras, linhas, funis e dispersão. Tooltip rico e zoom nativo em cada visualização.
Quatro pilares que transformam um dado bruto de vendas numa inteligência de reativação comercial.
Identificação de clientes sem compra
Query que detecta o último registro de compra de cada cliente e calcula há quantos meses o cliente está inativo.
SELECT c.razao_social, MAX(v.data_emissao) AS ultima_compra, EXTRACT(MONTH FROM AGE(NOW(), MAX(v.data_emissao))) AS meses_sem_compra FROM clientes c LEFT JOIN vendas v ON c.cliente = v.cliente GROUP BY c.razao_social HAVING MAX(v.data_emissao) < NOW() - INTERVAL '30 days' ORDER BY meses_sem_compra DESC;
Funil de reativação — Classificação de risco
Quatro faixas de criticidade que determinam urgência de ação para cada cliente inativo identificado.
def classificar_risco(meses_sem_compra): if meses_sem_compra <= 3: return "🟡 Atenção" # Contato pode reverter elif meses_sem_compra <= 6: return "🟠 Risco" # Urgência moderada elif meses_sem_compra <= 12: return "🔴 Alto Risco" # Ação imediata else: return "⚫ Perdido" # Reativação improvável
Priorização por valor — Top 20 oportunidades
Ranqueamento dos clientes inativos pelo faturamento histórico para identificar onde está a maior receita potencial.
# Priorização: quem parou de comprar E tinha maior volume top_20 = df_inativos.nlargest(20, "faturamento_historico") # Colunas resultantes: # │ Razão Social │ Última Compra │ Meses Inativo │ Faturamento │ Risco │ # │ Empresa X │ 2024-08-15 │ 7 │ R$ 482.000 │ 🔴 │ # │ Empresa Y │ 2024-11-02 │ 4 │ R$ 318.500 │ 🟠 │
Detecção de tendência — Comportamento da base
Análise temporal que identifica a velocidade com que clientes estão "adormecendo", usando média móvel de 3 meses.
# Clientes que entraram em inatividade por mês df_tendencia = df_inativos.groupby( df_inativos["ultima_compra"].dt.to_period("M") ).size().reset_index(name="novos_dormentes") # Média móvel para suavizar tendência df_tendencia["media_movel_3m"] = df_tendencia["novos_dormentes"].rolling(3).mean() # → Insight: meses com pico de inatividade = ações comerciais falharam
Evolução de clientes atendidos
Comparação YoY: quantos clientes compraram por mês vs. ano anterior.
Funil de reativação por risco
Distribuição visual dos clientes inativos nos 4 níveis de criticidade.
Top 20 inativos por faturamento
Ranqueamento dos clientes com maior receita potencial para priorização.
Tendência de novos dormentes
Média móvel de clientes que entram em inatividade mês a mês.
Distribuição por tempo sem compra
Histograma de faixas de inatividade para visão macro da carteira.
Análise por vendedor, cidade e situação
Cruzamento dimensional para identificar padrões regionais e de equipe.
Core
Python
Lógica e processamento
Streamlit
Framework web interativo
Dados
PostgreSQL (Neon Cloud)
Banco de dados remoto
Pandas
Manipulação de DataFrames
Visualização & Infra
Plotly
Gráficos interativos
Streamlit Cloud
Deploy em produção
Não é apenas um dashboard bonito. Cada visualização foi projetada para responder uma pergunta real de quem lidera times comerciais.
Ranqueia os clientes inativos pelo faturamento histórico, garantindo que o esforço de reativação gere o maior ROI possível.
Alimenta tanto gerentes (visão de carteira + tendência) quanto vendedores (lista de clientes para contatar hoje).
Pode ser implantado instantaneamente em qualquer equipe comercial com acesso a dados de vendas + cadastro de clientes.
Este tipo de solução pode ser aplicado diretamente em operações comerciais para aumentar receita e reduzir churn de clientes.