Tech Stack Trees
An exploration of tech stacks & how they can be used in strategy and investing.
In this edition I explore a model I’ve used for a while now to help better understand a company or product. As usually the case with writing in public, I’m really glad I did, as it helped me flesh out and better make sense of how I use the idea.
First, a few interesting links: For programmers — I stumbled across Joel Spolsky’s old post on why rewriting code is a bad idea, and it resonated strongly. Why play is so important, both in nature and in invention. There’ve been multiple posts recently on the good that’s come out of the past few years: Cracks in the Great Stagnation, What might an end to the Great Stagnation consist of? Tim Ferriss’s interview with Jerry Seinfeld was really great.
Now on to the main event. Read it in full below or follow this link to the original post.
Every product is built on and enabled by one or more technologies.
Understanding where a product fits on its higher-level tech stack is an important part of any long-term strategy or investment thesis.
The following is an exploration of tech stacks: what they are, how to model them, and what roles their components play. I also discuss what insights can be gained, such as potential opportunities to expand the business.
Stack Trees
Typically, a tech stack shows what infrastructure a technology is directly built on or requires. A SaaS startup for example could have a front- and back-end software stack with a cloud provider like AWS under it. The tech in focus is on top of the stack, with the supporting layers below it.
A tech stack tree is a higher-level version, branching both above and below the “layer” in focus. It shows both what the technology directly relies on and what relies on it. Stacks are fractal in nature, just like trees. An innovation spawns many others that use it, which further enable others, and so on.
A stack tree shows the relevant “slice” of the full dependency graph, going only a few nodes out. It looks something like this:
How to model a stack tree
Step 1: Determine the core tech. The first step is to decide what the actual technology in focus is. A technology in this case is a physical tool, process or system of other technologies that combine to do a job. It does not include businesses or social innovations. (A “business” is just a group of physical and social technologies united under a strategy — but we’re only concerned with the physical part here.1)
Examples can range from the simple: hammers, glass, newspapers, or an assembly line process; to the more complex: CPUs, streaming video services, blockchains, smartphones, or nuclear reactors.
Step 2: Layers below. What are the primary technologies and processes needed to create and maintain the core tech? What does it need not only to function but to be sustainable? Clues can be found in:
Why now: What enabled the tech in the first place? Why wasn’t it widely used 20 or 50 years earlier?
Suppliers & major cost centers of businesses producing the tech. (Infrastructure, manufacturing tech, service networks…)
Supply chain & logistics: What gets the product/service to customers? (Transportation, shipping, internet…)
Distribution tech: What gets the customers to the product? (Retailers, advertising, search engines…)
Step 3: Layers above. What does the tech directly enable? It’s possible there are no layers here. Many well-known innovations don’t directly enable other tech, like Netflix.
What do other businesses use it for? Who is it a supplier to?
Is there anything in-between the technology and the ultimate end-user?
Is it a marketplace or multi-sided network that connects many groups of users?
Stack tree examples
Here’s a few examples of stack trees from the tech industry, although they can be drawn out for products any industry:
What insights can be gained?
Companies are embedded in value networks because their products generally are embedded, or nested hierarchically, as components within other products and eventually within end systems of use. — Clayton Christensen
A tech stack tree is one way of looking at a company’s value network. This can lead to insights into where value flows, who captures it, and potential opportunities to expand the business.
What layers in the stack capture the most value?
Which technologies accrue most of the value depend on many things: how much value (productivity) created relative to alternatives, availability of potential substitutes, the size of the overall need, or other competitive advantages inherent to the business model.
One of the models Clayton Christensen uses makes sense to apply here: Where is the bottleneck in demand? In other words, where in the stack is the biggest difference between performance demanded and performance supplied? What needs to be better?
Nvidia is a good example here. They keep churning out GPUs with higher capabilities and the market keeps needing more. Supply hasn’t kept up with demand and that’s likely to continue for some time. This bottleneck (along with other factors ) allows the GPU layer to capture a lot of value.
Are there opportunities to expand into adjacent technologies?
Amazon (see stack above) is the prototypical example here. They started as an online marketplace with some fulfillment operations, and over time have expanded in all directions.
In more traditional business thinking, you consider expanding vertically into suppliers and customers or horizontally across industries. Traversing a tech stack is similar, but to me more focused on the true technological and needs-based relationships. Traditional business thinking would have never led to Amazon expanding into internet infrastructure via AWS.
Of course, expanding for the sake of it is never a good strategy. You have to ask:
Do our current products or processes give us an advantage here?
How much value does the layer capture? (Is it a bottleneck in demand?)
Are there existing barriers to entry, and if so, does our position in other stack layers help overcome them?
Does this improve the outcomes for our current customers?
Will expansion endanger our relationships with partners or customers?
Short case study: Food delivery apps
The core tech here is a mobile or desktop app where you can order food from many local restaurants and get it delivered within ~1 hour. DoorDash, UberEats, Postmates, etc.
Layers below: What are their major cost centers? Restaurants and delivery drivers. What enabled delivery apps? Primarily ubiquitous smartphones and access to GPS-based navigation. Restaurants also need to have some way to communicate, whether by phone or Wifi-based tablets, and be able to package food in proper take-out containers (plus potentially many others to manage operations).
Layers above: What needs delivery apps to run? Cloud kitchens, which operate large strategically located kitchens that can make food for many different branded “restaurants”. Recently a further layer was added with the concept of pop-up branded chains, which uses the cloud kitchen & delivery infrastructure.
What captures the value? In the stack above, smartphones capture far more value than any other tech — but they’re a platform with thousands of other use cases. In this case we just want to focus on value flow within the food delivery market. It may not be clear at first who captures more value: the delivery apps or the restaurants, given companies like DoorDash are losing so much money. But it’s clear that restaurants are not a bottleneck in demand — so it’s likely the apps that capture more value. And it seems their unit economics bear this out.
Opportunities for expansion? The clearest opportunity to expand within the tech stack is into cloud kitchens. This could potentially alienate some restaurant partners, but restaurants are so fragmented it shouldn’t matter. I think this has a lot of potential given: captive customers, synergies with delivery app, and lower costs with economies of scale and not having to operate normal restaurant ops.
Functions in the stack
How would you classify technologies in the stack? I think it’s most informative to categorize by what pattern (or archetype) they match in the greater ecosystem. These are functions that can exist in any industry or stack tree: Platforms, protocols, etc.
I’ll follow up with another post including examples of different tech functions and stack patterns.
To be continued…
Thanks to Leo Polovets and Jake Singer for helpful feedback on this post.
Physical technologies are “methods and designs for transforming matter, energy, and information from one state into another in pursuit of [goals]“. There are also social technologies (organizational processes, culture, values, incentive systems, memes, etc.) that evolve and build off of each other over time. (Definitions from The Origin of Wealth, by Eric Beinhocker.)