sending a commodity from a source s to a sink t subject to capacity limits
Your PE portfolio company distributes industrial fasteners - bolts, screws, washers. Three suppliers, four customer regions, and every warehouse and shipping lane has a capacity ceiling. Sales just landed a new account that pushes one region past its shipping capacity. You need to reroute volume across the network in 48 hours without destroying your margins. The product is identical regardless of which supplier ships it. Your only lever is how efficiently you route it.
A commodity is any product where the buyer treats units as interchangeable. When you sell one, your P&L margin lives entirely in how cheaply you route volume from sources (suppliers) to sinks (customers) through capacity-constrained stages. Optimize the routing, not the product.
A commodity is any product or service where the buyer doesn't care which supplier provided it. Crude oil, drywall screws, generic cloud compute, transactional email delivery, contract labor at a given skill level. If the customer would swap your unit for a competitor's unit at the same price without hesitation, you're selling a commodity.
When you operate a commodity business, the core problem is a flow problem. You have:
Your job: move volume from sources to sinks through the cheapest available paths. When a cheap path hits its capacity limit, volume overflows to the next cheapest path. That overflow is where margin erodes.
This is the structure underneath every distribution operation, logistics network, and commodity-heavy P&L. The phrase "sending a commodity from a source to a sink subject to capacity limits" is just a precise way of saying: route volume through a cost-constrained network.
When you sell a commodity, the market sets the price. You cannot charge more because your bolts are shinier. Your entire margin comes from one thing: moving volume through your network at a lower cost than competitors.
This changes what good Operations means. In a differentiated business, you invest in the product. In a commodity business, you invest in the network - cheaper sourcing, better routing, smarter capacity decisions. Your competitive moat is operational efficiency, not differentiation.
The P&L impact is direct and large:
If you run a Cost Center with commodity inputs (cloud compute, contractor labor, raw materials), the same logic applies. You're routing spend through capacity-constrained options, and the overflow cost is real money on your Operating Statement.
Step 1: Map your network. Identify every source, every sink, and every path between them. For each path, calculate the all-in cost (sourcing + processing + shipping) and the capacity limit.
Step 2: Rank paths by all-in cost. Cheapest first.
Step 3: Fill cheapest paths first. Route volume through the lowest-cost path until it hits capacity. Then overflow to the next cheapest. Repeat until all Demand is met or supply is exhausted.
Step 4: Calculate the cost of overflow. Every unit on an expensive overflow path could have been cheaper if the upstream path had more capacity. The difference between the overflow path's cost and the constrained path's cost is the Shadow Price of that capacity constraint.
Shadow Price tells you exactly what one more unit of capacity is worth at each bottleneck. This is how you prioritize capital investments in a commodity operation - not by gut feel, but by measuring the cost your constraints are forcing on you.
The connection to capacity: You already know capacity cost is superlinear - scaling 3x often costs 4-5x. In a commodity network, this means expanding a Bottleneck doesn't just cost more than expected, it also has diminishing returns as you shift overflow from the most expensive paths first. Model both sides before committing capital.
Apply commodity flow thinking when:
Do not use this framework when differentiation is your strategy. If customers pay a premium for your specific product, you're not in a commodity flow problem - you're in a Pricing problem. The frameworks diverge.
You distribute commodity fasteners for a PE portfolio company. Two suppliers, two customer regions.
| Cost Per Unit | Capacity | |
|---|---|---|
| Supplier A | $8/unit | 500/month |
| Supplier B | $10/unit | 300/month |
| Demand | Market Price | |
|---|---|---|
| Region X | 400/month | $15/unit |
| Region Y | 350/month | $14/unit |
Shipping costs and lane capacities:
| Route | Shipping Cost | Lane Capacity |
|---|---|---|
| A to X | $1/unit | 300/month |
| A to Y | $2/unit | 250/month |
| B to X | $3/unit | 200/month |
| B to Y | $1.50/unit | 300/month |
Calculate all-in cost per path: A-to-X = $8 + $1 = $9. A-to-Y = $8 + $2 = $10. B-to-Y = $10 + $1.50 = $11.50. B-to-X = $10 + $3 = $13. Rank: $9, $10, $11.50, $13.
Fill cheapest first: A-to-X gets 300 units (lane capacity hit). Region X still needs 100.
Next cheapest: A-to-Y gets 200 units (Supplier A now tapped out at 500 total). Region Y still needs 150.
Next: B-to-Y gets 150 units at $11.50. Region Y fulfilled.
Remaining: B-to-X gets 100 units at $13. Region X fulfilled.
Total cost: (300 x $9) + (200 x $10) + (150 x $11.50) + (100 x $13) = $2,700 + $2,000 + $1,725 + $1,300 = $7,725
Revenue: (400 x $15) + (350 x $14) = $6,000 + $4,900 = $10,900
Profit: $3,175/month.
Compare to a naive even-ish split (200/200/150/200 across paths): total cost = $8,125. Profit = $2,775. Optimal routing saves $400/month - $4,800/year - on the same volume, same customers, same product.
Insight: In a commodity business, the product is identical. The only variable is routing. $4,800/year from a simple sort-by-cost-and-fill algorithm. Now imagine a real network with 50 suppliers and 200 customers.
Same network as above. You're considering expanding the A-to-X shipping lane from 300 to 400 units/month. A logistics broker quotes $250/month for the faster lane.
Currently, the last 100 units to Region X go via B-to-X at $13/unit (the overflow path).
If A-to-X had more capacity, those units would flow at $9/unit instead.
Shadow Price of A-to-X capacity = $13 - $9 = $4 per unit per month.
Expanding by 100 units saves: 100 x $4 = $400/month in routing costs.
Expansion cost: $250/month. Net benefit: $400 - $250 = $150/month ($1,800/year).
Now check the other Bottleneck: A-to-Y is at 200 of 250 capacity. It's not binding - no overflow. Shadow Price = $0. Expanding it would waste capital.
Insight: Shadow Price converts gut-feel capacity complaints into dollar values. The binding constraint on A-to-X costs you $4 per unit in overflow. The non-binding A-to-Y lane costs you nothing. Always expand the highest Shadow Price constraint first.
In a commodity business, you cannot win on differentiation. Your entire Profit margin comes from routing volume through the cheapest available paths in your network.
Capacity constraints force overflow onto expensive paths. The Shadow Price of each constraint tells you exactly how much that Bottleneck costs you per unit - use it to prioritize capital investments.
Optimal routing is not intuition, it's arithmetic: rank all-in costs, fill cheapest paths first, overflow to next cheapest. The gap between optimal and naive routing is pure operational alpha that falls straight to your P&L.
Expanding the wrong Bottleneck. Operators often invest in the stage that feels most painful (longest queue, most complaints) instead of the one with the highest Shadow Price. A non-binding constraint has a Shadow Price of zero - expanding it wastes capital while the real overflow cost persists elsewhere.
Using average Cost Per Unit instead of path-specific costs. If your average cost is $10/unit but 70% of volume flows at $9 and 30% overflows at $13, the average hides the fact that your marginal unit costs $13. Decisions about capacity, Pricing, and whether to take new volume should use the overflow cost, not the blended average.
You send transactional emails through two providers. Provider A charges a flat $500/month for up to 500,000 emails. Provider B charges $0.003 per email with no volume limit. You send 700,000 emails per month. What is your optimal routing and total monthly cost? What is the Cost Per Unit at optimal?
Hint: Provider A's flat fee means its capacity is essentially free up to 500K (you pay $500 regardless). Fill it first, then overflow to B.
Route 500,000 through A, overflow 200,000 to B. Total cost = $500 + (200,000 x $0.003) = $500 + $600 = $1,100/month. Cost Per Unit = $1,100 / 700,000 = $0.00157/email. Note: if you split 50/50 (350K each), you'd pay $500 + $1,050 = $1,550 and waste 150K of your committed A capacity.
Same email setup. Volume grows to 1,200,000/month. Provider A offers an upgrade: 800,000 email capacity for $700/month. Should you take it? What is the Shadow Price of A's capacity at current volume?
Hint: Shadow Price = what you pay on the overflow path (B) minus what you'd pay if A had room. Calculate total cost with and without the upgrade.
Current cost at 1.2M: $500 + (700,000 x $0.003) = $500 + $2,100 = $2,600/month. Shadow Price of A capacity: Each email over 500K goes to B at $0.003 instead of A at ~$0.001 effective. Shadow Price = $0.003 - $0.00 (A is flat, so marginal cost of an A email within capacity is $0) = $0.003/email. With upgrade: $700 + (400,000 x $0.003) = $700 + $1,200 = $1,900/month. Savings: $2,600 - $1,900 = $700/month. The upgrade costs $200/month more ($700 - $500) but eliminates $900/month in B overflow ($2,100 - $1,200). Net benefit: $700/month ($8,400/year).
You run a staffing operation placing contract developers. Three talent agencies supply contractors at different rates with capacity limits. Two client accounts pay different rates.
| Agency | Rate | Max Contractors | Constraint |
|---|---|---|---|
| C | $70/hr | 5 | Client 1 only |
| A | $80/hr | 10 | Either client |
| B | $95/hr | Unlimited | Either client |
| Client | Pays | Needs |
|---|---|---|
| Client 1 | $130/hr | 12 contractors |
| Client 2 | $120/hr | 8 contractors |
Find the placement routing that maximizes total hourly Profit. Then calculate the Shadow Price of adding one more contractor to Agency C's capacity.
Hint: Calculate margin (client rate minus agency rate) for every valid agency-to-client path. Fill highest-margin paths first within capacity. For Shadow Price, trace the cascade: adding one C contractor to Client 1 frees up one A contractor, who can then displace a B contractor at Client 2.
Margins per path: C-to-1 = $60/hr, A-to-1 = $50/hr, A-to-2 = $40/hr, B-to-1 = $35/hr, B-to-2 = $25/hr.
Optimal routing (highest margin first):
Total margin: (5 x $60) + (7 x $50) + (3 x $40) + (5 x $25) = $300 + $350 + $120 + $125 = $895/hr
Shadow Price of +1 C contractor: The cascade - one more C at Client 1 ($60 margin) displaces one A from Client 1 ($50). That freed A goes to Client 2 ($40 margin), displacing one B ($25). Net gain: ($60 - $50) + ($40 - $25) = $10 + $15 = $25/hr per contractor. Verify: new total = (6x$60)+(6x$50)+(4x$40)+(4x$25) = $360+$300+$160+$100 = $920/hr. Delta = $920 - $895 = $25/hr. Confirmed.
Commodity flow builds directly on capacity: you learned that capacity cost is superlinear - scaling 3x often costs 4-5x. In a commodity network, this is critical because every capacity constraint forces overflow onto more expensive paths, and expanding that capacity follows the same superlinear curve. The cost of overflow is quantified by Shadow Price, which converts a Bottleneck from a vague complaint into a dollar value per unit. Downstream, commodity thinking feeds into commodity markets (how market-level supply and Demand set the price at each sink), Throughput analysis (what is the maximum volume your network can handle before it hits a binding constraint?), and Cost Optimization strategy. The key mental model shift: in a differentiated business, you optimize the product. In a commodity business, you optimize the flow. Your Unit Economics depend not just on what you pay for inputs, but on which path each unit takes through your operation.
Disclaimer: This content is for educational and informational purposes only and does not constitute financial, investment, tax, or legal advice. It is not a recommendation to buy, sell, or hold any security or financial product. You should consult a qualified financial advisor, tax professional, or attorney before making financial decisions. Past performance is not indicative of future results. The author is not a registered investment advisor, broker-dealer, or financial planner.