Este projeto implementa uma aplicação interativa em Streamlit para responder a um estudo de caso sobre Customer Success, automação de comunicação e análise de clientes. O sistema se conecta a um banco de dados SQLite e possibilita executar queries, visualizar métricas e até gerar recomendações de produtos usando KNN (K-Nearest Neighbors).
-
Home – Apresenta as perguntas do estudo de caso e respostas conceituais.
-
Q1 a Q5 – Abas dedicadas para responder questões com SQL e análises sobre:
- Sistema de comunicação automático
- Orçamento médio por usuário
- Localização e perfil de clientes
- Identificação de usuários mais propensos a aceitar ofertas
- Classificação de churn (usuários ativos vs inativos)
-
Q6 – Duas versões de recomendação de itens:
- SQL Script com recomendações baseadas em produtos
- KNN AI Model recomendando itens com base em similaridade entre usuários
- Streamlit – Interface web interativa
- SQLite – Banco de dados relacional (armazenado em
test.db) - Pandas – Manipulação e exibição de dados
- scikit-learn (NearestNeighbors) – Modelo de recomendação KNN
- Python 3.12+
.
├── app2.py # Código principal do Streamlit:contentReference[oaicite:4]{index=4}
├── initi_db.py # Inicialização do banco de dados SQLite:contentReference[oaicite:5]{index=5}
├── recommendation_model.py # Sistema de recomendação KNN:contentReference[oaicite:6]{index=6}
├── test.db # Banco de dados SQLite
├── Introduction.txt # Introdução e explicações:contentReference[oaicite:7]{index=7}
├── questions.txt # Perguntas do case:contentReference[oaicite:8]{index=8}
├── Case Interview.pdf # Enunciado do case:contentReference[oaicite:9]{index=9}
├── case responses.pdf # Respostas escritas do case
└── README.md # Este arquivo
- Clone o repositório
git clone https://github.com/seu-usuario/case-interview-streamlit.git
cd case-interview-streamlit- Crie um ambiente virtual (opcional, mas recomendado)
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Instale as dependências
pip install -r requirements.txt- Inicialize o banco de dados (se necessário)
python initi_db.py- Rode o app no Streamlit
streamlit run app2.pyO app abrirá em: http://localhost:8501
- Clientes por localização
SELECT Location, COUNT(ID) AS Total_Users
FROM Users_Data
WHERE Location IS NOT NULL
GROUP BY Location
ORDER BY Total_Users DESC;- Classificação Churn vs Ativos
WITH LastLogin AS (
SELECT User_ID,
MAX(date(substr(Logged_At, 7, 4) || '-' ||
substr(Logged_At, 4, 2) || '-' ||
substr(Logged_At, 1, 2))) AS Last_Active_Date
FROM Users_Logs
GROUP BY User_ID
)
SELECT u.ID AS User_ID,
CASE
WHEN l.Last_Active_Date IS NULL THEN 'Churned'
WHEN julianday(DATE('now')) - julianday(l.Last_Active_Date) >= 30 THEN 'Churned'
ELSE 'Active'
END AS User_Status
FROM Users_Data u
LEFT JOIN LastLogin l ON u.ID = l.User_ID;- Melhorar o tratamento de dados inconsistentes (ex.: "Lisbon, Lisbon").
- Adicionar dashboards gráficos com Streamlit (matplotlib/plotly).
- Expandir o modelo de recomendação para considerar preço e disponibilidade em tempo real.
⚡ Desenvolvido como solução para estudo de caso de Customer Success & Data Analysis.