Power BI case study · Service operations

A busy contact centre needs a clearer route to action.

I turned 197,278 interaction records into a Power BI monitoring model that connects call routing, abandonment and customer feedback to explicit definitions, quality checks and operational priorities.

  • Power BI
  • Power Query
  • DAX
  • Data modelling
  • Operational analytics
Inbound decision mapTotals reconciled

Follow the route before reading the rate.

AI endpoints and known human routes have different operational meanings and different denominators.

Recorded inbound routing outcomes134,463 inbound calls: 34,492 end at an AI endpoint, 99,967 have a known human route and four remain unclassified. Of the known human routes, 31,602 abandon before human attention, 66,075 finish at an agent endpoint and 2,290 abandon after human attention. Inbound calls134,463 AI endpoint34,492 Known human route99,967 Initial abandonment31,602 Human attention68,365 4 unclassified calls are outside the known-route denominator.

Human attention combines 66,075 agent terminal outcomes and 2,290 post-contact abandonments. An AI endpoint does not establish successful resolution.

Inbound outcomes are separated before rates are calculated. The complete breakdown is provided in the outcome table.
Interactions analysed197,278

Inbound, outbound and chat records preserved.

Initial abandonment31.61%

Of known inbound human routes, before human attention.

NPS · valid scores 0–1034.28

7,708 responses; zero policy shown below.

Satisfaction · scale 1–109.46

7.50% coverage of human attention.

Operational evidence

Volume, access and waiting answer different questions.

Compare recorded volume, initial abandonment and the 90th percentile of waiting time on known inbound human routes. Period labels are generic in this public version; the final period is partial.

Compare periods

Use the metric buttons, then select a period. Volume counts reflect the length of the captured period. Rates are descriptive observations. Waiting time covers known inbound human routes, including zero waits and excluding AI endpoints; seconds are provisional pending source confirmation. P90 is a distribution measure rather than a service-level target.

View all performance values as a table
Aggregate period metrics. Initial abandonment uses known inbound human routes; NPS uses valid inbound responses.
PeriodAll interactionsInbound callsInitial abandonmentWait P90NPS
Period 126,15317,96537.94%146.1 s42.75
Period 230,86520,23435.16%152.0 s42.62
Period 344,43632,82746.09%164.3 s16.91
Period 441,99029,42624.92%164.8 s26.18
Period 530,25019,06611.58%140.6 s42.79
Period 6 · Partial period23,58414,94517.83%156.2 s42.93
All periods197,278134,46331.61%157.9 s34.28
Inspect the inbound outcome reconciliation
Terminal classification from the source, expressed with generic public labels. Shares use all 134,463 inbound calls.
Recorded outcomeCallsShare of inbound
Ends with AI34,49225.65%
Agent terminal outcome66,07549.14%
Initial abandonment31,60223.50%
Abandonment after human contact2,2901.70%
Unclassified40.00%

Customer feedback

A strong score still needs a trusted response base.

The recorded zero scores materially change NPS. I retained them in the main 0–10 calculation and built a separate exclusion scenario so this definition decision stays visible.

View both NPS calculations and their response bases
Same captured survey data under two zero-response policies. The all-period NPS is recalculated from pooled responses, not averaged from period scores.
PeriodNPS with zerosResponse baseNPS without zerosResponse baseZero scores
All periods34.287,70850.026,899809
Period 142.7597358.5687697
Period 242.621,21357.991,095118
Period 316.911,44339.541,209234
Period 426.181,69641.821,509187
Period 542.791,42155.001,309112
Period 6 · Partial period42.9396252.6190161

The original field does not establish whether a recorded zero is a submitted rating or a technical default. The main calculation follows the standard numerical scale while keeping this unresolved recording question explicit.

Method and data quality

Build the definitions before the dashboard.

I kept the source grain intact, separated channels and terminal outcomes, and designed a reusable semantic model so filtering changes the context without changing the meaning of a KPI.

One fact table, two dimensions.

CalendarOne row per date
InteractionsOne row per source record
DestinationsUnique endpoint mapping

Calendar and destination dimensions filter the fact table through one-to-many relationships. Initial routing team and terminal destination remain distinct.

