1. O Desafio Executivo: A "Caixa Preta" do Churn
A GenSoft, uma empresa de tecnologia que opera no modelo SaaS (Software as a Service), alcançou a marca de 20.000 clientes ativos. No entanto, o crescimento rápido trouxe um efeito colateral severo: um pico crítico nas taxas de churn e uma enxurrada de feedback negativo em canais públicos e tickets de suporte.
O conselho precisava de respostas rápidas para três perguntas fundamentais que definiam o futuro do negócio:
- 1. Qual público tem maior probabilidade de deixar avaliações negativas?
- 2. Quais são os reais motivadores dessa insatisfação?
- 3. Qual o impacto financeiro imediato se não agirmos?
O problema central não era a falta de dados, mas a incapacidade de processá-los. Com um banco de dados histórico de mais de 45.000 avaliações em texto livre (linguagem natural), o conselho estava voando às cegas. Ler e categorizar esse volume manualmente era humanamente impossível. Minha missão como Arquiteto de Soluções de Analytics era decodificar essa massa de dados não estruturados e construir um Produto de Dados prescritivo.
2. O Obstáculo Arquitetural: Limitações de API e Rede
A solução óbvia seria conectar o banco de dados a uma API de IA (como a OpenAI) para realizar Análise de Sentimento e Modelagem de Tópicos. No entanto, no mundo real da Engenharia de Dados, esbarramos em obstáculos críticos:
- Custo e Limites de Requisição: APIs gratuitas (como a Inference API do Hugging Face) têm limites rígidos. Enviar 45.000 requisições simultâneas resultaria em bloqueio imediato do IP (Erro 429 - Too Many Requests).
-
Isolamento de Rede do Power BI: O ambiente de execução de scripts Python
dentro do Power Query possui severas restrições de resolução DNS, impedindo chamadas HTTP
diretas via biblioteca
requests.
Para contornar essas limitações, desenhei uma Arquitetura Híbrida. O Python foi
usado estritamente para processamento local em memória (Amostragem Estatística), enquanto a
linguagem M (Power Query) assumiu a responsabilidade das requisições de rede via
Web.Contents, contornando o firewall interno.
3. O "Hack" Estatístico: Fórmula de Cochran
Para evitar esgotar as requisições da API e otimizar o tempo de refresh do modelo de horas para minutos, apliquei um conceito fundamental da Ciência de Dados: você não precisa beber o oceano para saber que a água é salgada.
Utilizei a Fórmula de Cochran com Correção de População Finita. Assumindo um Nível de Confiança de 95% e uma Margem de Erro de 5%, o script Python reduziu o banco de dados de 45.218 linhas para uma amostra estratificada de apenas 380 registros. Isso reduziu o volume de processamento em nuvem em mais de 99%, mantendo a precisão matemática intacta.
O Racional Estatístico
Como chegamos à amostra de 380 registros?
A base original possui uma população exata de 45.218 avaliações. Para evitar o viés de analisar apenas um tema específico (como feito em abordagens simplificadas), apliquei a Fórmula de Cochran para populações finitas com os seguintes parâmetros:
- Nível de Confiança (Z): 95% (Garante que o resultado reflete a realidade na grande maioria das vezes).
- Margem de Erro (e): 5% (Variação aceitável para a tomada de decisão).
- Proporção (p): 0.5 (Garante a máxima variância e a amostra mais segura possível).
Resultado: A amostragem estratificada garantiu que a proporção de notas e temas da amostra de 380 linhas fosse um espelho perfeito da população de 45 mil clientes, validando o Upscaling financeiro do simulador.
import pandas as pd
import numpy as np
df = dataset.copy()
# 1. PARÂMETROS DA FÓRMULA DE COCHRAN
Z = 1.96 # Nível de confiança de 95%
p = 0.5 # Proporção esperada (máxima variância)
e = 0.05 # Margem de erro de 5%
N = len(df) # População total (45.218)
# 2. CÁLCULO DA AMOSTRA COM CORREÇÃO FINITA
n0 = (Z**2 * p * (1-p)) / (e**2)
n = int(np.ceil(n0 / (1 + (n0 - 1) / N)))
# 3. AMOSTRAGEM ESTRATIFICADA (Mantendo a proporção das notas originais)
amostra = df.groupby('Pontuação Original', group_keys=False).apply(
lambda x: x.sample(n=max(1, int(np.round(len(x) / len(df) * n))), random_state=42)
).reset_index(drop=True)
4. Integração com IA Generativa (Hugging Face)
Com a amostra perfeitamente isolada, construí uma função customizada em Linguagem M para consultar o
roteador moderno do Hugging Face (router.huggingface.co).
Utilizei o modelo nlptown/bert-base-multilingual-uncased-sentiment, otimizado para múltiplos idiomas. A função M envia o texto, recebe a classificação (1 a 5 estrelas) e aplica as regras de negócio da GenSoft para traduzir o output em "Positivo", "Neutro" ou "Negativo".
5. Machine Learning em Ação: Influenciadores Chave
Nota Técnica: A Microsoft bloqueia a renderização de visuais nativos de IA (como o Influenciadores Chave) em links públicos devido à segurança da API. Para demonstrar a capacidade do modelo de ML gerado no Power BI, recriei o comportamento do algoritmo abaixo usando HTML/JS, refletindo os insights exatos descobertos no banco de dados da GenSoft.
Análise de Influenciadores Chave
O que influencia a Avaliação a ser Baixa ⌄ ?
Cargo é
Consumidor
Plano é
Premier
Tutorial Concluído é
Não
A Avaliação tem maior probabilidade de ser Baixa quando o Cargo é Consumidor do que o contrário (na média).
Insight de Negócio
Este segmento representa os usuários finais da plataforma. A insatisfação está altamente correlacionada com problemas de usabilidade e velocidade, indicando um gap entre a expectativa de quem compra (Admin) e a realidade de quem usa.
6. Modelagem de Dados e Inteligência Decisória (DAX)
O modelo foi estruturado em um rigoroso Star Schema. Para garantir a internacionalização (i18n) do dashboard sem duplicar páginas, implementei uma arquitetura 100% bilíngue usando Tabelas Desconectadas e Parâmetros de Campo.
O grande diferencial deste projeto para o conselho foi a criação de um Simulador Financeiro (Parâmetros What-If). Em vez de apenas mostrar o Churn passado, o dashboard permite que a alta gestão ajuste os preços dos planos (Básico, Premier, Deluxe) em tempo real para prever o impacto financeiro da insatisfação.
Para que o cálculo fosse matematicamente sólido, a medida DAX precisou realizar o Upscaling (Extrapolação Estatística), multiplicando o resultado da amostra pelo fator de população.
Receita_em_Risco_Simulada =
// 1. Calcular Fator de Extrapolação (População / Amostra)
VAR Fator_Extrapolacao = DIVIDE(MAX(fAvaliacoes[_Populacao_Total]), MAX(fAvaliacoes[_Tamanho_Amostra]), 1)
// 2. Calcular receita simulada iterando sobre a tabela de planos
VAR Receita_Simulada_Amostra =
SUMX(
dPlanos,
VAR Qtd_Avaliacoes_Negativas =
CALCULATE(COUNTROWS(fAvaliacoes), fAvaliacoes[fnGetSentimento] = "negativo")
VAR Valor_Simulador =
SWITCH(
dPlanos[Tipo de Plano],
"Básico", [Valor Simulador Plano Básico],
"Premier", [Valor Simulador Plano Premier],
"Deluxe", [Valor Simulador Plano Deluxe], 0
)
RETURN Qtd_Avaliacoes_Negativas * Valor_Simulador
)
// 3. Projetar o valor real para toda a base
RETURN Receita_Simulada_Amostra * Fator_Extrapolacao
7. Respostas Executivas e Plano de Ação
A análise semântica, o Treemap interativo e a modelagem de dados responderam com precisão às perguntas do conselho, mudando a direção estratégica da GenSoft:
Quem cancela?
A IA provou que o Consumidor Final (e não o Administrador) no Plano Premier é o maior detrator. O risco de churn aumenta 1.28x neste segmento.
Por que cancelam?
O cruzamento de SLA vs. CSAT (Gráfico de Dispersão) e o Treemap apontaram a Lentidão do Sistema (Velocidade) e a falta de Onboarding como os maiores vilões.
Ação Prescritiva
Foi recomendado tornar o tutorial obrigatório para o plano Básico (reduzindo tickets) e revisar a precificação do plano Premier, que gerava alta expectativa mas baixa entrega.
Este caso demonstra que o verdadeiro valor da Analytics não está em plotar gráficos, mas em orquestrar Engenharia de Dados, Estatística e Inteligência Artificial para proteger a receita da empresa e orientar a tomada de decisão executiva.