Coconut Science and the Supply Chain of Ideas


at Lunchtime Talk, Cambridge Intellect Leadership Programme – Digital Transformation by Design on Jan 22, 2020
Neil D. Lawrence, University of Cambridge


Ideas help companies innovate. Different businesses have different approaches to innovation. Some companies centralise their innovation, other companies deploy scientists close to the business. There are two types of business, those where the demand for ideas is driven by customer needs (customer led), and those where ideas are being imposed by a business on the population (technology led). The focus in companies is on the generation of ideas, but this is an error. The focus should be on the supply chain of ideas. The process by which ideas are translated from their point of origin to solving a business task.

$$\newcommand{\tk}[1]{} %\newcommand{\tk}[1]{\textbf{TK}: #1} \newcommand{\Amatrix}{\mathbf{A}} \newcommand{\KL}[2]{\text{KL}\left( #1\,\|\,#2 \right)} \newcommand{\Kaast}{\kernelMatrix_{\mathbf{ \ast}\mathbf{ \ast}}} \newcommand{\Kastu}{\kernelMatrix_{\mathbf{ \ast} \inducingVector}} \newcommand{\Kff}{\kernelMatrix_{\mappingFunctionVector \mappingFunctionVector}} \newcommand{\Kfu}{\kernelMatrix_{\mappingFunctionVector \inducingVector}} \newcommand{\Kuast}{\kernelMatrix_{\inducingVector \bf\ast}} \newcommand{\Kuf}{\kernelMatrix_{\inducingVector \mappingFunctionVector}} \newcommand{\Kuu}{\kernelMatrix_{\inducingVector \inducingVector}} \newcommand{\Kuui}{\Kuu^{-1}} \newcommand{\Qaast}{\mathbf{Q}_{\bf \ast \ast}} \newcommand{\Qastf}{\mathbf{Q}_{\ast \mappingFunction}} \newcommand{\Qfast}{\mathbf{Q}_{\mappingFunctionVector \bf \ast}} \newcommand{\Qff}{\mathbf{Q}_{\mappingFunctionVector \mappingFunctionVector}} \newcommand{\aMatrix}{\mathbf{A}} \newcommand{\aScalar}{a} \newcommand{\aVector}{\mathbf{a}} \newcommand{\acceleration}{a} \newcommand{\bMatrix}{\mathbf{B}} \newcommand{\bScalar}{b} \newcommand{\bVector}{\mathbf{b}} \newcommand{\basisFunc}{\phi} \newcommand{\basisFuncVector}{\boldsymbol{ \basisFunc}} \newcommand{\basisFunction}{\phi} \newcommand{\basisLocation}{\mu} \newcommand{\basisMatrix}{\boldsymbol{ \Phi}} \newcommand{\basisScalar}{\basisFunction} \newcommand{\basisVector}{\boldsymbol{ \basisFunction}} \newcommand{\activationFunction}{\phi} \newcommand{\activationMatrix}{\boldsymbol{ \Phi}} \newcommand{\activationScalar}{\basisFunction} \newcommand{\activationVector}{\boldsymbol{ \basisFunction}} \newcommand{\bigO}{\mathcal{O}} \newcommand{\binomProb}{\pi} \newcommand{\cMatrix}{\mathbf{C}} \newcommand{\cbasisMatrix}{\hat{\boldsymbol{ \Phi}}} \newcommand{\cdataMatrix}{\hat{\dataMatrix}} \newcommand{\cdataScalar}{\hat{\dataScalar}} \newcommand{\cdataVector}{\hat{\dataVector}} \newcommand{\centeredKernelMatrix}{\mathbf{ \MakeUppercase{\centeredKernelScalar}}} \newcommand{\centeredKernelScalar}{b} \newcommand{\centeredKernelVector}{\centeredKernelScalar} \newcommand{\centeringMatrix}{\mathbf{H}} \newcommand{\chiSquaredDist}[2]{\chi_{#1}^{2}\left(#2\right)} \newcommand{\chiSquaredSamp}[1]{\chi_{#1}^{2}} \newcommand{\conditionalCovariance}{\boldsymbol{ \Sigma}} \newcommand{\coregionalizationMatrix}{\mathbf{B}} \newcommand{\coregionalizationScalar}{b} \newcommand{\coregionalizationVector}{\mathbf{ \coregionalizationScalar}} \newcommand{\covDist}[2]{\text{cov}_{#2}\left(#1\right)} \newcommand{\covSamp}[1]{\text{cov}\left(#1\right)} \newcommand{\covarianceScalar}{c} \newcommand{\covarianceVector}{\mathbf{ \covarianceScalar}} \newcommand{\covarianceMatrix}{\mathbf{C}} \newcommand{\covarianceMatrixTwo}{\boldsymbol{ \Sigma}} \newcommand{\croupierScalar}{s} \newcommand{\croupierVector}{\mathbf{ \croupierScalar}} \newcommand{\croupierMatrix}{\mathbf{ \MakeUppercase{\croupierScalar}}} \newcommand{\dataDim}{p} \newcommand{\dataIndex}{i} \newcommand{\dataIndexTwo}{j} \newcommand{\dataMatrix}{\mathbf{Y}} \newcommand{\dataScalar}{y} \newcommand{\dataSet}{\mathcal{D}} \newcommand{\dataStd}{\sigma} \newcommand{\dataVector}{\mathbf{ \dataScalar}} \newcommand{\decayRate}{d} \newcommand{\degreeMatrix}{\mathbf{ \MakeUppercase{\degreeScalar}}} \newcommand{\degreeScalar}{d} \newcommand{\degreeVector}{\mathbf{ \degreeScalar}} % Already defined by latex %\newcommand{\det}[1]{\left|#1\right|} \newcommand{\diag}[1]{\text{diag}\left(#1\right)} \newcommand{\diagonalMatrix}{\mathbf{D}} \newcommand{\diff}[2]{\frac{\text{d}#1}{\text{d}#2}} \newcommand{\diffTwo}[2]{\frac{\text{d}^2#1}{\text{d}#2^2}} \newcommand{\displacement}{x} \newcommand{\displacementVector}{\textbf{\displacement}} \newcommand{\distanceMatrix}{\mathbf{ \MakeUppercase{\distanceScalar}}} \newcommand{\distanceScalar}{d} \newcommand{\distanceVector}{\mathbf{ \distanceScalar}} \newcommand{\eigenvaltwo}{\ell} \newcommand{\eigenvaltwoMatrix}{\mathbf{L}} \newcommand{\eigenvaltwoVector}{\mathbf{l}} \newcommand{\eigenvalue}{\lambda} \newcommand{\eigenvalueMatrix}{\boldsymbol{ \Lambda}} \newcommand{\eigenvalueVector}{\boldsymbol{ \lambda}} \newcommand{\eigenvector}{\mathbf{ \eigenvectorScalar}} \newcommand{\eigenvectorMatrix}{\mathbf{U}} \newcommand{\eigenvectorScalar}{u} \newcommand{\eigenvectwo}{\mathbf{v}} \newcommand{\eigenvectwoMatrix}{\mathbf{V}} \newcommand{\eigenvectwoScalar}{v} \newcommand{\entropy}[1]{\mathcal{H}\left(#1\right)} \newcommand{\errorFunction}{E} \newcommand{\expDist}[2]{\left<#1\right>_{#2}} \newcommand{\expSamp}[1]{\left<#1\right>} \newcommand{\expectation}[1]{\left\langle #1 \right\rangle } \newcommand{\expectationDist}[2]{\left\langle #1 \right\rangle _{#2}} \newcommand{\expectedDistanceMatrix}{\mathcal{D}} \newcommand{\eye}{\mathbf{I}} \newcommand{\fantasyDim}{r} \newcommand{\fantasyMatrix}{\mathbf{ \MakeUppercase{\fantasyScalar}}} \newcommand{\fantasyScalar}{z} \newcommand{\fantasyVector}{\mathbf{ \fantasyScalar}} \newcommand{\featureStd}{\varsigma} \newcommand{\gammaCdf}[3]{\mathcal{GAMMA CDF}\left(#1|#2,#3\right)} \newcommand{\gammaDist}[3]{\mathcal{G}\left(#1|#2,#3\right)} \newcommand{\gammaSamp}[2]{\mathcal{G}\left(#1,#2\right)} \newcommand{\gaussianDist}[3]{\mathcal{N}\left(#1|#2,#3\right)} \newcommand{\gaussianSamp}[2]{\mathcal{N}\left(#1,#2\right)} \newcommand{\given}{|} \newcommand{\half}{\frac{1}{2}} \newcommand{\heaviside}{H} \newcommand{\hiddenMatrix}{\mathbf{ \MakeUppercase{\hiddenScalar}}} \newcommand{\hiddenScalar}{h} \newcommand{\hiddenVector}{\mathbf{ \hiddenScalar}} \newcommand{\identityMatrix}{\eye} \newcommand{\inducingInputScalar}{z} \newcommand{\inducingInputVector}{\mathbf{ \inducingInputScalar}} \newcommand{\inducingInputMatrix}{\mathbf{Z}} \newcommand{\inducingScalar}{u} \newcommand{\inducingVector}{\mathbf{ \inducingScalar}} \newcommand{\inducingMatrix}{\mathbf{U}} \newcommand{\inlineDiff}[2]{\text{d}#1/\text{d}#2} \newcommand{\inputDim}{q} \newcommand{\inputMatrix}{\mathbf{X}} \newcommand{\inputScalar}{x} \newcommand{\inputSpace}{\mathcal{X}} \newcommand{\inputVals}{\inputVector} \newcommand{\inputVector}{\mathbf{ \inputScalar}} \newcommand{\iterNum}{k} \newcommand{\kernel}{\kernelScalar} \newcommand{\kernelMatrix}{\mathbf{K}} \newcommand{\kernelScalar}{k} \newcommand{\kernelVector}{\mathbf{ \kernelScalar}} \newcommand{\kff}{\kernelScalar_{\mappingFunction \mappingFunction}} \newcommand{\kfu}{\kernelVector_{\mappingFunction \inducingScalar}} \newcommand{\kuf}{\kernelVector_{\inducingScalar \mappingFunction}} \newcommand{\kuu}{\kernelVector_{\inducingScalar \inducingScalar}} \newcommand{\lagrangeMultiplier}{\lambda} \newcommand{\lagrangeMultiplierMatrix}{\boldsymbol{ \Lambda}} \newcommand{\lagrangian}{L} \newcommand{\laplacianFactor}{\mathbf{ \MakeUppercase{\laplacianFactorScalar}}} \newcommand{\laplacianFactorScalar}{m} \newcommand{\laplacianFactorVector}{\mathbf{ \laplacianFactorScalar}} \newcommand{\laplacianMatrix}{\mathbf{L}} \newcommand{\laplacianScalar}{\ell} \newcommand{\laplacianVector}{\mathbf{ \ell}} \newcommand{\latentDim}{q} \newcommand{\latentDistanceMatrix}{\boldsymbol{ \Delta}} \newcommand{\latentDistanceScalar}{\delta} \newcommand{\latentDistanceVector}{\boldsymbol{ \delta}} \newcommand{\latentForce}{f} \newcommand{\latentFunction}{u} \newcommand{\latentFunctionVector}{\mathbf{ \latentFunction}} \newcommand{\latentFunctionMatrix}{\mathbf{ \MakeUppercase{\latentFunction}}} \newcommand{\latentIndex}{j} \newcommand{\latentScalar}{z} \newcommand{\latentVector}{\mathbf{ \latentScalar}} \newcommand{\latentMatrix}{\mathbf{Z}} \newcommand{\learnRate}{\eta} \newcommand{\lengthScale}{\ell} \newcommand{\rbfWidth}{\ell} \newcommand{\likelihoodBound}{\mathcal{L}} \newcommand{\likelihoodFunction}{L} \newcommand{\locationScalar}{\mu} \newcommand{\locationVector}{\boldsymbol{ \locationScalar}} \newcommand{\locationMatrix}{\mathbf{M}} \newcommand{\variance}[1]{\text{var}\left( #1 \right)} \newcommand{\mappingFunction}{f} \newcommand{\mappingFunctionMatrix}{\mathbf{F}} \newcommand{\mappingFunctionTwo}{g} \newcommand{\mappingFunctionTwoMatrix}{\mathbf{G}} \newcommand{\mappingFunctionTwoVector}{\mathbf{ \mappingFunctionTwo}} \newcommand{\mappingFunctionVector}{\mathbf{ \mappingFunction}} \newcommand{\scaleScalar}{s} \newcommand{\mappingScalar}{w} \newcommand{\mappingVector}{\mathbf{ \mappingScalar}} \newcommand{\mappingMatrix}{\mathbf{W}} \newcommand{\mappingScalarTwo}{v} \newcommand{\mappingVectorTwo}{\mathbf{ \mappingScalarTwo}} \newcommand{\mappingMatrixTwo}{\mathbf{V}} \newcommand{\maxIters}{K} \newcommand{\meanMatrix}{\mathbf{M}} \newcommand{\meanScalar}{\mu} \newcommand{\meanTwoMatrix}{\mathbf{M}} \newcommand{\meanTwoScalar}{m} \newcommand{\meanTwoVector}{\mathbf{ \meanTwoScalar}} \newcommand{\meanVector}{\boldsymbol{ \meanScalar}} \newcommand{\mrnaConcentration}{m} \newcommand{\naturalFrequency}{\omega} \newcommand{\neighborhood}[1]{\mathcal{N}\left( #1 \right)} \newcommand{\neilurl}{} \newcommand{\noiseMatrix}{\boldsymbol{ E}} \newcommand{\noiseScalar}{\epsilon} \newcommand{\noiseVector}{\boldsymbol{ \epsilon}} \newcommand{\norm}[1]{\left\Vert #1 \right\Vert} \newcommand{\normalizedLaplacianMatrix}{\hat{\mathbf{L}}} \newcommand{\normalizedLaplacianScalar}{\hat{\ell}} \newcommand{\normalizedLaplacianVector}{\hat{\mathbf{ \ell}}} \newcommand{\numActive}{m} \newcommand{\numBasisFunc}{m} \newcommand{\numComponents}{m} \newcommand{\numComps}{K} \newcommand{\numData}{n} \newcommand{\numFeatures}{K} \newcommand{\numHidden}{h} \newcommand{\numInducing}{m} \newcommand{\numLayers}{\ell} \newcommand{\numNeighbors}{K} \newcommand{\numSequences}{s} \newcommand{\numSuccess}{s} \newcommand{\numTasks}{m} \newcommand{\numTime}{T} \newcommand{\numTrials}{S} \newcommand{\outputIndex}{j} \newcommand{\paramVector}{\boldsymbol{ \theta}} \newcommand{\parameterMatrix}{\boldsymbol{ \Theta}} \newcommand{\parameterScalar}{\theta} \newcommand{\parameterVector}{\boldsymbol{ \parameterScalar}} \newcommand{\partDiff}[2]{\frac{\partial#1}{\partial#2}} \newcommand{\precisionScalar}{j} \newcommand{\precisionVector}{\mathbf{ \precisionScalar}} \newcommand{\precisionMatrix}{\mathbf{J}} \newcommand{\pseudotargetScalar}{\widetilde{y}} \newcommand{\pseudotargetVector}{\mathbf{ \pseudotargetScalar}} \newcommand{\pseudotargetMatrix}{\mathbf{ \widetilde{Y}}} \newcommand{\rank}[1]{\text{rank}\left(#1\right)} \newcommand{\rayleighDist}[2]{\mathcal{R}\left(#1|#2\right)} \newcommand{\rayleighSamp}[1]{\mathcal{R}\left(#1\right)} \newcommand{\responsibility}{r} \newcommand{\rotationScalar}{r} \newcommand{\rotationVector}{\mathbf{ \rotationScalar}} \newcommand{\rotationMatrix}{\mathbf{R}} \newcommand{\sampleCovScalar}{s} \newcommand{\sampleCovVector}{\mathbf{ \sampleCovScalar}} \newcommand{\sampleCovMatrix}{\mathbf{s}} \newcommand{\scalarProduct}[2]{\left\langle{#1},{#2}\right\rangle} \newcommand{\sign}[1]{\text{sign}\left(#1\right)} \newcommand{\sigmoid}[1]{\sigma\left(#1\right)} \newcommand{\singularvalue}{\ell} \newcommand{\singularvalueMatrix}{\mathbf{L}} \newcommand{\singularvalueVector}{\mathbf{l}} \newcommand{\sorth}{\mathbf{u}} \newcommand{\spar}{\lambda} \newcommand{\trace}[1]{\text{tr}\left(#1\right)} \newcommand{\BasalRate}{B} \newcommand{\DampingCoefficient}{C} \newcommand{\DecayRate}{D} \newcommand{\Displacement}{X} \newcommand{\LatentForce}{F} \newcommand{\Mass}{M} \newcommand{\Sensitivity}{S} \newcommand{\basalRate}{b} \newcommand{\dampingCoefficient}{c} \newcommand{\mass}{m} \newcommand{\sensitivity}{s} \newcommand{\springScalar}{\kappa} \newcommand{\springVector}{\boldsymbol{ \kappa}} \newcommand{\springMatrix}{\boldsymbol{ \mathcal{K}}} \newcommand{\tfConcentration}{p} \newcommand{\tfDecayRate}{\delta} \newcommand{\tfMrnaConcentration}{f} \newcommand{\tfVector}{\mathbf{ \tfConcentration}} \newcommand{\velocity}{v} \newcommand{\sufficientStatsScalar}{g} \newcommand{\sufficientStatsVector}{\mathbf{ \sufficientStatsScalar}} \newcommand{\sufficientStatsMatrix}{\mathbf{G}} \newcommand{\switchScalar}{s} \newcommand{\switchVector}{\mathbf{ \switchScalar}} \newcommand{\switchMatrix}{\mathbf{S}} \newcommand{\tr}[1]{\text{tr}\left(#1\right)} \newcommand{\loneNorm}[1]{\left\Vert #1 \right\Vert_1} \newcommand{\ltwoNorm}[1]{\left\Vert #1 \right\Vert_2} \newcommand{\onenorm}[1]{\left\vert#1\right\vert_1} \newcommand{\twonorm}[1]{\left\Vert #1 \right\Vert} \newcommand{\vScalar}{v} \newcommand{\vVector}{\mathbf{v}} \newcommand{\vMatrix}{\mathbf{V}} \newcommand{\varianceDist}[2]{\text{var}_{#2}\left( #1 \right)} % Already defined by latex %\newcommand{\vec}{#1:} \newcommand{\vecb}[1]{\left(#1\right):} \newcommand{\weightScalar}{w} \newcommand{\weightVector}{\mathbf{ \weightScalar}} \newcommand{\weightMatrix}{\mathbf{W}} \newcommand{\weightedAdjacencyMatrix}{\mathbf{A}} \newcommand{\weightedAdjacencyScalar}{a} \newcommand{\weightedAdjacencyVector}{\mathbf{ \weightedAdjacencyScalar}} \newcommand{\onesVector}{\mathbf{1}} \newcommand{\zerosVector}{\mathbf{0}} $$

Jeff’s Shop

Jeff owns a large shop. He doesn’t know what the future looks like, but what he does know is that his customers won’t want to pay more than they pay today. They won’t want to wait longer for orders. And they won’t want a reduced selection in his store.

Jeff worries about the future a lot, and so he’s always making sure that his cusotmers pay less, don’t have to wait and have the best selection available.

I like the simplicity of Jeff’s perspective. Predicting what will happen in the future is difficult, but predicting what won’t happen is easier. Jeff’s real point is that for his shop, he wants all his staff to be focussing on all of these things all the time.

The way Jeff does this is that he focusses on his supply chain. He realises that always having the right things in stock brings customers back. So he’s prepared to make a loss on some products to maintain customer loyalty. Jeff’s main business is deliveries, and his biggest sales occur in the Christmas period. Jeff’s supply chain is designed to deliver Christmas. He is Father Christmas, Papa Noel, Santa Claus, Christkind, Bom Velhinho and the Befana rolled into one. His entire supply chain is designed to handle gift-giving at this time of year.

To deliver all these presents, just like Santa, Jeff has a fleet of flying machines. Some of these flying machines are designed to go across continents. And some of these flying machines are designed to go across towns. They don’t drop presents down your chimney, but they come close.


Jeff has another big worry. He thinks his store is the most innovative, but he’s always horizon scanning. Jeff grew his store by exploiting the latest technology, being agile in his thinking and always staying one step ahead of his rivals. He asks all his staff to always be looking out for ways they can improve, to see what the new innovations are, to think about how the store can use them.

Jeff knows that one day a young rival will come along with a new way of delivering products, of delivering gifts, and that young rival will put him out of business. Although he’s never said it, I think that deep down, Jeff actually likes this idea, he thinks that’s the way it should be. But still, he wants to delay the day that this happens to his store as long as possible.

Jeff sees this challenge as the innovator’s dilemma. The idea that one day his staff will become complacent, they’ll stop looking at ways to improve. I’ve not talked to Jeff much about innovation, but I do know he thinks that an idea can never be disruptive unless its deployed to the customer.

Figure: The innovator’s dilemma explains the challenge of being the incumbent business with refined processes, but not being agile enough to respond when new technology arrives. This is what keeps the little Jeff in my head awake at night.

Little Jeff [edit]

I used to work for Jeff, and one of the things I noticed about working for Jeff is he puts a lot of effort in trying to get you to understand how he thinks. He doesn’t want to tell you what to do, he doesn’t have the time. His company is too big. He wants you to know how he thinks about stuff. He wants to put a little Jeff inside your head. So when you’re making a decision about something, you don’t have to ask the real Jeff, you just ask the little Jeff. When I was working for Jeff, I was responsible for innovation. Jeff got interested in a set of techniques I’m an expert in and he wanted me to look at how they might help his store. I did work on that, but I’m not going to tell you too much about that today. But I did get to thinking about how innovation works, and how it might work better for Jeff’s store.

I never got a chance to talk to Jeff in person about this, but I did spend a lot of time with the little Jeff inside my head. And here’s what he said to me.

He said: “Neil, I don’t know what the future’s going to look like. But I do know that my store is never going to want to pay more for ideas, it’s never going to want to have to wait longer for those ideas to be deployed for our customers and it’s never going to want to have fewer ideas available.”

Another friend of mine who still works for Jeff is called Narayan. Narayan has spent his life working in supply chain. He liked to tell me about a man by a river in Kerala, South India who sold coconuts. The man sat beside a river and sold coconuts to people on boats. The man would sit under a coconut tree. When someone stopped to buy a coconut the man would climb the tree and cut down a coconut and sell it to the customer. When that tree ran out of coconuts the man would move to another tree. Narayan used to say that this man had the shortest supply chain in the world. Then Narayan would laugh his booming laugh.

When he’d stopped laughing, Narayan would tell me that the magic of supply chain is it takes the waiting away. It makes all the customers feel that everything grows on trees, and its all sitting there ripe and ready to pluck. And all that’s happening is that the store-owner is popping up the tree and bringing us a fresh one down.

Figure: The word Kerala may come from the Malayalam word for “coconut tree land”.

Dabbawalas [edit]

Narayan once visited me in Cambridge. He wanted to go out to eat so he got a restaurant recommendation. Narayan lives in California but he’s originally from Mumbai. I suppose whoever he asked was very proud of the Indian food in Cambridge because they told him to go to the best Indian Restaurant in Cambridge. That restaurant is called the Tiffin Truck.

Figure: A Dabba or Tiffin Box used for transporting lunches in Mumbai.

Figure: These dabbawalas are walking with the Tiffin Boxes, but trains, bicycles and carts are all used.

The next day I saw Narayan and when I asked him about his dinner he scowled a bit. He asked if I knew what a Tiffin Box was. I didn’t. Then Narayan told me about the dabbawalas.

The dabbawalas work mainly in Mumbai. Every day they deliver lunches to people’s offices. But they are not like Just Eat, or Deliveroo, or any of the new gig economy services. Firstly, they’ve been delivering since 1890. Secondly, they deliver each lunch freshly made from people’s homes. They are a distribution system that takes a freshly made lunch from your house to your desk. The lunches are stored in Tiffin Boxes. The Tiffin Boxes are passed form one dabbawala to another. Some dabbawallas are on trains and some are on bicycles and some are on foot. Eventually a fresh lunch from your home arrives at your desk. After you are finished, the dabbawalas take your Tiffin Box back home for you. So they also manage a reverse-supply chain. The magic of supply chain is in the links and planning that make this happen.

Because Narayan worked in California and I worked in Cambridge. We would always be in meetings on video screens. Because I was new in the team, and he was an expert in supply chain, after each meeting Narayan would spend some time explaining to me what was going on. I think this is how I ended up with a little Narayan in my head to keep the little Jeff company.

There are around 5000 dabbawalas in Mumbai, and each day they deliver around 130,000 lunch boxes. The service runs during monsoons, riots, famines and terrorist attacks. Can you imagine how important it is for the system that everyday they turn up and do their job? If anything goes wrong, they have to quickly adapt and plug the gap.

The work of the dabbawalas is similar to the work in the supply chain in Jeff’s store. There is constant troubleshooting and a daily pressure to deliver, to keep the system moving. This is where the innovator’s dilemma comes back in. If you’re so busy efficiently delivering parcels on a daily basis, you can’t stop and think about how you might want to deliver parcels in the future. You don’t have time to think and reflect.

So maybe when Jeff says he needs the team to deliver faster, not everyone’s always had the time to reflect on how we might be doing that. The team’s focussed on delivering, not innovating.

Coconut Science [edit]

This, says real Narayan, is where a “supply chain of ideas” comes in. The infrastructure for taking innovative ideas from their source to where they’re required.

Now I’m not a very imaginative person, or maybe I was putting too little effort into imagining Jeff, or maybe I was spending too much time working on supply chain, or maybe little Narayan was really starting to get in my head (real Narayan has a very resonant voice). But when Narayan said “supply chain of ideas” I realised that I was a coconut-scientist.

I was like the guy sitting beside the river under a coconut palm. Every time someone stopped at the bank, I climbed the tree and gave them a coconunt. But my coconut was a scientific solution, my coconuts were machine learning algorithms. You could have any idea you liked, as long as it was a coconut.

The challenge is that companies don’t think about their supply chain of ideas holistically. Jeff’s company is customer driven, that means he wants a ‘pull’ supply chain of ideas. One where the supply chain is driven by customer demand, not by the supply side. But little Jeff still wants that magical effect where the right idea appears by the river bank, just as the relevant tech team is coming by.

Right, you think, you just need to build a Walmart of ideas. A large institute where all the ideas are developed together. The problem with this model is that the Walmart is too far from the river bank. So very few of these ideas get converted to products. Little Jeff dislikes this idea even more than coconut science. If there’s one thing that gets little Jeff stomping its when people innovate for the sake of innovation, rather than for the sake of the customer.

In my head, what little Jeff has learnt from little Narayan was that disruptive innovation needs the magic of supply chain. Disruptive innovation requires that you are ambivalent to the origin of ideas and the route by which those ideas reach the customer. The important thing is that there is a wide diversity of ideas available, the ideas are delivered cheaply and they can be made available quickly. Disruptive innovation needs the dabbawalas of ideas.


This talk summarises conversations Narayan and I used to have over beers about supply chain and science. Narayan says he thinks the idea of supply chain of ideas first came to him just before the INFORMS conference in 1999 (an OR conference). Just around the point when he was having to chose between academia and industry … he chose industry.

Back outside my head and in the real world, I don’t know if there’s any company that has understood Narayan’s idea. There are many consequences to how you should be doing innovation once you understand the supply chain of ideas. In particular, there is the difference between a pull and a push supply chain. There are issues around stimulating both demand and supply and there is the issue of the information infrastructure required to match these two.

Any company that gets this right will benefit from cheap and efficient delivery of innovation, but Jeff’s delivery infrastructure required time and investment. The supply chain of ideas won’t happen overnight.