learn-market-sizing-with-phoebe / Analyst session 2 of 6
Learn Market Sizing with Phoebe · Analyst session 2 of 6

Bottom-up: customers, price and frequency

A bottom-up size starts from the customers you can actually see: how many households buy, what they spend each time, and how often they come back. Every one of those inputs lives somewhere in your own data, usually in one orders table, and every one of them has a way of flattering you. Tonight the chain runs on the same 34,553,907 Census households as the top-down, with Kettle & Co's constructed pilot numbers on top, and every input carries a low, a middle and a high.

🟢 Analyst Data analysts and data scientists who build the size Hands-on in the browser 45 min
0-3 · Welcome 3-18 · The chain, the sources, the ranges 18-40 · Build-along: the chain from your own data 40-45 · Q&A
Part 0

Where we start

Analyst session 1 sized Kettle & Co's Japan market from the top: a government count, a government rate, two shares. Tonight we size the same market from the other end, the way a sales or growth team would: count the buyers, price the basket, count the baskets. The household count is real, read from the 2020 Census. The three behaviour inputs are constructed Kettle & Co pilot numbers, labelled as such on the page and in the widget. The two halves meet on the bench in Analyst session 6.

🎫 Clear all three quiz questions to stamp your passport Live = presented in the 45 minutes Self-study = the full depth, after class ★ Build-along = everyone works it through

★ What you walk out with tonight. A bottom-up chain for Kettle & Co written as one sentence, each input with a low, a middle and a high, and a note for each input saying which table, column, filter and period it would come from in your own data, plus the one trap that source is known for. That chain is the second half of the triangulation bench.

Part 1 · covers the bottom-up chain

Four links: households, buyers, basket, baskets a year

5 min live

Bottom-up sizing multiplies a population by the share of it that buys, by what a buyer spends per order, by how many orders a buyer places in a year. The first link is the same Census count the top-down uses. The other three describe behaviour, and behaviour is what your own data measures best.

THE BOTTOM-UP CHAIN FOR KETTLE & CO, LINK BY LINK solid box = a real statistic · dashed box = a constructed pilot input HOUSEHOLDS 34,553,907 2020 Census, two-or- more-person · real x BUYERS 4.5% buy the category online constructed x SPEND / ORDER 2,400 yen per order constructed x ORDERS / YEAR 3.5 per buyer constructed BOTTOM-UP 13.06 bn yen a year shared with the top-down the same Census count, the same population range 7.11 to 21.55 One real link, three constructed ones. Each constructed link is an aggregate of your own orders.
🔍 Click to zoom - the three dashed links are the ones your own data can measure, and the ones a pilot most easily flatters
LiveThe four links, and what each one means3 min▶

Households: 34,553,907. The two-or-more-person households of the 2020 Population Census, the same count the top-down chain starts from. It is real, and it is shared: both methods lean on it.

Buyers: 4.5 percent. The share of those households that buy the category online in a year. Constructed from Kettle & Co's pilot, with a low of 3.5 and a high of 5.5 percent.

Spend per order: 2,400 yen. The average order value. Constructed, low 2,100, high 2,700.

Orders per buyer a year: 3.5. Repeat behaviour. Constructed, low 2.8, high 4.2.

Multiplied through, the middle is 13.06 billion yen a year. Carry all three inputs to their lows together and to their highs together and the range is 7.11 to 21.55. The widget below prints both, and so does the bench in Analyst session 6, where it meets the top-down's 19.63.

LiveWhy bottom-up scales with your actual go-to-market2 min▶

A top-down size describes the market. A bottom-up size describes the customers your channels reach, at the price you charge, at the rate they come back. That makes it the number a plan can be built on: every link is a lever someone owns. Conversion belongs to growth, the basket to merchandising and pricing, repeat to retention.

It also means a bottom-up grows only when a link moves. Doubling the size on a slide requires saying which link doubles and who will move it. If nobody can name the lever, the doubled number is a hope. Price is one of those levers, and how buyers respond to it is its own discipline: Learn Economics with Phoebe owns elasticity and pricing from data.

Self-studyBottom-up is not automatically more honest2 min▶

