Files
BeyondCX_Insights/data/production/test-07/rca_tree.json
sujucu70 7ddb8a2ee5 feat: Add Render.com deployment support with production data
Render Configuration:
- render.yaml for declarative deployment
- requirements-dashboard.txt (lightweight deps for cloud)
- Updated .streamlit/config.toml for production
- Updated app.py to auto-detect production vs local data

Production Data:
- Added data/production/test-07/ with 30 real call analyses
- Updated .gitignore to allow data/production/

Documentation:
- Added Render.com section to DEPLOYMENT.md with step-by-step guide

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 16:45:57 +01:00

411 lines
12 KiB
JSON

{
"batch_id": "test-07",
"created_at": "2026-01-19T13:47:13.154828",
"summary": {
"total_calls": 30,
"calls_with_lost_sales": 7,
"calls_with_poor_cx": 27,
"calls_with_both": 6,
"lost_sales_rate": 0.23333333333333334,
"poor_cx_rate": 0.9,
"calls_first_call": 23,
"calls_repeat_call": 2,
"repeat_call_rate": 0.08,
"calls_at_risk": 19,
"churn_risk_rate": 0.8636363636363636,
"agents_good_performer": 2,
"agents_needs_improvement": 20
},
"top_drivers": {
"lost_sales": [
"PRICE_TOO_HIGH",
"COMPETITOR_PREFERENCE",
"NO_RETENTION_ATTEMPT",
"NO_INTEREST_IN_UPGRADE",
"DISTRUST_OF_OFFERS"
],
"poor_cx": [
"BILLING_NOT_CLARIFIED",
"NOT_LISTENING",
"LOW_EMPATHY",
"ISSUE_NOT_RESOLVED",
"LONG_SILENCE"
],
"fcr_failure": [],
"churn_risk": []
},
"lost_sales_tree": [
{
"driver_code": "PRICE_TOO_HIGH",
"category": "lost_sales",
"frequency": {
"total_occurrences": 4,
"calls_affected": 4,
"occurrence_rate": 0.13333333333333333,
"call_rate": 0.13333333333333333
},
"severity": {
"severity_score": 77.5,
"impact_level": "critical"
},
"priority_rank": 1,
"children": [],
"sample_evidence": [
"tengo un pago bastante alto en los kilovatios, he pagado 0.15 por kilovatio.",
"Es que me están estafando.",
"A partir de mil kilovatios de potencia se generó un cobro de 50 a 60 euros aproximadamente"
]
},
{
"driver_code": "COMPETITOR_PREFERENCE",
"category": "lost_sales",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 75.5,
"impact_level": "critical"
},
"priority_rank": 2,
"children": [],
"sample_evidence": [
"porque es que estoy con otra compañía",
"Yo tenía la tarifa One en otro domicilio de la calle San Juan.",
"pues ya llamaré a otro."
]
},
{
"driver_code": "NO_RETENTION_ATTEMPT",
"category": "lost_sales",
"frequency": {
"total_occurrences": 2,
"calls_affected": 2,
"occurrence_rate": 0.06666666666666667,
"call_rate": 0.06666666666666667
},
"severity": {
"severity_score": 69.25,
"impact_level": "high"
},
"priority_rank": 3,
"children": [],
"sample_evidence": [
"No sé si hay algo más en lo que yo te pueda ayudar o asesorar el día de hoy.",
"Si yo te logro conseguir un descuento, ¿Tú te quedarías con Endes el día de hoy?"
]
},
{
"driver_code": "NO_INTEREST_IN_UPGRADE",
"category": "lost_sales",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 64.0,
"impact_level": "high"
},
"priority_rank": 4,
"children": [],
"sample_evidence": [
"De momento aún no, pero lo tendré en cuenta.",
"Pero yo no he pasado de mil, ¿No? ¿Que si no he pasado de mil tiene que ser a cero?",
"Yo soy electricista, entonces lo que quiero saber es que eso sigue el contrato activo con la tarifa y todo eso"
]
},
{
"driver_code": "DISTRUST_OF_OFFERS",
"category": "lost_sales",
"frequency": {
"total_occurrences": 2,
"calls_affected": 2,
"occurrence_rate": 0.06666666666666667,
"call_rate": 0.06666666666666667
},
"severity": {
"severity_score": 57.25,
"impact_level": "high"
},
"priority_rank": 5,
"children": [],
"sample_evidence": [
"A mí me han dicho que no, que accesa cero, no, que no hay que pagar nada, me han dicho a mí.",
"Pero que todo sigue lo mismo, es decir, la tarifa libre que yo ahora he contratado."
]
},
{
"driver_code": "CONTRACT_PERMANENCE",
"category": "lost_sales",
"frequency": {
"total_occurrences": 1,
"calls_affected": 1,
"occurrence_rate": 0.03333333333333333,
"call_rate": 0.03333333333333333
},
"severity": {
"severity_score": 56.99999999999999,
"impact_level": "high"
},
"priority_rank": 6,
"children": [],
"sample_evidence": [
"yo voy a rescindir el contrato justamente cuando llegue febrero del 26, pero me ponen la factura que la renovación es anual automática y yo no la quiero."
]
},
{
"driver_code": "NO_SAVINGS_CALCULATION",
"category": "lost_sales",
"frequency": {
"total_occurrences": 1,
"calls_affected": 1,
"occurrence_rate": 0.03333333333333333,
"call_rate": 0.03333333333333333
},
"severity": {
"severity_score": 51.49999999999999,
"impact_level": "high"
},
"priority_rank": 7,
"children": [],
"sample_evidence": [
"¿O sea, que el P cuánto es? ¿Y el p?"
]
}
],
"poor_cx_tree": [
{
"driver_code": "BILLING_NOT_CLARIFIED",
"category": "poor_cx",
"frequency": {
"total_occurrences": 9,
"calls_affected": 9,
"occurrence_rate": 0.3,
"call_rate": 0.3
},
"severity": {
"severity_score": 82.5,
"impact_level": "critical"
},
"priority_rank": 1,
"children": [],
"sample_evidence": [
"Claro, en esta ocasión, cuando el día que lo vayas a renovar te lo podemos dejar al 0,13.",
"apenas está ingresando el dinero de las facturas",
"La factura no presenta movimiento de pago, es decir, no se realizó pago alguno en ella."
]
},
{
"driver_code": "NOT_LISTENING",
"category": "poor_cx",
"frequency": {
"total_occurrences": 13,
"calls_affected": 13,
"occurrence_rate": 0.43333333333333335,
"call_rate": 0.43333333333333335
},
"severity": {
"severity_score": 81.3076923076923,
"impact_level": "critical"
},
"priority_rank": 2,
"children": [],
"sample_evidence": [
"¿Que el contador de luz o de gas?",
"Pero entonces él te pudo contacto.",
"¿Hola Miriam me escuchas?"
]
},
{
"driver_code": "LOW_EMPATHY",
"category": "poor_cx",
"frequency": {
"total_occurrences": 5,
"calls_affected": 5,
"occurrence_rate": 0.16666666666666666,
"call_rate": 0.16666666666666666
},
"severity": {
"severity_score": 80.4,
"impact_level": "critical"
},
"priority_rank": 3,
"children": [],
"sample_evidence": [
"Vale, pero tranquilo, comprender las consultas.",
"Te sugiero, antes de que cuelgues, trata de hablar con tu señora madre para que te confirme el DNI.",
"No, lo intenté de todas las maneras, pero no me aparece ninguna opción para cancelarlo."
]
},
{
"driver_code": "ISSUE_NOT_RESOLVED",
"category": "poor_cx",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 77.0,
"impact_level": "critical"
},
"priority_rank": 4,
"children": [],
"sample_evidence": [
"No, lo intenté de todas las maneras, pero no me aparece ninguna opción para cancelarlo.",
"el técnico puede llegar en ese caso de una 24 horas",
"La solicitud de reenganche ya está puesta desde las siete y media."
]
},
{
"driver_code": "LONG_SILENCE",
"category": "poor_cx",
"frequency": {
"total_occurrences": 14,
"calls_affected": 14,
"occurrence_rate": 0.4666666666666667,
"call_rate": 0.4666666666666667
},
"severity": {
"severity_score": 75.60714285714285,
"impact_level": "critical"
},
"priority_rank": 5,
"children": [],
"sample_evidence": [
"....",
"¿Hola Hola Hola tendré que finalizar la llamada me oye?",
"Un momento por favor. Gracias."
]
},
{
"driver_code": "OUTAGE_NOT_EXPLAINED",
"category": "poor_cx",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 72.50000000000001,
"impact_level": "critical"
},
"priority_rank": 6,
"children": [],
"sample_evidence": [
"Yo no puedo saber si ha sido un tema de la zona, eso ya lo maneja el área encargada de averías.",
"Vale, pero nosotros solamente somos facturación, quién se encarga de eso es la distribuidora y avería.",
"Pero sí ha habido situaciones de otras partes en particular."
]
},
{
"driver_code": "WRONG_DEPARTMENT",
"category": "poor_cx",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 67.5,
"impact_level": "high"
},
"priority_rank": 7,
"children": [],
"sample_evidence": [
"En ese caso ya tienes que hablar con lo que sería la distribuidora.",
"Tú ya te comunicas con el área de averías para informar y pues que te hagan una incidencia.",
"Eso sería directamente con la distribuidora."
]
},
{
"driver_code": "MULTI_TRANSFER",
"category": "poor_cx",
"frequency": {
"total_occurrences": 2,
"calls_affected": 2,
"occurrence_rate": 0.06666666666666667,
"call_rate": 0.06666666666666667
},
"severity": {
"severity_score": 65.25,
"impact_level": "high"
},
"priority_rank": 8,
"children": [],
"sample_evidence": [
"te voy a transferir para que hagas estos pagos",
"me ha dirigido a la distribuidora, me ha dicho que volviera"
]
},
{
"driver_code": "INCORRECT_INFO",
"category": "poor_cx",
"frequency": {
"total_occurrences": 1,
"calls_affected": 1,
"occurrence_rate": 0.03333333333333333,
"call_rate": 0.03333333333333333
},
"severity": {
"severity_score": 62.5,
"impact_level": "high"
},
"priority_rank": 9,
"children": [],
"sample_evidence": [
"No, es que siempre el valor de. El valor de la modificación de potencia tiene ese valor, vale, tiene un valor."
]
},
{
"driver_code": "LONG_HOLD",
"category": "poor_cx",
"frequency": {
"total_occurrences": 2,
"calls_affected": 2,
"occurrence_rate": 0.06666666666666667,
"call_rate": 0.06666666666666667
},
"severity": {
"severity_score": 60.5,
"impact_level": "high"
},
"priority_rank": 10,
"children": [],
"sample_evidence": [
"Permíteme un momento, por favor, y reviso.",
"Permítame un momento."
]
},
{
"driver_code": "UNCLEAR_NEXT_STEPS",
"category": "poor_cx",
"frequency": {
"total_occurrences": 3,
"calls_affected": 3,
"occurrence_rate": 0.1,
"call_rate": 0.1
},
"severity": {
"severity_score": 59.00000000000001,
"impact_level": "high"
},
"priority_rank": 11,
"children": [],
"sample_evidence": [
"Ya en estos momentos le acabo de realizar la solicitud de reengancho",
"¿Hasta qué día tengo para pagarlo? Porque no sea cosa que me corten la luz, no sé.",
"estar muy pendiente el día de mañana"
]
}
],
"fcr_failure_tree": [],
"churn_risk_tree": []
}