Theory
The market, bottom up: a market size example
A market size example, bottom up: count the businesses that can buy, multiply by the price and check whether your revenue goal fits inside, with GarageDesk in Vinnytsia.
~9 min read · 9 exercises · 250 points
Before you start
Count shops, not hryvnias
Today you and Alex help GarageDesk's founders size their market, and you've already done some homework: a report says car servicing in Ukraine is worth billions of hryvnias a year, so even a tiny share sounds like millions.
In this lesson you'll see why that kind of estimate says nothing about who buys, and size the market from the bottom up: count the shops that can really use and buy GarageDesk, multiply by the price, and check whether the founders' goal fits.
Top down is a guess, bottom up is a count
There are two ways to size a market.
Top down starts from a huge number and takes a hopeful slice: "car servicing in Ukraine is worth billions of hryvnias a year; if we get just 1%, that's millions." It feels rigorous because the big number comes from a report. But it measures the wrong thing, money car owners spend on repairs, not shops that would pay for reminders, and the 1% has nothing behind it. Nobody can name the customers in that 1%.
Bottom up starts from businesses you can name, count and call:
- count the businesses in the niche;
- keep only those that can actually use and buy the product;
- multiply by the price;
- compare the result with your goal.

Every number in a bottom-up estimate can be checked: you can visit the shops, call a sample, ask a distributor. That's what makes it useful for a decision. A top-down number can only be argued about.
- Do"About 310 independent shops in Vinnytsia; 19 of 31 we visited fit; × 600 UAH."
- Don't"The market is worth billions; 1% of it is millions for us."
The wrong money and a percentage with nothing behind it.
Two sources that roughly agree
A count from one source can be wrong in ways you can't see: map listings include closed places and duplicates, a business register lags behind, a distributor only knows its own customers. So count from at least two independent sources and compare.
GarageDesk's count:
- online maps: about 480 car repair places; after removing duplicates, closed places, dealerships, body shops, tire shops and one-bay garages, about 310;
- a former colleague at the parts distributor: they deliver to about 300 independent shops in the city.
310 and 300 roughly agree, so 310 is good enough to go on. Two sources that agree beat one number that only looks precise.
If they don't agree, say 310 and 900, don't average them and move on. A gap that big means one source counts something different (all car businesses, a wider region, old data). Find a third source first: a local business group, a second distributor, a sample of streets you walk yourself. The average of a right number and a wrong one is just a different wrong number.
- Do310 from maps, 300 from the distributor: close enough, go on with 310.
- Don't310 and 900? Take the average, about 605, and move on.
Averaging hides the question of which source counts the wrong thing.
Filtering with a real sample
Not every business in the niche can use the product. To find how many can, measure the share on a real sample and apply it to the count.
Oscar visited 31 independent shops on his spring route; 19 of them fit GarageDesk: a computer or a phone at reception, and regulars who come back for service.
- share that fits: 19 ÷ 31 ≈ 0.613, about 61%;
- fitting shops in the city: 310 × 19 ÷ 31 = 5,890 ÷ 31 = 190.
Check: 190 ÷ 310 = 19 ÷ 31. The 190 is GarageDesk's SAM in Vinnytsia: the part of the market it can actually serve and reach today.
Two things keep this honest. Apply the share to the filtered count (310 independent shops with 2 to 8 bays), not to the raw 480 map listings, which still include duplicates, dealerships and body shops. And remember a sample of 31 is small: treat 190 as "roughly 190", not as an exact figure. A few more visits would tighten it.
- Do310 × 19 ÷ 31 = 190 fitting shops.
- Don't480 × 19 ÷ 31 ≈ 294 fitting shops.
Applies the share to raw listings full of duplicates, dealerships and body shops.
The ceiling: SAM × price
Once you know how many businesses fit, multiply by the price to get the ceiling:
Ceiling = N_fit × p
where N_fit is the number of fitting businesses and p is the monthly price. For GarageDesk in Vinnytsia: 190 × 600 = 114,000 UAH a month, or 114,000 × 12 = 1,368,000 UAH a year. Check: 114,000 ÷ 600 = 190.
Read that number carefully. It's the revenue if every single fitting shop in the city paid, starting today, and none ever left. That never happens: some shops will keep their notebook forever, some have a niece to call, some will choose a competitor. So the ceiling is not a forecast. It's a limit: whatever GarageDesk does in Vinnytsia with this niche at this price, it can't earn more than this.

