feat: Add Streamlit dashboard with Blueprint compliance (v2.1.0)

Dashboard Features:
- 8 navigation sections: Overview, Outcomes, Poor CX, FCR, Churn, Agent, Call Explorer, Export
- Beyond Brand Identity styling (colors #6D84E3, Outfit font)
- RCA Sankey diagram (Driver → Outcome → Churn Risk flow)
- Correlation heatmaps (driver co-occurrence, driver-outcome)
- Outcome Deep Dive (root causes, correlation, duration analysis)
- Export functionality (Excel, HTML, JSON)

Blueprint Compliance:
- FCR: 4 categories (Primera Llamada/Rellamada × Sin/Con Riesgo de Fuga)
- Churn: Binary view (Sin Riesgo de Fuga / En Riesgo de Fuga)
- Agent: Talento Para Replicar / Oportunidades de Mejora
- Fixed FCR rate calculation (only FIRST_CALL counts as success)

Technical:
- Streamlit + Plotly for interactive visualizations
- Light theme configuration (.streamlit/config.toml)
- Fixed Plotly colorbar titlefont deprecation

Documentation:
- Updated PROJECT_CONTEXT.md, TODO.md, CHANGELOG.md
- Added 4 new technical decisions (TD-014 to TD-017)
- Created TROUBLESHOOTING.md with 10 common issues

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
sujucu70
2026-01-19 16:27:30 +01:00
commit 75e7b9da3d
110 changed files with 28247 additions and 0 deletions

213
README.md Normal file
View File

@@ -0,0 +1,213 @@
# CXInsights
Pipeline automatizado para análisis de conversaciones de contact center en español. Identifica causas raíz de ventas perdidas y mala experiencia de cliente (CX) mediante análisis de transcripciones de llamadas.
## Propuesta de Valor
CXInsights identifica, de forma automatizada y basada en evidencia:
- **Por qué se pierden oportunidades de venta** durante las llamadas
- **Por qué los clientes reciben una mala experiencia**
- **Cuáles son las causas más frecuentes** y prioritarias
### Responde a preguntas clave:
- ¿En qué punto del flujo se pierde la venta?
- ¿Qué comportamientos o procesos generan frustración?
- ¿Cuáles son las causas raíz de mala CX o churn potencial?
## Instalación
### Requisitos previos
- Python 3.11+
- ffmpeg (opcional, para validación de audio)
- Cuentas en AssemblyAI y OpenAI
### Setup
```bash
# 1. Clonar repositorio
git clone https://github.com/tu-org/cxinsights.git
cd cxinsights
# 2. Crear entorno virtual
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
# 3. Instalar dependencias
pip install -r requirements.txt
# 4. (Opcional) Instalar soporte PII
pip install -r requirements-pii.txt
python -m spacy download es_core_news_md
# 5. (Opcional) Instalar dependencias de desarrollo
pip install -r requirements-dev.txt
```
## Configuración
### 1. Variables de entorno
```bash
# Copiar template
cp .env.example .env
# Editar con tus API keys
# Windows: notepad .env
# Linux/Mac: nano .env
```
Variables requeridas:
| Variable | Descripción |
|----------|-------------|
| `ASSEMBLYAI_API_KEY` | API key de AssemblyAI para transcripción |
| `OPENAI_API_KEY` | API key de OpenAI para análisis LLM |
### 2. Configuración de throttling
Ajusta según tu tier en las APIs:
```bash
# .env
MAX_CONCURRENT_TRANSCRIPTIONS=30 # AssemblyAI
LLM_REQUESTS_PER_MINUTE=200 # OpenAI (Tier 1: 200, Tier 2: 2000)
```
## Flujo de Ejecución
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ PIPELINE CXInsights │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. VALIDACIÓN Usuario carga audios → Validación + estimación coste │
│ ↓ │
│ 2. TRANSCRIPCIÓN Audio → Transcript (AssemblyAI) │
│ ↓ │
│ 3. FEATURES Transcript → Eventos + Métricas (determinístico) │
│ ↓ │
│ 4. COMPRESIÓN Transcript → CompressedTranscript (reducción >60%) │
│ ↓ │
│ 5. INFERENCE CompressedTranscript → Labels (LLM) │
│ ↓ │
│ 6. VALIDACIÓN Labels → Quality Gate (evidence requerido) │
│ ↓ │
│ 7. AGREGACIÓN Labels → RCA Trees (estadístico) │
│ ↓ │
│ 8. OUTPUTS RCA Trees → PDF + Excel + JSON │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Uso
### Estimación de costes
```bash
python -m cxinsights.pipeline.cli estimate --input ./data/raw/audio/mi_batch
```
### Ejecutar pipeline completo
```bash
python -m cxinsights.pipeline.cli run \
--input ./data/raw/audio/mi_batch \
--batch-id mi_batch
```
### Ejecutar por stages
```bash
# Solo transcripción
python -m cxinsights.pipeline.cli run --batch-id mi_batch --stages transcription
# Solo inferencia (requiere transcripts existentes)
python -m cxinsights.pipeline.cli run --batch-id mi_batch --stages inference
```
### Resumir desde checkpoint
```bash
python -m cxinsights.pipeline.cli resume --batch-id mi_batch
```
## Inputs Esperados
### Formato de audio
- MP3, WAV, M4A
- Duración típica: 6-8 minutos (AHT)
### Naming convention
```
{call_id}_{YYYYMMDD}_{queue}.mp3
```
Ejemplo: `CALL001_20240115_ventas-movil.mp3`
### Metadata opcional (CSV)
```csv
call_id,date,queue,duration
CALL001,2024-01-15,ventas-movil,420
```
## Outputs
| Archivo | Descripción |
|---------|-------------|
| `transcripts.json` | Transcripciones con diarización |
| `call_labels.json` | Etiquetas RCA por llamada con evidencias |
| `rca_trees.json` | Árboles de causas raíz |
| `executive_summary.pdf` | Reporte ejecutivo (2-3 páginas) |
| `raw_analytics.xlsx` | Dataset completo para exploración |
## Estructura del Proyecto
```
cxinsights/
├── src/
│ ├── transcription/ # STT (AssemblyAI)
│ ├── features/ # Extracción determinística
│ ├── inference/ # Análisis LLM
│ ├── validation/ # Quality gate
│ ├── aggregation/ # RCA trees
│ ├── visualization/ # Exports
│ └── pipeline/ # Orquestación
├── config/
│ ├── rca_taxonomy.yaml # Taxonomía frozen
│ └── settings.yaml # Configuración
├── data/ # Datos (gitignored)
├── tests/ # Tests
└── notebooks/ # Validación
```
## Documentación
- [PRODUCT_SPEC.md](./PRODUCT_SPEC.md) - Especificación del producto
- [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md) - Arquitectura del pipeline
- [docs/TECH_STACK.md](./docs/TECH_STACK.md) - Stack tecnológico
- [docs/PROJECT_STRUCTURE.md](./docs/PROJECT_STRUCTURE.md) - Estructura detallada
- [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md) - Guía de deployment
## KPIs de Calidad
| KPI | Target |
|-----|--------|
| Transcripciones utilizables | 90% |
| Confianza media RCA | ≥ 0.70 |
| Tiempo (5K llamadas) | < 24h |
| Coste por llamada | < €0.50 |
## Licencia
Propietario - BeyondCX.ai