Bottom-up feels grounded because the inputs come from your own customers. That is also its weakness: your own customers are the ones who already found you. The chain is only as good as the claim that pilot behaviour describes the households you have not met yet. Part 2 is about exactly that claim, one input at a time.

Real world

The number the growth team could argue with. Kettle & Co's head of data showed the marketing lead two sizes for Japan: 19.63 from the top and 13.06 from the bottom. The marketing lead ignored the first and spent twenty minutes on the second, because every link in it was a number her team moved every week. Constructed Kettle & Co example; the household count is real.

Part 2 · covers where each input comes from

Three inputs, three sources, three traps

5 min live

Each behaviour input has a natural home: buyers from a pilot or a purchase panel, spend per order from the orders table, orders a year from repeat behaviour by cohort. Each home also has a well-known way of misleading you. Name the source and its trap together, in the same line of the brief.

WHERE EACH BOTTOM-UP INPUT COMES FROM dashed = constructed Kettle & Co data · amber = the link most at risk PILOT CONVERSION or a purchase panel who bought, out of who was reached ORDERS TABLE amount per order, over a period mean vs median: say which REPEAT COHORT orders per buyer, by first-order month follow a cohort, not the first month buyer share 4.5% spend per order 2,400 yen orders per buyer a year 3.5 TRAP · early adopters pilot buyers found you first and are rarely typical households TRAP · launch-month promotions a launch-month average order value is inflated by promotion bundles TRAP · an extrapolated year first-year repeat from a 3-month pilot is a projection, not a reading Each input has one home in your data and one way that home misleads you. Name both in the brief.
🔍 Click to zoom - the amber link is the one the pilot's own audience distorts most, because the people who buy first are not the market
LiveBuyers: pilot conversion or a panel2 min▶

The buyer share is buyers divided by the households you reached. A pilot gives you both halves for a small, self-selected slice of the market. A purchase panel gives you a broader slice, measured by someone else, with its own definition of "buys the category".

The trap: early adopters are rarely typical. The households that convert in a pilot are the ones who were looking for you: tea enthusiasts, people who follow the brand, people your launch ads were targeted at. Their conversion rate describes them. Multiplying it by every household in Japan assumes everyone else will behave like the keenest buyers, the same mix of a local rate and a national population that Analyst session 1 caught with Shizuoka.

LiveSpend per order: the orders table, mean vs median2 min▶

Spend per order is an average order value: the sum of order amounts divided by the number of orders, over a stated period. The mean is what multiplies correctly through the chain, because buyers times orders times the mean order gives back total spend. The median tells you what a typical order looks like. Report both, multiply by the mean, and say so.

The trap: a launch-month average is inflated by promotions. Launch bundles, gift sets and free-shipping thresholds push the basket up in the first weeks. Take the average from a period after the launch offers end, and write the period next to the number.

Self-studyOrders a year: repeat by cohort, not first month2 min▶

Orders per buyer a year comes from repeat behaviour: group buyers by the month of their first order, then count how many orders each cohort places over the following months. A cohort view stops new buyers, who have had no time to repeat, from dragging the average down, and stops a burst of first orders from looking like loyalty.

The trap: first-year repeat from a 3-month pilot is extrapolated. Three months of a cohort's orders tell you about three months. Turning that into a year assumes the repeat curve keeps its shape, and that assumption belongs in the brief as a constructed link with a wide range, not as a measured one.

Real world

The pilot that converted its own fans. Kettle & Co's first pilot ran on the brand's newsletter list. Conversion looked superb, and the analyst nearly multiplied it by every household in Japan. The fix was to report the newsletter conversion as the high end of the buyer range and to source the middle from the paid-social cohort, who had never heard of Kettle before the ad. Constructed Kettle & Co example.

Part 3 · covers a range per input

Every input gets a low, a middle and a high

5 min live

A single number per input pretends the pilot measured the market. A range per input says what the evidence actually supports. Carry the ranges through the chain together and the size becomes a range too, which is the honest form to put in front of a decision.