That's exactly what makes it useful. If your goal is close to the ceiling, or above it, you know before spending a year that the market as defined is too small.
- Do190 × 600 = 114,000 UAH a month: the most Vinnytsia can give, not what it will give.
- Don't310 × 600 = 186,000 UAH a month.
Counts shops that can't use the product.
Does the goal fit? The share needed
The ceiling tells you the most you could earn. The real test is the share needed: what fraction of the fitting businesses must pay for you to reach your goal?
Share needed = G ÷ N_fit
Formula: The monthly ceiling is the number of fitting businesses N_fit times the monthly price p. The share needed is the number of customers your goal requires, G, divided by N_fit. · shown above
where G is the number of paying customers your goal requires. GarageDesk's working target is 84 paying shops: Nina's 30,000 UAH, Oscar's 18,000 and the 2,000 tools bill make 50,000 UAH, and 50,000 ÷ 600 ≈ 83.3, rounded up to 84. (Tools now cost 3,500, so the target will need recounting; 84 is today's working figure.)
84 ÷ 190 = 0.4421 → 44.2%. Check: 190 × 0.442 ≈ 84. Almost every second fitting shop in the city would have to pay.
The order of division matters. Customers needed go on top, fitting businesses at the bottom. And the bottom is the fitting count (190), not all independent shops (310): the shops that can't use the product were never part of the race.
- Do84 ÷ 190 = 0.442 → 44.2% of fitting shops must pay.
- Don't84 ÷ 310 ≈ 27.1%: "only a quarter, easy."
Dividing by all shops makes the goal look far easier than it is.
Where you are today: the share already won
Before you judge what share is realistic, measure the share you already have. It's the same division as the share needed, with today's customers on top:
Share won = current customers ÷ N_fit
GarageDesk has 22 paying shops, and Vinnytsia has 190 fitting ones: 22 ÷ 190 = 0.1158 → about 11.6%, roughly one shop in nine.
That number grounds every later guess. Oscar's sense that one in four (25%) is realistic within two years means a bit more than doubling today's share. Possible, with the same channels and the same niche. The 44.2% the goal needs means almost quadrupling it, which is a different kind of claim.
Use the same denominator as everywhere else: the fitting shops (190). Dividing 22 by all 310 independent shops gives about 7.1% and makes the market look emptier than it is for GarageDesk. Dividing by the 480 raw listings makes it look emptier still.
- Do22 ÷ 190 = 0.116 → about 11.6% of fitting shops already pay.
- Don't22 ÷ 310 ≈ 7.1%: "we've barely started."
Wrong denominator: shops that can't use GarageDesk aren't part of its market.
When the goal doesn't fit: three levers
A realistic share, the SOM, is what you can expect to win, not just what exists. Oscar calls one in four realistic within two years: 190 × 25% ≈ 47 shops, about 28,500 UAH a month. The goal needs 84 shops and about 50,000 UAH. Vinnytsia alone, with this niche at this price, can't get both founders to ramen profitability.
That's not a dead end. The revenue goal is the product of three things, so there are three levers:
- more shops: a new city (Khmelnytskyi), or a neighbouring kind of shop in the same city;
- a higher price: more revenue from each shop, if the value supports it;
- a smaller goal: lower costs or a later milestone, so fewer shops are needed.
Each lever has a cost and a risk, and the next lesson compares them. The mistake is to see only the first one, "we need more customers", and jump into a new market without checking whether a price change or a smaller first milestone would close the gap more cheaply.
- Do"SOM ≈ 47 shops vs 84 needed. Options: a second city, a higher price or a smaller first milestone. Compare all three."
- Don't"SOM is too small, so we must expand to Khmelnytskyi."
Sees one lever out of three.
The bottom-up routine, step by step
A bottom-up estimate is a short routine. The order matters, because each step uses the result of the one before:
- Count the businesses in the niche from at least two sources: 480 map listings, filtered to about 310; the distributor's 300 confirms it.
- Filter to the share that can actually use and buy the product, measured on a real sample: 310 × 19 ÷ 31 = 190.
- Multiply by the monthly price to get the ceiling: 190 × 600 = 114,000 UAH a month.
- Divide the customers your goal needs by the fitting businesses: 84 ÷ 190 = 44.2%.
- Compare that share with a realistic share and decide: 25% is realistic, 44% isn't, so Vinnytsia alone isn't enough.

The decision comes last, after the numbers, never before. If you start from "we want Khmelnytskyi" and then look for numbers, every step bends toward the answer you wanted. Starting from the count keeps the routine honest, and makes it repeatable for the next city.
- DoCount → filter → × price → goal ÷ fitting → compare with a realistic share → decide.
- Don'tDecide on Khmelnytskyi first, then find numbers that support it.
Every step bends toward the answer you wanted.
Ready to practise?
Answer the lesson's exercises and earn 250 points the first time you finish it.
Start the exercises