Files
BeyondCX_Insights/config/prompts/call_analysis/v1.0/schema.json
sujucu70 75e7b9da3d 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>
2026-01-19 16:27:30 +01:00

101 lines
2.5 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "CallAnalysisResponse",
"description": "LLM response schema for call analysis",
"type": "object",
"required": ["outcome"],
"properties": {
"outcome": {
"type": "string",
"enum": [
"SALE_COMPLETED",
"SALE_LOST",
"CANCELLATION_SAVED",
"CANCELLATION_COMPLETED",
"INQUIRY_RESOLVED",
"INQUIRY_UNRESOLVED",
"COMPLAINT_RESOLVED",
"COMPLAINT_UNRESOLVED",
"TRANSFER_OUT",
"CALLBACK_SCHEDULED",
"UNKNOWN"
],
"description": "Final outcome of the call"
},
"lost_sales_drivers": {
"type": "array",
"items": {
"$ref": "#/definitions/RCALabel"
},
"default": []
},
"poor_cx_drivers": {
"type": "array",
"items": {
"$ref": "#/definitions/RCALabel"
},
"default": []
}
},
"definitions": {
"EvidenceSpan": {
"type": "object",
"required": ["text", "start_time", "end_time"],
"properties": {
"text": {
"type": "string",
"maxLength": 500,
"description": "Exact quoted text from transcript"
},
"start_time": {
"type": "number",
"minimum": 0,
"description": "Start time in seconds"
},
"end_time": {
"type": "number",
"minimum": 0,
"description": "End time in seconds"
},
"speaker": {
"type": "string",
"description": "Speaker identifier"
}
}
},
"RCALabel": {
"type": "object",
"required": ["driver_code", "confidence", "evidence_spans"],
"properties": {
"driver_code": {
"type": "string",
"description": "Driver code from taxonomy"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Confidence score (0-1)"
},
"evidence_spans": {
"type": "array",
"items": {
"$ref": "#/definitions/EvidenceSpan"
},
"minItems": 1,
"description": "Supporting evidence (minimum 1 required)"
},
"reasoning": {
"type": "string",
"maxLength": 500,
"description": "Brief reasoning for classification"
},
"proposed_label": {
"type": "string",
"description": "For OTHER_EMERGENT: proposed new label"
}
}
}
}
}