Learn AI Series (#148) - The Economics of AI
Learn AI Series (#148) - The Economics of AI

What will I learn
- AI and labor markets -- why AI eats TASKS and not whole jobs, why this wave hits white-collar cognitive work in a way no previous wave did, and why "can you use the tool" beats "can you outrun the tool";
- winner-take-most dynamics -- the three compounding loops (data flywheel, scale economics, talent concentration) that decide who ends up on top and why the foundation-model layer is an oligopoly while the application layer stays a knife-fight;
- the moat question -- open source versus closed, why the model weights are NOT the moat, and what the real moats actually are;
- the compute supply chain -- chips, cloud, models, applications, and the "smiling curve" that says where the margins actually live;
- business models for AI -- API-as-a-service, AI-enhanced SaaS, vertical products, picks-and-shovels, data licensing, and how to tell a business apart from a feature;
- cost deflation -- the single most important economic fact about AI, roughly 10x per year, and why it quietly rewrites every build-versus-buy decision you will ever make.
Requirements
- A working modern computer running macOS, Windows or Ubuntu;
- Python 3.10+ with PyTorch installed (
pip install torch) -- every snippet here runs on a plain CPU in a second or two, no GPU needed anywhere; - You have read #134 (AI infrastructure economics) and #135 (building AI teams and processes), because this episode zooms out from "what does the hardware cost" to "who captures the value." It also helps to remember #61 (RLHF) and #127 (AI security), since we settle last week's homework on both before we start.
Difficulty
- Beginner
Curriculum (of the Learn AI Series):
- Learn AI Series (#1) - What Machine Learning Actually Is
- Learn AI Series (#2) - Setting Up Your AI Workbench - Python and NumPy
- Learn AI Series (#3) - Your Data Is Just Numbers - How Machines See the World
- Learn AI Series (#4) - Your First Prediction - No Math, Just Intuition
- Learn AI Series (#5) - Patterns in Data - What "Learning" Actually Looks Like
- Learn AI Series (#6) - From Intuition to Math - Why We Need Formulas
- Learn AI Series (#7) - The Training Loop - See It Work Step by Step
- Learn AI Series (#8) - The Math You Actually Need (Part 1) - Linear Algebra
- Learn AI Series (#9) - The Math You Actually Need (Part 2) - Calculus and Probability
- Learn AI Series (#10) - Your First ML Model - Linear Regression From Scratch
- Learn AI Series (#11) - Making Linear Regression Real
- Learn AI Series (#12) - Classification - Logistic Regression From Scratch
- Learn AI Series (#13) - Evaluation - How to Know If Your Model Actually Works
- Learn AI Series (#14) - Data Preparation - The 80% Nobody Talks About
- Learn AI Series (#15) - Feature Engineering and Selection
- Learn AI Series (#16) - Scikit-Learn - The Standard Library of ML
- Learn AI Series (#17) - Decision Trees - How Machines Make Decisions
- Learn AI Series (#18) - Random Forests - Wisdom of Crowds
- Learn AI Series (#19) - Gradient Boosting - The Kaggle Champion
- Learn AI Series (#20) - Support Vector Machines - Drawing the Perfect Boundary
- Learn AI Series (#21) - Mini Project - Predicting Crypto Market Regimes
- Learn AI Series (#22) - K-Means Clustering - Finding Groups
- Learn AI Series (#23) - Advanced Clustering - Beyond K-Means
- Learn AI Series (#24) - Dimensionality Reduction - PCA
- Learn AI Series (#25) - Advanced Dimensionality Reduction - t-SNE and UMAP
- Learn AI Series (#26) - Anomaly Detection - Finding What Doesn't Belong
- Learn AI Series (#27) - Recommendation Systems - "Users Like You Also Liked..."
- Learn AI Series (#28) - Time Series Fundamentals - When Order Matters
- Learn AI Series (#29) - Time Series Forecasting - Predicting What Comes Next
- Learn AI Series (#30) - Natural Language Processing - Text as Data
- Learn AI Series (#31) - Word Embeddings - Meaning in Numbers
- Learn AI Series (#32) - Bayesian Methods - Thinking in Probabilities
- Learn AI Series (#33) - Ensemble Methods Deep Dive - Stacking and Blending
- Learn AI Series (#34) - ML Engineering - From Notebook to Production
- Learn AI Series (#35) - Data Ethics and Bias in ML
- Learn AI Series (#36) - Mini Project - Complete ML Pipeline
- Learn AI Series (#37) - The Perceptron - Where It All Started
- Learn AI Series (#38) - Neural Networks From Scratch - Forward Pass
- Learn AI Series (#39) - Neural Networks From Scratch - Backpropagation
- Learn AI Series (#40) - Training Neural Networks - Practical Challenges
- Learn AI Series (#41) - Optimization Algorithms - SGD, Momentum, Adam
- Learn AI Series (#42) - PyTorch Fundamentals - Tensors and Autograd
- Learn AI Series (#43) - PyTorch Data and Training
- Learn AI Series (#44) - PyTorch nn.Module - Building Real Networks
- Learn AI Series (#45) - Convolutional Neural Networks - Theory
- Learn AI Series (#46) - CNNs in Practice - Classic to Modern Architectures
- Learn AI Series (#47) - CNN Applications - Detection, Segmentation, Style Transfer
- Learn AI Series (#48) - Recurrent Neural Networks - Sequences
- Learn AI Series (#49) - LSTM and GRU - Solving the Memory Problem
- Learn AI Series (#50) - Sequence-to-Sequence Models
- Learn AI Series (#51) - Attention Mechanisms
- Learn AI Series (#52) - The Transformer Architecture (Part 1)
- Learn AI Series (#53) - The Transformer Architecture (Part 2)
- Learn AI Series (#54) - Vision Transformers
- Learn AI Series (#55) - Generative Adversarial Networks
- Learn AI Series (#56) - Mini Project - Building a Transformer From Scratch
- Learn AI Series (#57) - Language Modeling - Predicting the Next Word
- Learn AI Series (#58) - GPT Architecture - Decoder-Only Transformers
- Learn AI Series (#59) - BERT and Encoder Models
- Learn AI Series (#60) - Training Large Language Models
- Learn AI Series (#61) - Instruction Tuning and Alignment
- Learn AI Series (#62) - Prompt Engineering - Getting the Most from LLMs
- Learn AI Series (#63) - Embeddings and Vector Search
- Learn AI Series (#64) - Retrieval-Augmented Generation (RAG) - Basics
- Learn AI Series (#65) - RAG - Advanced Techniques
- Learn AI Series (#66) - Working with LLM APIs
- Learn AI Series (#67) - Building AI Agents (Part 1) - Foundations
- Learn AI Series (#68) - Building AI Agents (Part 2) - Advanced Patterns
- Learn AI Series (#69) - Fine-Tuning Language Models
- Learn AI Series (#70) - Running Local Models
- Learn AI Series (#71) - Text Generation Techniques
- Learn AI Series (#72) - Tokenization Deep Dive
- Learn AI Series (#73) - LLM Evaluation
- Learn AI Series (#74) - The Hugging Face Ecosystem
- Learn AI Series (#75) - Multimodal Models - Text Meets Vision
- Learn AI Series (#76) - Mini Project - Your Own AI Assistant
- Learn AI Series (#77) - Image Processing Fundamentals
- Learn AI Series (#78) - Object Detection (Part 1) - Foundations
- Learn AI Series (#79) - Object Detection (Part 2) - Modern Approaches
- Learn AI Series (#80) - Image Segmentation
- Learn AI Series (#81) - Pose Estimation and Tracking
- Learn AI Series (#82) - Optical Character Recognition
- Learn AI Series (#83) - Video Understanding
- Learn AI Series (#84) - Generative Images - Diffusion Models (Part 1)
- Learn AI Series (#85) - Generative Images - Diffusion Models (Part 2)
- Learn AI Series (#86) - Image-to-Image and Editing
- Learn AI Series (#87) - 3D Vision
- Learn AI Series (#88) - Face Analysis
- Learn AI Series (#89) - Medical and Scientific Imaging
- Learn AI Series (#90) - Self-Supervised Learning for Vision
- Learn AI Series (#91) - Mini Project - Building a Visual AI System
- Learn AI Series (#92) - Audio Fundamentals for AI
- Learn AI Series (#93) - Speech Recognition
- Learn AI Series (#94) - Text-to-Speech (TTS)
- Learn AI Series (#95) - Audio Classification
- Learn AI Series (#96) - Music Generation
- Learn AI Series (#97) - Speaker Recognition and Diarization
- Learn AI Series (#98) - Natural Language Understanding for Voice
- Learn AI Series (#99) - Audio Enhancement
- Learn AI Series (#100) - Multimodal Audio-Visual Models
- Learn AI Series (#101) - Mini Project: Voice-Controlled AI Assistant
- Learn AI Series (#102) - What Is Reinforcement Learning?
- Learn AI Series (#103) - Multi-Armed Bandits
- Learn AI Series (#104) - Dynamic Programming
- Learn AI Series (#105) - Monte Carlo Methods
- Learn AI Series (#106) - Temporal Difference Learning
- Learn AI Series (#107) - Deep Q-Networks (DQN)
- Learn AI Series (#108) - Policy Gradient Methods
- Learn AI Series (#109) - Advanced Policy Optimization
- Learn AI Series (#110) - Model-Based Reinforcement Learning
- Learn AI Series (#111) - Multi-Agent Reinforcement Learning
- Learn AI Series (#112) - RL for Games
- Learn AI Series (#113) - RL for Real-World Applications
- Learn AI Series (#114) - Inverse Reinforcement Learning
- Learn AI Series (#115) - Offline Reinforcement Learning
- Learn AI Series (#116) - Mini Project: Training a Game-Playing AI
- Learn AI Series (#117) - ML System Design
- Learn AI Series (#118) - Data Engineering for AI
- Learn AI Series (#119) - Experiment Tracking and Reproducibility
- Learn AI Series (#120) - Model Optimization: Making Models Fast
- Learn AI Series (#121) - Model Serving Architecture
- Learn AI Series (#122) - Edge AI: Running Models on Devices
- Learn AI Series (#123) - Monitoring ML in Production
- Learn AI Series (#124) - CI/CD for Machine Learning
- Learn AI Series (#125) - GPU Programming Basics
- Learn AI Series (#126) - Distributed Training
- Learn AI Series (#127) - AI Security
- Learn AI Series (#128) - Privacy-Preserving AI
- Learn AI Series (#129) - AutoML and Neural Architecture Search
- Learn AI Series (#130) - Causal Inference and ML
- Learn AI Series (#131) - Graph Neural Networks
- Learn AI Series (#132) - AI for Structured Data
- Learn AI Series (#133) - Synthetic Data Generation
- Learn AI Series (#134) - AI Infrastructure Economics
- Learn AI Series (#135) - Building AI Teams and Processes
- Learn AI Series (#136) - Mini Project: Production AI Platform
- Learn AI Series (#137) - Foundation Models
- Learn AI Series (#138) - Multimodal AI
- Learn AI Series (#139) - AI for Code
- Learn AI Series (#140) - Scientific AI
- Learn AI Series (#141) - Robotics and Embodied AI
- Learn AI Series (#142) - AI Reasoning and Planning
- Learn AI Series (#143) - Continual Learning
- Learn AI Series (#144) - Few-Shot and Zero-Shot Learning
- Learn AI Series (#145) - Neuro-Symbolic AI
- Learn AI Series (#146) - Explainability and Interpretability
- Learn AI Series (#147) - AI Safety and Alignment
- Learn AI Series (#148) - The Economics of AI (this post)
Learn AI Series (#148) - The Economics of AI
I closed #147 by admitting we had carefully tiptoed around a giant question the whole time we talked about safety. We spent that episode building brakes -- the KL leash, scalable oversight, Constitutional AI, red teaming -- and I kept insisting these are engineering problems, not seminar topics. But which brakes actually get bolted onto a shipping product? That is not decided by the researcher who invented them. It is decided by a spreadsheet. Follow the money and half of this field suddenly makes sense, so let us finally follow it ;-)
This is a lighter episode on the PyTorch, heavier on the thinking. We have spent 147 episodes learning how to build these systems. Now we look at what happens when they collide with the economy: who captures the value, who loses it, and why the answer decides which of your beautiful models ever leaves the notebook. Understanding this will make you a better practitioner, because "can I build it" and "should I build it" are two very different questions, and the second one pays your rent.
Solutions to episode #147's exercises
House rules first -- we settle last week's homework before we open anything new. #147 was safety and alignment, and all three tasks were about watching optimization misbehave and then measuring the misbehaviour.
Exercise 1 -- Put the reward hacker on the leash. Take the reward-model overoptimization loop from #147, wrap the KL penalty around the inner optimization using the untouched starting point as the "reference," sweep beta across a few values, and print the final proxy reward and true quality for each.
import torch
import torch.nn as nn
torch.manual_seed(0)
def true_quality(x):
return -(x ** 2).mean(dim=-1, keepdim=True) # peaks when x is near zero
rm = nn.Sequential(nn.Linear(32, 64), nn.ReLU(), nn.Linear(64, 1))
data = torch.randn(512, 32) * 0.5
opt = torch.optim.Adam(rm.parameters(), lr=1e-2)
for _ in range(300):
loss = ((rm(data) - true_quality(data)) ** 2).mean()
opt.zero_grad(); loss.backward(); opt.step()
ref = torch.zeros(1, 32) # the sensible reference point
for beta in (0.0, 0.1, 1.0):
x = torch.zeros(1, 32, requires_grad=True)
inner = torch.optim.Adam([x], lr=0.05)
for _ in range(120):
reward = rm(x)
kl = ((x - ref) ** 2).sum() # proxy for drift from reference
inner.zero_grad(); (-(reward - beta * kl)).backward(); inner.step()
print(f"beta {beta:>4}: proxy {rm(x).item():+.3f} TRUE {true_quality(x).item():+.3f}")
At beta = 0.0 the optimizer runs free, the proxy reward soars and true quality face-plants -- that is Goodhart in one line. At beta = 1.0 the leash is so short the point barely moves off the reference, so true quality stays fine but you learned almost nothing. The middle value is the sweet spot: beta = 0.1 protects true quality while still letting the point improve, and the extremes fail for the mirror-image reasons -- too loose and it hacks, too tight and it is frozen.
Exercise 2 -- Judge a one-round debate. Two debaters each return a number as their claim about a hidden answer; a judge picks the claim closer to a value it can cheaply verify but not produce alone. Show that with at least one honest debater the judge beats a coin flip.
import torch
torch.manual_seed(1)
def debate_round(truth, honest_a, honest_b):
# an honest debater reports near-truth; a liar reports something far off
claim_a = truth + (0.1 if honest_a else 5.0) * torch.randn(1)
claim_b = truth + (0.1 if honest_b else 5.0) * torch.randn(1)
# the judge cannot GENERATE the truth, but given a noisy check it can VERIFY closeness
check = truth + 0.3 * torch.randn(1)
pick_a = (claim_a - check).abs() < (claim_b - check).abs()
winner = claim_a if pick_a else claim_b
return (winner - truth).abs().item() < 1.0 # did the judge land near truth?
trials = 2000
wins = sum(debate_round(torch.randn(1), True, False) for _ in range(trials))
print(f"one honest debater: judge correct {wins / trials:.1%} of the time")
With one honest debater in the room the judge lands near the truth far more often than the 50% a coin would give you, because the honest claim sits close to the verification signal and the lie sits nowhere near it. The load-bearing assumption, in two sentences: the whole trick works only because VERIFYING a claim against a cheap check is easier than GENERATING the right answer from scratch. If judging were as hard as answering, debate would buy you nothing and you would be back to needing a superhuman referee.
Exercise 3 -- Measure a red team. A target that is "unsafe" whenever an attack contains a banned keyword, a keyword-stuffing attacker that includes the banned word with probability p, and a classifier that detects it. Run for p = 0.2 and p = 0.8 and confirm the reported success rate tracks p.
import random
random.seed(0)
BANNED = "detonate"
def target(attack):
return "sure, here is how" if BANNED in attack else "I cannot help with that"
def attacker(p):
return f"please {BANNED} the thing" if random.random() < p else "please help me bake"
def classifier(response):
return response.startswith("sure") # flags an unsafe completion
def red_team(p, n=2000):
hits = sum(classifier(target(attacker(p))) for _ in range(n))
return hits / n
for p in (0.2, 0.8):
print(f"p={p}: measured attack success rate {red_team(p):.1%}")
The measured success rate lands right on top of p, which is the point -- your automated number faithfully reports how often THIS attacker got through. Two sentences on the trap: a LOW automated success rate is not proof the model is safe, it is proof this particular attacker is weak. A smarter attacker, a new jailbreak, or a banned concept your classifier never learned to spot would all sail straight past a green dashboard, which is exactly why #147 insisted red teaming is continuous and never a box you tick once. Right -- homework settled. Now let us talk money ;-)
AI and labor markets
Let us start with the question every single person asks me at parties the second they hear what I do: will AI take my job?
The honest answer, from the economic evidence so far, is more interesting than the headline. AI does not typically eliminate whole jobs. It eliminates tasks. A job is a bundle of tasks stapled together, and if AI automates 30% of that bundle it does not delete your job -- it restructures it. You spend less time on the automated slice and more on the parts the machine still cannot touch.
The pattern is remarkably consistent across a century of automation. The classic example is the ATM. Everybody assumed the cash machine would wipe out bank tellers, and yet the number of tellers actually GREW for decades afterwards, because ATMs made a branch cheaper to run, so banks opened more branches, so they hired more tellers. But the job changed underneath them -- tellers stopped counting bills and started selling financial products. The task got automated. The human got redeployed.
Having said that, I am not going to hand you the comfortable "nothing to worry about" line, because the speed and BREADTH of this wave really is different. Previous automation went after manual work and routine cognitive work -- the predictable, repetitive stuff. AI goes after NON-routine cognitive work: writing, analysis, coding, design, the things we told a generation of students were future-proof. That hits a different demographic entirely -- educated, white-collar, well-paid -- and it hits fast. The most exposed roles right now are customer service, content writing, translation, first-pass legal analysis, routine financial reporting, and entry-level programming.
The economists' framing is the useful one: AI is a skill-biased technology. It rewards the people who can USE it over the people forced to compete AGAINST it. Watch the difference with a toy model of two workers facing the same automated slice.
def annual_output(base_tasks, ai_multiplier, adoption):
"""A worker's effective output when part of the job is AI-augmentable.
adoption in [0,1]: how much of the augmentable work you actually leverage."""
augmentable = 0.4 * base_tasks # 40% of the job is AI-augmentable
manual = base_tasks - augmentable
boosted = augmentable * (1 + adoption * (ai_multiplier - 1))
return manual + boosted
adopter = annual_output(100, ai_multiplier=5.0, adoption=1.0) # fully leverages AI
refuser = annual_output(100, ai_multiplier=5.0, adoption=0.0) # ignores the tools
print(f"AI adopter effective output: {adopter:.0f}")
print(f"AI refuser effective output: {refuser:.0f}")
print(f"productivity gap: {adopter / refuser:.2f}x")
The adopter does not replace ten colleagues and cackle -- they simply produce a couple times more of the valuable work and get handed more of it. The refuser competes on raw speed against a machine that never sleeps, which is not a winning position on any timeline. So the honest career advice is boring but true: the threat is not "AI," the threat is "a person using AI who does your job." Become the first kind of person.
Winner-take-most dynamics
Zoom out from the worker to the market, and AI has a strong tendency toward winner-take-most outcomes. Not always winner-take-ALL, but heavily concentrated. Three reinforcing loops drive it.
The data flywheel. More users generate more data, more data trains a better model, a better model attracts more users, and round it spins. This is why an incumbent search engine stays dominant -- the advantage compounds on itself. Let us actually watch it compound, because "compounding" is one of those words people nod at without feeling.
def data_flywheel(rounds=8, leader0=1.0, follower0=0.9, capture=0.15):
"""Each round, model quality (proportional to accumulated data) wins new users,
and those users generate fresh data. Small early edge -> runaway gap."""
leader, follower = leader0, follower0
for r in range(rounds):
# quality-weighted share of this round's new users
total = leader + follower
leader += capture * (leader / total) # winner grabs more of the new data
follower += capture * (follower / total)
print(f"round {r+1}: leader {leader:.3f} follower {follower:.3f} "
f"gap {leader - follower:+.3f}")
return leader, follower
data_flywheel()
Start the leader a mere 10% ahead and let the loop run: the gap does not close, it WIDENS, because the one with slightly more data wins slightly more of every new cohort, which gives it slightly more data still. A tiny head start turns into a structural moat purely through feedback. Nota bene: this is also exactly why being second by a year in a data-driven market is so brutal -- you are not one year behind, you are one year of compounding behind.
Scale economics. Training a frontier model costs somewhere between 100 million and a billion-plus dollars. But serving one inference costs a fraction of a cent. That cost structure -- gigantic fixed cost, near-zero marginal cost -- is the classic recipe for concentration, because the average cost per user only makes sense once you have an enormous number of users to spread the fixed cost across.
def avg_cost_per_user(train_cost, marginal_cost, users):
return (train_cost + marginal_cost * users) / users
train = 300_000_000 # 300M to train the model
marginal = 0.002 # a fifth of a cent per inference
for users in (10_000, 1_000_000, 100_000_000):
print(f"{users:>11,} users: ${avg_cost_per_user(train, marginal, users):.4f} per user")
At ten thousand users the model is economically insane -- thirty thousand dollars a head. At a hundred million users the same model costs a rounding error above the marginal two-tenths of a cent. The maths simply does not work for a small player, and it works beautifully for whoever already has distribution. Fixed costs love scale and punish everyone else.
Talent concentration. The best researchers want to be where the best compute, the best data, and the best colleagues already are. So talent clusters at a handful of shops, which widens the capability gap, which attracts more talent. Another flywheel, running on people in stead of bytes.
Stack the three loops together and you get the shape of the real market: a small oligopoly trains the foundation models (the big labs from #137), and a much larger crowd builds applications on top. The foundation-model layer is a few giants. The application layer is a competitive scrum. If you work at a startup, you are almost certainly in the scrum -- and that is FINE, because the scrum is where most of the value gets created for actual users. Your edge there is domain knowledge, proprietary data, distribution and user experience, not a base model you were never going to train anyway.
Open source vs closed: the moat question
The endless open-versus-closed debate is really one question wearing a costume: where is the moat, the sustainable advantage a competitor cannot cheaply copy?
The case for closed. If you burned 500 million dollars training a model, publishing the weights hands your competitors the finish line for free. Keeping it closed lets you meter access, price per token, track usage, and control quality. That is the API-first path several big labs walk.
The case for open. The instructive move is a company that gives its models away -- and it is not charity, it is strategy. If your actual business is advertising, not model APIs, then open-sourcing a strong model COMMODITIZES the model layer. Suddenly everyone fine-tunes and builds on YOUR base, the companies who wanted to SELL model access find their product is now free, and the advantage slides to whoever owns the best data and distribution -- which, conveniently, is you. Commoditize your complement, as the old strategy line goes.
The reality that matters for you. The moat in AI is NOT the weights. Weights get replicated with enough compute and data -- today's frontier model is next year's open download. The durable moats are elsewhere:
- Proprietary data -- the data nobody else has. This is why a financial-data giant trains its own model on its own corpus, and why every serious enterprise wants to fine-tune on its internal documents.
- Distribution -- getting the model in front of users. Baking a model into an operating system, an office suite, or a cloud platform a billion people already open is a moat no startup can dig.
- Ecosystem lock-in -- once users build workflows, fine-tunes and integrations around your platform, the switching cost keeps them parked.
- Speed of iteration -- shipping improvements faster than the other guy. That is an organisational muscle, not a model checkpoint.
Points three and four deserve a number attached, because "switching cost" sounds soft until you model it against price. Watch a customer decide whether to jump ship to a 20% cheaper competitor when leaving costs them real switching pain.
def will_switch(price_incumbent, price_rival, switching_cost, months=24):
"""A rational customer switches only if cumulative savings beat the one-time pain."""
savings = (price_incumbent - price_rival) * months
return savings > switching_cost, savings
for lockin in (50, 500, 5000):
switch, saved = will_switch(price_incumbent=100, price_rival=80, switching_cost=lockin)
print(f"switching cost ${lockin:>5}: saves ${saved} over 2yr -> switch? {switch}")
Cheap lock-in and the customer walks for a better price without blinking. Make the lock-in deep enough -- integrations, trained staff, migrated data -- and the SAME 20% discount is not worth the migraine of moving. That is why the boring enterprise features (SSO, audit logs, data residency, workflow integrations) are frequently a stronger moat than a two-point bump on a benchmark. The model gets you in the door; the lock-in keeps you in the building.
The compute supply chain
The AI supply chain is startlingly concentrated and geographically fragile. Walk it layer by layer:
- Chip design. One company dominates GPUs for training with north of 80% share; a second is a distant runner-up; the big clouds build their own vertically-integrated accelerators as alternatives.
- Chip manufacturing. Essentially all the cutting-edge AI silicon is fabricated by a single company, on a single island. That is a genuine single point of failure and it shapes national AI strategy at the level of foreign policy.
- Cloud infrastructure. Three hyperscalers provide most of the compute. Training a frontier model means thousands of accelerators running for months. And here is the twist -- the clouds are ALSO AI companies, so they are simultaneously your landlord and your competitor.
- Model layer. A handful of labs train frontier models; hundreds fine-tune and adapt them.
- Application layer. Thousands of companies build products. This is where most of us actually work.
Value capture across those layers follows what strategists call the smiling curve: fat margins at the ends (the scarce chips, and the applications that solve a real problem), thin margins in the commoditized middle. Let us plot the smile.
layers = [
("chip design", 0.65),
("chip fab", 0.55),
("cloud compute", 0.30),
("foundation model", 0.35),
("application", 0.60),
]
peak = max(m for _, m in layers)
for name, margin in layers:
bar = "#" * int(margin / peak * 30)
print(f"{name:>16} | {bar} {margin:.0%}")
Print it and you literally see the smile -- high at the chip end, high at the application end, sagging through the commodity infrastructure in the middle. The lesson is not "avoid the middle" (someone has to run the datacenters), it is "know which end of the curve your business sits on, and price accordingly." If you are competing in the sagging middle, you had better be the lowest-cost operator, because you are selling a commodity.
Business models for AI
So how do companies actually MAKE money from this stuff? A handful of models, each with its own economics:
API-as-a-service. Charge per token, per image, per inference. Clean, understandable, scales with usage. The risk is savage commoditization -- a given quality level gets 10 to 100 times cheaper within a year or two, so pure API margins compress relentlessly.
AI-enhanced SaaS. Existing software bolts AI onto what it already sold -- the coding assistant, the writing helper, the design tool. The AI is a FEATURE, folded into an existing subscription. This is the most common and arguably the most durable model, because you are making a product people already pay for measurably better.
Vertical AI products. Systems built for one industry with domain-specific data and workflows -- legal, medical, financial. Higher margins, because the moat is the domain expertise and the data, not the base model.
Picks and shovels. Infrastructure and tooling other AI companies build on -- experiment tracking (#119), data labeling, model hosting (#74). You do not have to win the gold rush if you sell the shovels to everyone digging.
Data licensing. Selling or licensing the data the model-builders need. A forum licensing its posts, a stock library licensing its images. If you own unique data, you own a genuinely new kind of asset.
The practitioner's takeaway is blunt: an AI WRAPPER around a commodity API is not a business, it is a feature waiting to be absorbed by the platform it wraps. A business has proprietary data, deep domain integration, and real switching costs. Same model underneath, wildly different economics on top.
The cost curve
One last force, and it is the big one -- bigger than any single company or model. Costs are falling, fast. The price of a token of LLM inference has dropped on the order of 10x per YEAR since the early GPT-3 era, and training costs for an equivalent capability fall on a similar slope. This deflation quietly rewrites your decisions, and you can watch it flip a build-versus-buy call all by itself.
def buy_cost(monthly_tokens, price_per_1k, year):
price = price_per_1k * (0.1 ** year) # ~10x cheaper each year
return monthly_tokens / 1000 * price
def build_cost():
return 8000 # fixed monthly: GPUs + an engineer
monthly_tokens = 500_000_000
for year in range(4):
buy = buy_cost(monthly_tokens, price_per_1k=2.0, year=year)
cheaper = "BUY the API" if buy < build_cost() else "BUILD it yourself"
print(f"year {year}: buy=${buy:>10,.0f} build=${build_cost():,} -> {cheaper}")
In year zero the API is eye-wateringly expensive at your volume, so self-hosting wins and you staff up an infra team. A few years later the exact same API is orders of magnitude cheaper and the decision quietly INVERTS -- you are now burning salary to lose to a commodity. This is why "we built our own to save money" ages so badly, and why a project that was uneconomical last year deserves a fresh look today. Three consequences fall straight out of the curve:
- Projects that made no financial sense a year ago may be obvious now.
- Build-versus-buy is not a one-time decision, it is a thing you re-evaluate on a schedule.
- A proprietary MODEL advantage erodes quickly -- today's frontier is tomorrow's commodity, so build your moat out of data and distribution, not weights.
Cost deflation is, I argue, the single most important economic fact about AI. It guarantees adoption keeps accelerating, guarantees pure-API margins keep compressing, and pushes the durable value toward the application and data layers where you probably work anyway. Plan as if the compute you rely on will be far cheaper next year -- because it will be.
Exercises
Get your hands dirty before the next one. Three tasks, climbing in difficulty:
Tune the leash economically. Take the
data_flywheelfunction and add a per-round COST the leader pays to keep capturing share (say, marketing spend proportional to how much new share it grabs). Sweep a couple of cost levels and report the round at which the leader's cumulative spend stops being worth the share it bought. One sentence on why "winner-take-most" does not mean "winning at any price."Find the break-even user count. Using
avg_cost_per_user, write a loop that finds the smallest user count at which average cost drops below a target price (say 5 cents per user) fortrain_costof 100M and 1B. Print both break-even points. Two sentences on what that break-even gap says about who can afford to train a frontier model versus fine-tune one.Race the cost curve. Extend the
buy_cost/build_costcomparison so the BUILD cost also falls over time (hardware gets cheaper too, just slower -- try 30% cheaper per year instead of 10x). Find the year where buy overtakes build permanently, and in two sentences explain why a slower-deflating fixed cost still loses to a faster-deflating variable cost in the long run.
We open next episode with full solutions, as always.
Quick recap
- AI eats tasks, not jobs -- but the breadth and speed of this wave hits non-routine cognitive work in a way no previous automation did, and the real threat to your career is a person USING AI, not AI itself;
- winner-take-most is driven by three compounding loops -- the data flywheel, scale economics (huge fixed cost, near-zero marginal cost), and talent concentration -- which is why the foundation layer is an oligopoly and the application layer is a scrum;
- the moat is not the weights -- weights get replicated; the durable moats are proprietary data, distribution, ecosystem lock-in, and speed of iteration, and lock-in beats a 20% discount once it is deep enough;
- the supply chain is concentrated and fragile -- one dominant GPU designer, essentially one advanced fab, three clouds who are also your competitors -- and value follows the smiling curve, fat at the chip and application ends, thin in the middle;
- business models run from API-as-a-service to vertical products, and the ones that last capture value through data and domain expertise, not commodity model access -- a wrapper is a feature, not a business;
- cost deflation (~10x per year) is the dominant force -- it makes dead projects viable, flips build-versus-buy on a schedule, and erodes any moat you tried to build out of model weights.
And the thread I will leave dangling for next time, because it is the natural next step and it has been quietly poisoning everything in this episode. Every economic decision we just made -- automate this task, capture that value, cut this cost, license that data -- lands on a real person. The cost curve that makes your product cheaper is partly paid by the humans labeling the training data. The winner-take-most market that concentrates capability also concentrates POWER over who gets served and who gets skipped. We already did the theory of bias and fairness way back in #35, but theory is the easy part. What does doing the right thing look like when the spreadsheet says otherwise, when the money and the morality point in opposite directions? That is where we head next, and it is going to be a good deal less comfortable than counting margins ;-)