THREE INPUT RANGES, ONE OUTPUT RANGE dashed interval = a constructed input · low, middle, high BUYER SHARE 3.5% 4.5% 5.5% SPEND PER ORDER, YEN 2,100 2,400 2,700 ORDERS PER BUYER A YEAR 2.8 3.5 4.2 BOTTOM-UP, BN YEN A YEAR 7.11 13.06 21.55 low corner = all three lows at once high corner = all three highs at once each corner needs every input wrong the same way Three modest input ranges multiply into an output that runs from about half the middle to well above it.
🔍 Click to zoom - the output interval is drawn to scale, and its width is the product of three uncertainties, not their sum
LiveCarry the ranges together, as corners3 min▶

The simplest way to carry ranges through a chain is by corners: every input at its low gives the low size, every input at its high gives the high size. For Kettle & Co: buyers 3.5 / 4.5 / 5.5 percent, spend per order 2,100 / 2,400 / 2,700 yen, orders 2.8 / 3.5 / 4.2 a year. The corners print 7.11 and 21.55 around a middle of 13.06.

Corners are wide on purpose. The low corner needs the pilot to have overstated conversion, the basket and the repeat rate all at once. That is unlikely, so the corners are the edges of the plausible, not the expected range. Say that out loud when you show them, or a reader will treat 7.11 as a forecast.

Self-studyThe alternative: sampling the inputs2 min▶

Some teams prefer to sample instead: draw each input many times from a distribution across its range, multiply each draw through the chain, and report the spread of the results (a Monte Carlo). The result is usually narrower than the corners, because all-lows-at-once is rare in the draws.

It is a choice, and teams disagree. Sampling needs a shape for each input and a view on whether the inputs move together; a pilot that overstated conversion probably overstated repeat too, and assuming independence quietly narrows the range. Corners need no such assumptions and anyone can check them by hand. Pick one, write down why, and keep it the same across both halves of the bench. Which input moves the size most, one at a time, is the tornado in Analyst session 4.

Real world

"Just give me one number." Kettle & Co's BD lead asked for a single figure for the board slide. The analyst gave her 13.06 with 7.11 to 21.55 underneath, and one sentence: the low needs the pilot to be wrong three ways at once. The board spent its time on which of the three inputs to test first, which was the right conversation. Constructed Kettle & Co example.

Build-along

Build the chain from your own orders table

★ 22 min · everyone builds

The widget below holds the Census household count and Kettle & Co's three constructed pilot inputs, each with its range. It recomputes the chain the moment you move a slider. Work the five steps in order and write down what it prints; the inputs are constructed, so once you move a slider your numbers will differ from the ones quoted here.

ONE ORDERS TABLE, THREE LINKS constructed rows, Kettle & Co pilot · each column becomes one aggregate customer order date amount, yen c-0101 2026-04-03 2,350 c-0102 2026-04-03 1,980 c-0101 2026-06-11 2,600 c-0117 2026-06-19 2,450 = buyer share distinct buyers / reached = orders a year orders per buyer, by cohort = spend per order the mean, median beside it Three aggregates of one table. The household count is the only link that comes from outside it.
🔍 Click to zoom - the amber aggregate needs a denominator the orders table does not hold: the households you reached

Step 1 · Read the default chain. All three sliders at their middles. Copy each link and its tag, real or constructed, into your notes.

★ Step 1 · what the widget printsBottom-up: 13.06 billion yen a year (range 7.11 to 21.55) households 34,553,907 real x share that buys the category online 4.5% constructed x spend per order 2,400 yen constructed x orders per buyer a year 3.5 constructed

Step 2 · Move the buyer slider, and only that one. Drag it up, then down. Watch the size: it moves in exact proportion to the buyer share, because the chain is a pure product. Raise buyers by a fifth and the size rises by a fifth. Then set it back to the middle.

★ Step 2 · a product moves in proportionbuyer share moved from 4.5% to ____% (ratio ____) size moved from 13.06 to ____ (ratio ____) the two ratios should match. Your numbers will differ.

Step 3 · Move spend per order, then orders a year. One at a time, back to the middle in between. Note that each moves the size the same proportional way, and that the range under the size moves with it.

