# Customer Journey Management and the O-ring Theory

I was recently directed to this 2013 HBR article on managing customer journeys written by Alex Rawson, Ewan Duncan, and Conor Jones.

The article included this line:

Take new-customer onboarding, a journey that typically spans about three months and involves six or so phone calls, a home visit from a technician, and numerous web and mail exchanges. Each interaction with this provider had a high likelihood of going well. But in key customer segments, average satisfaction fell almost 40% over the course of the journey.

…which instantly broad to mind the O-ring theory of economic development. Wikipedia summarizes the theory like this: “[the O-ring theory] proposes that tasks of production must be executed proficiently together in order for any of them to be of high value.”

One fallout of the theory is that, because independent probabilities multiply, “doing a good job” often isn’t good enough. Take the example of the TV provider excerpted above. After a comprehensive customer journey analysis was conducted it was discovered that on average there were 19 separate customer interactions. Now suppose there is a 95% satisfaction rate for each interaction when considered alone. The probability that all 19 interactions will be successful for any given customer is only 37% (.95^19). Meaning the majority of customers will have at least one negative experience.

To think about the impact of cross-touchpoint experience management more fully I ran a simulation in R. I imagined there was a company that had 10,000 customers they were onboarding over the course of a year with 19 various touchpoints. To make the simulation more realistic I shifted from the binary “satisfied/unsatisfied” calculation above and imagined the satisfaction score distribution for each touchpoint show below. For most companies this would be a highly successful customer management program. And indeed, after running 1,000 simulations the average customer score is a 9.4 (which is just the expected value using the distribution below).

…but because there are so many customers and the probabilities of each touchpoint are independent 5.5% of customers ended up having two or more touchpoints they rated as a two or below. Nearly a quarter (24.5%) of customers had two or more touchpoints that were rated a five or below.

This could have drastic consequences for revenue. Two or more horrible touchpoint experiences during the onboarding process — which is obviously the first impression a customer has with a particular company — could lead customers to reduce the amount of service they buy or to abandonment altogether.

One way to think about fixing the problem of the customer journey is to envision transforming independent probabilities into conditional probabilities. So, for example, if a customer does experience a particularly bad touchpoint the conditional probability that their subsequent touchpoints will be managed with special diligence should increase.

From an O-ring point of view the answer is simple: ensure that you are creating agglomeration economies that attract high-performing individuals that help construct great teams. Groups of people that are operating together at a high-level inspire one another and hold one another accountable, creating a virtuous circle. Over time the natural effect is to weed out low performers. Great teams might reduce the probability of a poor experience from 5% to 0.5%.

Of course to perform at their maximum level teams need to be well trained and know what mark to shoot for. This is just the solution the authors helped the TV provider narrow in on.

The authors conclude that:

As company leaders dug further, they uncovered the root of the problem. Most customers weren’t fed up with any one phone call, field visit, or other interaction—in fact, they didn’t much care about those singular touchpoints. What reduced satisfaction was something few companies manage—cumulative experiences across multiple touchpoints and in multiple channels over time.

The pay TV company’s salespeople, for example, were focused on closing new sales and helping the customer choose from a dense menu of technology and programming options—but they had very little visibility into what happened after they hung up the phone, other than whether or not the customer went through with the installation. Confusion about promotions and questions about the installation process, hardware options, and channel lineups often caused dissatisfaction later in the process and drove queries to the call centers, but sales agents seldom got the feedback that could have helped them adjust their initial approach.

The solution to broken service-delivery chains isn’t to replace touchpoint management. Functional groups have important expertise, and touchpoints will continue to be invaluable sources of insight, particularly in the fast-changing digital arena. (See David Edelman’s“Branding in the Digital Age: You’re Spending Your Money in All the Wrong Places,” HBR December 2010.) Instead, companies need to embed customer journeys into their operating models in four ways: They must identify the journeys in which they need to excel, understand how they are currently performing in each, build cross-functional processes to redesign and support those journeys, and institute cultural change and continuous improvement to sustain the initiatives at scale.

R code below:

```###################################################################################################
# James McCammon
# Customer Experience Simulation
# 6/25/2016
# Version 1.0
###################################################################################################

# Function to get the number of customers with a certain number of ratings below a given threashold
percent_x_scores_below_y = function(sim, num_scores, equal_or_below_cutoff, num_customers) {
(sum(apply(sim,2,FUN=function(x) sum(x<=equal_or_below_cutoff)) >= num_scores)/num_customers) * 100
}

# Set variables
scale = 1:10
probs = c(.01, .01, .01, .01, .01, .01, .01, .03, .1, .8)
interactions.per.customer = 19
num_customers = 10000
n = interactions.per.customer*num_customers
num_sims = 1000

# Setup results matrix
sim_results = matrix(nrow=num_sims, ncol = 3)
colnames(sim_results) = c('Average_Customer_Rating',
'Percent_Having_Two_Scores_Below_Two',
'Percent_Having_Two_Scores_Below_Five')

# Run simulation
for(i in 1: num_sims) {
# Run sim
sim = matrix(sample(scale, size=n, replace=TRUE, prob=probs), ncol=num_customers, nrow=interactions.per.customer)
# Store mean score
sim_results[i,'Average_Customer_Rating'] = mean(apply(sim,2,mean))
# Store % of customers with two scores below 2
sim_results[i,'Percent_Having_Two_Scores_Below_Two'] = percent_x_scores_below_y(sim, num_scores=2, equal_or_below_cutoff=2, num_customers)
# Store % of customers with two scores below 5
sim_results[i,'Percent_Having_Two_Scores_Below_Five'] = percent_x_scores_below_y(sim, num_scores=2, equal_or_below_cutoff=5, num_customers)
}

# Calculate average across sims
apply(sim_results, 2, mean)```

Created by Pretty R at inside-R.org