Architecting Executive VOC Dashboards with Drill-Down from Organization to Agent Level
What This Guide Covers
You are building a hierarchical Voice of the Customer (VoC) reporting architecture that enables executive stakeholders to view aggregated sentiment and CSAT scores at the organizational level, then drill down through teams, groups, and finally individual agents. The end result is a unified reporting framework that correlates operational metrics with customer sentiment, allowing leadership to identify root causes of dissatisfaction at the specific agent or interaction level without leaving the dashboard interface.
Prerequisites, Roles & Licensing
To implement this architecture, you require the following licenses and permissions:
- Licensing Tiers:
- Genesys Cloud: CX 2 or CX 3 license for access to Speech and Text Analytics. CX 1 does not include the necessary analytics engine for automated sentiment extraction.
- NICE CXone: CXone Analytics license with the Sentiment Analytics add-on enabled.
- Permissions:
- Genesys Cloud:
Analytics:ViewReport:CreateSpeechAndTextAnalytics:ViewUser:View(to map agent IDs to names)
- NICE CXone:
Analytics:Report:CreateAnalytics:Report:ViewSpeechAnalytics:View
- Genesys Cloud:
- External Dependencies:
- A configured Speech Analytics model with sentiment scoring enabled (Positive/Neutral/Negative).
- A CSAT survey integration (e.g., Qualtrics, Medallia, or native Genesys Cloud Surveys) with a standardized score field (e.g., 1–5 scale).
- A data warehouse or BI tool (Tableau, PowerBI, or Looker) if the drill-down requires joining external CRM data (e.g., customer tenure, product ownership). If staying within-native tools, this section relies on embedded analytics widgets.
The Implementation Deep-Dive
1. Establishing the Data Foundation: Unified Sentiment Scoring
The most critical failure point in executive dashboards is inconsistent data definitions. You must standardize how “Negative Sentiment” is defined across all channels (Voice, Email, Chat, Social) before building the visualization.
The Architectural Reasoning
Executive dashboards fail when they present averages of non-comparable metrics. A “Negative” score in a voice interaction (derived from NLP keyword detection and tone analysis) is not statistically equivalent to a CSAT score of 1 (explicit customer feedback). You must create a Normalized Sentiment Index (NSI) or clearly separate the two data streams to avoid misleading leadership.
For this guide, we will build two parallel tracks that merge at the dashboard layer:
- Implicit Sentiment: Derived from Speech/Text Analytics (every interaction).
- Explicit CSAT: Derived from post-interaction surveys (sampled interactions).
Step 1.1: Configuring Speech Analytics for Hierarchical Tagging
In Genesys Cloud, you must ensure that every analyzed interaction is tagged with the correct Team and Group metadata.
The Trap: Many architects rely on the Queue ID for hierarchy. Queues are operational constructs that change frequently. Teams and Groups are organizational constructs. If you build your dashboard on Queue IDs, a reorganization of queues will break your historical trend lines. Always tag with Team and Group.
Genesys Cloud Configuration:
- Navigate to Admin > Speech and Text Analytics > Models.
- Open your active model.
- Go to Topics or Categories.
- Ensure the Sentiment category is active.
- In Genesys Cloud Architect, ensure your IVR or Routing flow sets the
TeamandGroupvariables on the interaction object before it connects to an agent. If using Automatic Conversation Classification (ACC), these tags are applied automatically based on the agent’s assignment.
NICE CXone Configuration:
- Navigate to Speech Analytics > Projects.
- Ensure your project includes the Sentiment template.
- In Studio, verify that the Agent Team attribute is captured in the call detail record (CDR).
Step 1.2: Creating the Base Report Dataset
You need a dataset that joins interaction metadata with sentiment scores.
Genesys Cloud Report Definition:
Use the Speech and Text Analytics report type.
{
"name": "VOC_Base_Sentiment_Data",
"type": "SpeechTextAnalytics",
"filter": {
"type": "AND",
"clauses": [
{
"type": "EQUALS",
"path": "sentiment.score",
"value": "NEGATIVE"
},
{
"type": "NOT_EQUALS",
"path": "interaction.status",
"value": "DISCARDED"
}
]
},
"groupBy": [
{
"type": "SUMMARY",
"path": "date"
},
{
"type": "SUMMARY",
"path": "agent.id"
},
{
"type": "SUMMARY",
"path": "team.id"
},
{
"type": "SUMMARY",
"path": "group.id"
}
],
"metrics": [
{
"type": "COUNT",
"path": "interaction.id"
},
{
"type": "AVERAGE",
"path": "sentiment.score"
}
]
}
The Trap: Do not filter for sentiment.score = NEGATIVE if you want to calculate a ratio. If you filter for only negative, you lose the denominator. Instead, group by sentiment score and calculate the percentage in the dashboard layer or use a calculated field: Count(Negative) / Count(Total).
2. Building the Drill-Down Logic: The Hierarchy Engine
Executives do not want to see 5,000 agents. They want to see the Organization, click a team, and see the agents within that team. This requires a Master-Detail reporting structure.
The Architectural Reasoning
Native BI tools (like Genesys Cloud Embedded Analytics or NICE CXone Analytics) support parameter passing. The key is to create a Parent Report that acts as a filter source for Child Reports.
Step 2.1: The Executive Overview (Level 1: Organization)
Create a high-level dashboard titled Executive VoC Overview.
Widgets Required:
- KPI Card: Total Negative Sentiment % (Last 30 Days).
- KPI Card: Average CSAT Score (Last 30 Days).
- Bar Chart: Negative Sentiment by Team.
- X-Axis: Team Name
- Y-Axis: Count of Negative Sentiment Interactions
- Sort: Descending
- Click Action: Drill Down to
Team_ID.
Genesys Cloud Implementation:
- Create a new Dashboard.
- Add a Bar Chart widget.
- Select the
VOC_Base_Sentiment_Datareport. - In the Interactions tab of the widget settings, enable Drill Down.
- Set the drill-down parameter to
team.id. - Link this parameter to a URL Parameter or a Dashboard Variable named
selectedTeamId.
The Trap: Ensure the Team names are standardized. If “Support US” and “Support-US” exist as two different teams, the executive will see fragmented data. Use Admin > Users > Teams to merge or rename duplicate teams before reporting.
Step 2.2: The Team Deep-Dive (Level 2: Team/Group)
Create a second dashboard titled Team VoC Detail. This dashboard will be invisible to the end-user unless accessed via the drill-down from Level 1.
Widgets Required:
- Header: Dynamic Title showing
{{selectedTeamId}}Name. - Table: Agent Sentiment Performance.
- Columns: Agent Name, Total Interactions, Negative Sentiment Count, Negative Sentiment %, Avg CSAT.
- Filter:
team.id = {{selectedTeamId}}. - Click Action: Drill Down to
agent.id.
NICE CXone Implementation:
- Use CXone Analytics Studio.
- Create a Report with a Filter block bound to a URL Parameter
team_id. - Add a Table Visualization.
- Configure the Drill-Down property on the Agent Name column to pass
agent_idto the next dashboard.
Step 2.3: The Agent Root Cause (Level 3: Agent Level)
Create the final dashboard titled Agent VoC Analysis.
Widgets Required:
- Header: Agent Name, Tenure, Team.
- Word Cloud: Top Negative Topics for this Agent.
- This is crucial. Knowing an agent has 20% negative sentiment is not actionable. Knowing they have 20% negative sentiment driven by “Password Reset” errors is actionable.
- Timeline Chart: Sentiment Trend for this Agent (Last 90 Days).
- List: Sample Negative Interactions.
- Columns: Date, Duration, Sentiment Score, Top Topic, Link to Transcript.
- Click Action: Open the Interaction Transcript in a new tab.
The Trap: Do not show raw transcripts without context. Always include the Top Topic or Key Phrase that triggered the negative sentiment. Executives will not read full transcripts; they need the highlight reel.
3. Integrating Explicit CSAT with Implicit Sentiment
To provide a complete picture, you must overlay CSAT data.
Step 3.1: Joining Survey Data
In Genesys Cloud, CSAT data resides in the Survey report type. You must join this with the Speech Analytics data using the interaction.id or conversation.id.
The Architectural Reasoning:
Survey response rates are typically 5-15%. Speech analytics cover 100% of interactions. If you only report CSAT, you have a massive sample size bias. If you only report Speech Analytics, you have no direct customer voice. The executive dashboard must show both, clearly labeled.
Implementation:
- Create a Combined Report (if using a BI tool like Tableau/PowerBI) or use Genesys Cloud Analytics API to fetch both datasets and merge them in a middleware layer (e.g., Azure Function, AWS Lambda).
- If staying native, create two separate widgets side-by-side:
- Left: “Voice of the Customer (Analytics)” – 100% coverage.
- Right: “Voice of the Customer (Survey)” – Direct Feedback.
The Trap: Do not average the two scores. They are different metrics. Display them as separate KPIs. A common executive question is “Why is CSAT high but Sentiment low?” The answer is often that customers are polite in surveys but frustrated in real-time conversations. Highlighting this divergence is a key insight.
4. Security and Role-Based Access Control (RBAC)
Executives should see all data. Team Leaders should only see their team. Agents should only see themselves.
Step 4.1: Implementing Row-Level Security
Genesys Cloud:
Use User Groups and Report Permissions.
- Create a User Group:
Exec_VOC_Access. - Assign the
VOC_Base_Sentiment_Datareport to this group with View permissions. - Create a User Group:
Team_Leader_Support. - Assign a filtered version of the report to this group, where the filter is
team.id = CURRENT_USER_TEAM_ID.
The Trap: Do not rely on UI filters for security. If an agent can remove a filter in the BI tool, they can see other agents’ data. Security must be enforced at the Report Definition level or via API Scopes.
NICE CXone:
Use Roles and Data Access Controls.
- Create a Role:
Executive_VOC. - Set Data Access to
All. - Create a Role:
Agent_VOC. - Set Data Access to
Self Only.
Validation, Edge Cases & Troubingleshooting
Edge Case 1: The “Silent” Negative Interaction
The Failure Condition:
An executive sees a spike in negative sentiment for a specific agent, but the CSAT score for that agent is perfect. The agent denies any issues.
The Root Cause:
The agent is handling complex, emotionally charged calls (e.g., billing disputes) where the customer is angry but the agent resolves the issue correctly. The Speech Analytics model flags the customer’s tone as negative, but the outcome is positive.
The Solution:
Add a Resolution Metric to the Agent Level dashboard.
- Create a calculated field:
Negative Sentiment AND First Contact Resolution (FCR) = TRUE. - If this number is high, the agent is doing a good job in a bad situation.
- If this number is low, the agent is failing to resolve issues, causing repeated negative interactions.
- Update the dashboard to display Sentiment by Resolution Status.
Edge Case 2: The “False Positive” Topic
The Failure Condition:
The dashboard shows a high volume of negative sentiment tagged with the topic “Refund.” However, QA reviews show these are standard, polite refund requests.
The Root Cause:
The Speech Analytics model is misconfigured. The keyword “Refund” is being weighted too heavily, or the context window is too small, ignoring polite phrases like “Could you please process a refund?”
The Solution:
- Go to Admin > Speech and Text Analytics > Models.
- Review the Refund topic configuration.
- Add Exclusion Keywords: “Please”, “Thank you”, “Appreciate”.
- Retrain the model or adjust the threshold for negative sentiment within this topic.
- Validation: Run a backfill analysis on the last 30 days of data to see if the negative count drops after adjustment.
Edge Case 3: Cross-Channel Identity Mismatch
The Failure Condition:
An executive drills down to an agent and sees 10 negative voice interactions and 0 negative chat interactions. However, the agent handles both. The total negative count seems low.
The Root Cause:
The Chat channel is not integrated into the Speech Analytics model, or the Text Analytics model is separate and not joined in the dashboard.
The Solution:
- Ensure Text Analytics is enabled for Chat, Email, and Social.
- Create a Unified Report that aggregates
SentimentScorefrom bothVoiceandTextinteraction types. - In the dashboard, add a Channel Breakdown widget.
- Pie Chart: Negative Sentiment by Channel (Voice, Chat, Email).
- This allows the executive to see if the negativity is channel-specific (e.g., Chat agents are under-trained) or agent-specific.