★ Step 3 · the other two linksspend per order at ____ yen -> size ____ (range ____ to ____) orders a year at ____ -> size ____ (range ____ to ____) Your numbers will differ from 13.06 once a slider moves.

Step 4 · Write where each input would come from in your own data. One line per input, in the same four slots every time, plus the trap that source carries. If an input has no home in your data, write "no source yet" rather than leaving it blank.

★ Step 4 · one line per inputbuyer share table: ______ column: ______ filter: ______ period: ______ trap: early adopters (who was reached, and how?) spend per order table: ______ column: ______ filter: ______ period: ______ trap: launch promotions (mean and median, after launch) orders a year table: ______ column: ______ filter: ______ period: ______ trap: extrapolated year (cohort age in months: ____)

Step 5 · Write the chain as a sentence. The way it will go in the sizing brief: one clause per link, each with its source or the word "assumed", and the range at the end.

★ Step 5 · the chain in one sentence"34,553,907 two-or-more-person households (2020 Census) x ____ that buy the category online (source: __________, range ____ to ____) x ____ yen spend per order (source: __________, range ____ to ____) x ____ orders per buyer a year (source: __________, range ____ to ____) = ____ billion yen a year, range ____ to ____." Your numbers will differ from 13.06 as soon as you move a slider.

Keep the sentence next to last week's. The top-down printed 19.63, the bottom-up 13.06: a gap of 1.50x. Analyst session 6 asks which assumption explains it. Note that both sentences start from the same 34,553,907 households; if that count were wrong, both halves would be wrong together and the gap would not show it.

Homework

Before Analyst session 3

30 min
  1. Find your orders table and write the query that returns three numbers: distinct buyers, mean and median order value, and orders per buyer, each over a stated period.
  2. Split one input by acquisition source: your earliest or most loyal buyers against buyers who came from a cold channel. Write down how far apart they are, and which one your pilot mostly contains.
  3. Re-run spend per order excluding the launch period and any promotion window. Note how much the average moves, and which period you will quote.
  4. Give each input a low, middle and high with one sentence of evidence for each end, then carry them through as corners and say in one line why all-lows-at-once is unlikely in your data.
Check yourself

Three questions

Clear all three and Analyst session 2 gets stamped in your passport.

1 · Which input in a bottom-up chain is most at risk from early-adopter bias?

The buyer share is a rate measured on a self-selected slice and multiplied by every household. That is the same local-rate, national-population mix as applying one city's spend to a country.

2 · Why is the household count called a shared link with the top-down?

Include one-person households in both and the top-down prints 31.64 and the bottom-up 21.06, yet the gap stays 1.50x. Triangulation only checks what the two methods do not share; Analyst session 6 shows it on the bench.

3 · Why does a range per input beat a single point?

A point pretends the pilot measured the market. A range per input, carried as corners or by sampling, tells the decision-maker how much rides on the assumptions and which ones to test first.

Sources covered

What this session teaches, and where it came from

✓34,553,907 two-or-more-person householdsStatistics Bureau of Japan, 2020 Population Census, Basic Complete Tabulation on Population and Households, Table I-4-2; read at source; general households minus one-person households
✓Bottom-up 13.06 billion yen a year (7.11 to 21.55)Computed by the widget engine; buyer share, spend per order and orders a year are constructed Kettle & Co inputs
✓With all households included, the bench prints 21.06Computed by the bench engine; one-person households at the same behaviour is an assumption, labelled as one
◐Monte Carlo sampling as an alternative to cornersTaught as a principle and a choice teams disagree on; no figures

Every fact on this page, and its verification tier, is recorded in the course's source map.

Analyst session 2 cheat sheet · pin this

Households x buyers x basket x basketsFour links, one real, three from your own data, each tagged.
Buyers: watch who convertedPilot converters found you first. Source the middle from a cold channel.
Basket: mean, after launchMultiply by the mean, show the median, skip the promotion weeks.
Repeat: by cohortCount orders per buyer by first-order month. A short pilot's year is extrapolated.
A range on every inputCorners print 7.11 to 21.55 around 13.06. Corners are edges, not forecasts.
Shared links cancelThe household count is in both halves, so the gap cannot test it.