The full implementation was opened, refreshed, saved and reopened in Power BI Desktop. The public page reproduces safe aggregates and definitions; it does not expose the contact-level model.

01 · Power Query

Preserve and type the source.

Parse dates and numeric durations, normalise blanks and labels, derive date/hour fields and preserve records requiring review rather than silently deleting them.

02 · Semantic model

Separate routing from attribution.

Use unique destination mappings and a calendar dimension. Keep inbound operational rates separate from outbound and chat activity.

03 · DAX

Protect each denominator.

Calculate human-route rates, inbound survey coverage and scale-valid feedback measures in the current filter context. Return meaningful zeros for empty counts.

04 · Validation

Reconcile results in the native report.

Compare totals and outcome splits against independent calculations, inspect filter behaviour and check all four report pages in the native exported PDF.

Metric logicInspect the initial-abandonment definition
Initial abandonment rate =
    Inbound calls abandoned before human attention
    ÷ Known inbound calls routed to humans

All-period calculation:
    31,602 ÷ 99,967 = 31.61%

Known human routes =
    66,075 agent terminal outcomes
    + 31,602 initial abandonments
    + 2,290 post-contact abandonments

AI terminal outcomes and 4 unclassified inbound calls
are outside this denominator.

Quality controls flagged 242 inconsistencies between terminal classification and registered human time, four unmapped inbound destinations and one duration record for review. These checks identify investigation cases; they do not prove that the underlying outcomes are wrong.

Decision logic

Prioritise the service queue, then inspect the handoff.

The findings support a targeted investigation plan. They identify where to look; capacity, routing and process evidence are still needed to explain the causes.

01
Concentration

Support dominates initial abandonment.

Action

Support contributes about 95% of initial abandonments. Start with its arrival pattern, queue coverage and waiting-time distribution; test staffing and callback changes against a stable baseline.

02
Handoff signal

Sales needs a transfer-path review.

Action

Sales records a 12.2% post-contact abandonment rate among calls that had human attention. Inspect transfer destinations, ownership and handoff steps before attributing the pattern to agent performance.

03
Measurement

Resolve the feedback recording rules.

Action

Confirm whether zero scores are submitted answers or defaults, retain the sensitivity comparison and track survey coverage alongside every score. The satisfaction mean alone cannot describe all callers.

Compare broad teams with the denominator visible
Initial routing teams, rather than individual staff. Initial abandonment uses known human routes; post-contact abandonment uses calls with human attention, within each initial routing team.
TeamKnown human routesInitial abandonmentsInitial abandonment ratePost-contact abandonment rate
Customer support86,37430,01734.75%2.15%
Sales9,6287647.94%12.20%
Network operations3,74269218.49%0.00%
Other22312957.85%0.00%
Monitoring sequenceSignal → investigation → measured change
BaselineDefinitions, volume and quality
InvestigationSupport access and Sales transfers
EvaluationControlled changes and comparable periods

No intervention was implemented in this case study. The recommendations are proposed next steps, with impact to be measured after implementation.

Scope and interpretation

Clear limits make the findings usable.

The report establishes a reproducible operational baseline. It keeps recording uncertainty, partial coverage and the distinction between endpoint and resolution inside the analysis.

Outcome meaningAn AI endpoint does not confirm resolution.

A terminal classification describes where the interaction ended. Some AI terminal records also contain human time, so they are not labelled as independently resolved.

SamplingSurvey respondents are a small subset.

NPS coverage is 5.73% of inbound calls. Satisfaction coverage is 7.50% of human-attention outcomes; these are different response bases.

Time coverageThe final captured period is partial.

Raw period volumes are not equivalent monthly totals. Generic public labels retain sequence and partial-period status while omitting source dates.

Public versionOnly aggregate analytical outputs are shared.

This page and its downloads omit contact-level records, staff identifiers, original exports and internal case documents. Broad team and period aggregates preserve the decision logic.

Continue exploring

More data work and professional context.

Explore the wider analytics portfolio or review the experience, tools and credentials behind this project.

Contact

Need a clearer answer from complex data?

I combine analytical discipline with multilingual SEO and editorial judgement to turn evidence into decisions people can act on.