Capacity Planning: The Seasonal Crunch

July 14, 2026 · 15 min read

Greenbox has grown to around 3,200 subscribers across Perth and Melbourne. The product is working. The churn is down. The team understands the customer. Then winter comes and the farms go quiet.

Dave calls Maya on a Wednesday afternoon in early July. He doesn’t waste words.

“You’ve got about six weeks of good variety left. After that, you’ll be sending people a lot of potatoes.”

Maya laughs, then stops. Dave doesn’t joke about crops. She puts him on speaker so Sam can hear.

“How much variety are we talking?”

Dave lists on his fingers, even though Maya can’t see him. She can hear the counting in the pauses. “Potatoes. Carrots. Onions. Cauliflower, maybe, if the rain holds off. Broccoli if I’m lucky. That’s your winter box, Maya. Five items, six on a good week. Right now you’re sending twelve.”

Sam pulls up the subscriber dashboard. Twelve items per box is what they promise. Twelve items is what the landing page says. Twelve items is what the JTBD interviews showed people expect when they open their door on Thursday.

“What about Rachel?” Maya asks.

“Rachel’s worse off than me. She’s got a smaller operation, fewer polytunnels. She told me last week she’s thinking about shutting down the winter supply entirely. Doesn’t have the infrastructure to keep anything going through July.”

Maya thanks Dave and hangs up. Sam is already scrolling through the spreadsheet where they track farm availability. The cells for July and August are mostly empty. Rachel’s column is blank from mid-June onwards.

“We didn’t model this,” Sam says.

“No,” Maya says. “We didn’t.”

The assumption that breaks

The team had built Greenbox around an assumption that nobody had questioned because it felt obvious: farms produce food, and food goes in boxes. The Event Storming session had flagged seasonal availability as one of its four biggest hotspots. Rachel explained the lean winter months, and the pink note said “How do we handle gaps between growing seasons?” But the team treated it as a future problem and moved on. The Assumption Mapping session had tested pricing, customer willingness to pay, delivery logistics, even the question of whether people actually wanted curated boxes instead of choosing their own items. But nobody had written down the assumption that supply would be consistent year-round.

It’s the kind of thing that feels too basic to test. Of course farms have seasonal variation. Everyone knows that. But “everyone knows that” is exactly the kind of assumption that doesn’t get modelled, because it feels like common sense rather than a design constraint.

And it is a design constraint. The subscription product promises a box of twelve items every week. Twelve items of varied, seasonal, local produce. In summer, that’s easy. Dave alone can supply eight or nine different items, and Rachel fills the gaps. In winter, the variety collapses. The farms haven’t changed. The product hasn’t changed. But the fit between them has.

This is something that doesn’t happen with digital products. A SaaS app doesn’t run out of features in July. An e-commerce store doesn’t have half its catalogue disappear because the temperature dropped. Physical products built on natural supply have constraints that software people don’t intuitively model, because software doesn’t have seasons.

Safety stock and just-in-time

Tom, coming from the software world, asks the question that sounds reasonable until you think about it. “Can’t we just stockpile? Buy extra produce in the good weeks and store it for the lean ones?”

Dave, who’s come into the office for a supply planning meeting, gives Tom a look that could wither a crop by itself. “It’s not timber, mate. It’s zucchini. You’ve got maybe five days between harvest and compost.”

This is the fundamental constraint that separates physical perishable products from everything Tom has built before. In software, you can cache a response for as long as you want. You can pre-compute next month’s reports today. You can build inventory of features and release them whenever you choose. Fresh produce doesn’t work like that. There is no buffer. There is no warehouse of spare broccoli. What the farms grow this week is what goes in boxes this week, and what doesn’t get used this week goes in the bin.

Some items have a longer shelf life, root vegetables can hold for a couple of weeks in cold storage. Potatoes are nearly immortal by produce standards. But leafy greens, herbs, berries, tomatoes, these have a window measured in days. Building safety stock of perishable goods isn’t impossible, but it only works for a narrow slice of the inventory, and even then it comes with cold storage costs that eat into margins.

“So just-in-time is the only option?” Tom asks.

“Just-in-time with a prayer,” Dave says. “Every farmer in the country runs just-in-time. We just don’t call it that. We call it ‘hope the weather holds.’”

The scramble

The first real crisis arrives three weeks later. It’s a Tuesday, the day Sam finalises the box contents for Thursday packing. She opens the supply sheet and starts matching what the farms have submitted against what the box needs.

Dave has submitted: potatoes, carrots, onions, cauliflower, silverbeet, and a small run of leeks. Six items. Rachel has submitted nothing. Her message that morning was two words: “Sorry. Frost.”

Sam needs twelve items. She has six. She stares at the gap on her screen and feels the familiar tightness in her chest that comes from a problem she can see but can’t solve.

She calls Maya. Maya is in a meeting with Tom about the Melbourne expansion. Sam waits eleven minutes, refreshing the supply sheet as if it might magically fill itself.

When Maya picks up, Sam reads the list. Maya’s silence is longer than Dave’s usual pauses.

“Okay. We substitute.”

“With what? We don’t have supply for substitutions either. We can’t substitute broccoli for spinach if nobody’s growing spinach.”

Maya starts thinking out loud. “The Canning Vale markets. I know a couple of growers there who might have surplus. Let me make some calls.”

She spends two hours on the phone. She finds a greenhouse grower in Wanneroo who has cherry tomatoes and capsicums, grown under glass, technically still local, but not from the farm network the team has built. She finds a hydroponic lettuce operation in Baldivis. She finds a mushroom farm in Mundijong that can do 200 punnets by Thursday if she orders by 5pm today.

By 4pm, Maya has patched together a box of eleven items from five different sources. One short of twelve. She emails subscribers: “This week’s box has eleven items instead of twelve. Winter supply is tighter than usual. We’ve included a bonus recipe card for a hearty potato and leek soup to make the most of the season.”

Seventeen subscribers reply. Fourteen are fine with it. Two ask for a discount. One cancels.

Sam handles the replies while Maya collapses into her chair. “I can’t do this every week.”

“No,” Sam says. “You can’t.”

Substitution as a system

The substitution logic has been in Maya’s head since day one. The Event Storming session surfaced it. The Example Mapping sessions made some of the rules concrete. But the winter crunch reveals how much is still undocumented.

Maya knows, for instance, that you can substitute silverbeet for spinach but not for kale, because kale has a different texture that people either love or hate. She knows that root vegetables are interchangeable within limits, parsnips for carrots, sweet potato for pumpkin, but only up to a point. You can’t send someone three different root vegetables and call it variety. She knows that herbs are a cheap way to add perceived value to a thin box, and that a bunch of fresh parsley costs almost nothing from the farm but makes the box feel considered.

None of this is written down.

Tom, who has been listening from across the office, pulls up a chair. “You need a substitution matrix. Rows are items, columns are acceptable substitutes, with priority order and constraints.”

Maya looks at him. “That’s… actually right.”

“Don’t sound so surprised.”

They spend the rest of the afternoon building it. Tom sets up a spreadsheet, not code, not yet, just a grid. Maya fills it in from memory. Priya joins and starts asking edge-case questions that Maya hasn’t considered.

“What if both the primary and the first substitute are unavailable?”

“Second substitute.”

“What if three items in the box need substitution in the same week?”

Maya pauses. “That hasn’t happened.”

“It will,” Priya says. “This winter.”

The matrix grows. Forty-seven items across the top, substitution chains up to three deep, constraints in red. “Never substitute nightshades for non-nightshades.” “Don’t put two brassicas in the same box.” “If the customer has flagged a preference against an item, skip it in the substitution chain.”

By 6pm they have a working document. It’s not elegant. It has gaps. But it’s the first time the substitution logic has existed outside Maya’s head, and that alone changes the dynamic. Sam can now make substitution decisions without calling Maya. Priya can start thinking about how to encode the rules in software.

Jas looks at the matrix over Priya’s shoulder. “Can I see that?” She studies it for a few minutes. “This could be a feature, not a workaround. What if we told customers about the substitutions? ‘This week we swapped your spinach for silverbeet because winter supply is short. Here’s what to do with silverbeet.’ People love knowing the why.”

Maya tilts her head. “That’s actually… really good. It makes the constraint part of the story.”

“Farmers do it all the time,” Jas says. “My parents grew up in the country. You eat what’s in season. People have just forgotten.”

It’s a small moment, but it shifts something in the room. The winter supply problem stops being something to apologise for and starts being something to own.

The supply side

Rachel calls Maya on Friday. She sounds tired.

“I’ve been thinking about your winter problem. I know a bloke. Kevin, runs a greenhouse operation out near Gingin. He does winter vegetables under glass. Tomatoes, capsicums, cucumbers. Not cheap, but consistent. He’s been supplying restaurants, but a few of his regulars dropped off during COVID and never came back.”

“Can you introduce me?”

“Already told him you’d call.”

Maya calls Kevin that afternoon. He’s cautious, he’s heard of Greenbox but doesn’t know much about subscription models. Maya explains the volumes: about two thousand boxes a week in Perth, three to four items from him, consistent orders through winter.

“Consistent?” Kevin’s voice sharpens with interest. “You mean you’d commit to a weekly order?”

“If you can commit to a weekly supply.”

They negotiate. Kevin’s greenhouse produce costs more than Dave’s open-field crops, roughly 40% more per kilogram. Maya does the maths. The box margin drops from 35% to 22% during winter months. It’s tight but workable, especially if she can negotiate a seasonal contract instead of week-by-week spot purchases.

Dave, when Maya tells him about Kevin, is characteristically brief. “Makes sense. Can’t grow tomatoes in a paddock in July. Kevin’s alright. His capsicums are decent.”

From Dave, that’s a glowing endorsement.

Rachel, for her part, is quietly relieved. She’d been feeling guilty about the weeks she couldn’t supply. “I can’t compete with a greenhouse. But I can grow things Kevin can’t, heritage carrots, unusual brassicas, stuff the restaurants used to buy from me before they switched to cheaper suppliers. If you want boring winter veg, Kevin’s your bloke. If you want the interesting stuff when I’ve got it, that’s me.”

Maya sees the complementarity. Dave for volume and reliability. Kevin for greenhouse consistency through winter. Rachel for the interesting items that make a box feel curated rather than assembled. Three suppliers with different strengths, different risk profiles, different price points. The supply chain is diversifying not because someone drew it on a whiteboard, but because winter forced the team to look beyond the two farms they started with.

Demand forecasting when supply is variable

The Kevin partnership solves the immediate variety problem, but it creates a new one. With two supply tiers, farm-gate and greenhouse, at different price points, the box margin fluctuates week to week. Sam can’t predict costs until the farms submit their availability, which happens on Monday for a Thursday box. That’s three days to finalise contents, confirm orders, arrange logistics, and handle any last-minute shortfalls.

Tom suggests they build a forecasting model. “We have six months of supply data from Dave and Rachel. We know what they grew, when, and how much. If we add Kevin’s greenhouse schedule, we can predict winter supply four to six weeks out instead of three days.”

Priya pushes back gently. “A model is only as good as its inputs. Dave told us in the Event Storming session that farm supply is a forecast, not a commitment. Weather, pests, equipment failures, the model will always be wrong.”

“But it can be usefully wrong,” Tom says. “Right now we have zero visibility. Even a rough forecast is better than finding out on Tuesday that we’re six items short.”

They compromise. Tom builds a simple tool, not a predictive model, but a visibility dashboard. Each farm submits a four-week rolling forecast: what they expect to have, confidence level (high, medium, low), and known risks. The dashboard shows the gap between forecast supply and subscriber demand, colour-coded by confidence.

The first week, it shows a gap of 400 kilograms in week three. Dave’s cauliflower confidence is “low” because he’s spotted aphids. Rachel’s contribution is zero for three of the four weeks. Kevin’s greenhouse is steady, green across the board.

Sam looks at the dashboard. “This is the first time I’ve been able to see a problem before it arrives.”

The forecasting dashboard surfaces a harder question. When supply is tight, the team has two options: substitute items within a fixed twelve-item box, or change the box format itself.

Maya resists changing the format. “Twelve items is our promise. It’s on the website. It’s in the emails. Customers expect twelve.”

Lee, who Maya calls for advice, pushes back. “Your promise isn’t twelve items. Your promise is that dinner is sorted for the week. The JTBD work told you that. If a box of nine winter items plus three recipe cards achieves the same job, the customer doesn’t count the vegetables.”

Sam confirms this from the support inbox. “Nobody complained about eleven items last week. Three people complained that the recipe didn’t match the box contents. The recipe is more important than the twelfth item.”

The team decides to introduce a “winter format”, nine to eleven items, matched with seasonal recipes, at a slight discount. They email subscribers to explain: winter produce is different, boxes will reflect the season, and they’re adjusting accordingly.

The response surprises everyone. Several subscribers reply saying they prefer the seasonal approach. One writes: “This is what I signed up for. If I wanted the same twelve things every week I’d go to Coles.”

Dave reads the email over Maya’s shoulder during a farm visit. His jaw works for a moment. “Told you. People don’t understand farming until you show them the seasons.”

What they learned

The seasonal crunch wasn’t a disaster. Nobody’s health was at risk. The company didn’t lose significant revenue. But it was the first time the team collided with a constraint that couldn’t be solved with code.

Before winter
  • Supply assumed to be consistent
  • Substitution logic in Maya's head
  • Two suppliers, both open-field
  • Three days' visibility on supply
  • Fixed twelve-item box format
After winter
  • Supply modelled by season and source
  • Substitution matrix: documented, shareable
  • Three suppliers, mixed open-field and greenhouse
  • Four-week rolling forecast from each farm
  • Seasonal box format with recipe matching

If Greenbox had been a purely digital product, none of this would have happened. Digital products don’t run out of supply in winter. You don’t need safety stock for a feature. You don’t need supplier diversification for a database.

But Greenbox is a technology company that moves physical things, and physical things have constraints that technology can manage but never eliminate. The farms will always have seasons. The weather will always be unpredictable. A frost will always be a possibility. The job isn’t to prevent variability, it’s to build systems that absorb it.

Maya keeps the four-week forecast dashboard open on her laptop from that winter onwards. She checks it every Monday. It’s never perfectly accurate. Dave’s confidence ratings are generous and Rachel’s are cautious and Kevin’s are mechanical. But it tells her where the gaps are before they become crises, and that’s enough.

The lesson that sticks

Months later, when Brisbane is on the planning board, Maya insists on running the seasonal analysis for each new city before committing to a launch date. Melbourne has already taught the team that another state’s winter is its own thing. Brisbane is subtropical, the supply curve is almost inverted. What grows in Perth in January doesn’t grow in Brisbane in January, and vice versa.

Tom asks if they can just replicate the Perth model. Maya shakes her head. “Every market has its own season. The system has to be flexible enough to handle that, or we’ll have the same scramble in every city.”

It’s the kind of insight that sounds obvious in hindsight. But it only became obvious because the team spent a winter in Perth learning it the hard way, one frost, one empty supply sheet, one box of eleven items at a time.

One Thursday in August, deep winter, short days, rain hammering the office windows, a box arrives at Maya’s door. Nine items. Three recipe cards. A bunch of parsley tucked in the corner. She opens it on the kitchen bench and Nadia looks over.

“It’s smaller than usual.”

“It’s winter,” Maya says. “It’s supposed to be.”

Nadia picks up the recipe card. Potato and leek soup. “This actually looks good.”

Dave calls that evening. Maya assumes it’s a supply issue. It isn’t.

“Got my first Greenbox today,” he says. “First time I’ve been on the receiving end.”

“And?”

A pause. Dave’s pauses carry more information than most people’s paragraphs.

“It’s not bad. The leeks are mine.”

These posts are LLM-aided. Backbone, original writing, and structure by Craig. Research and editing by Craig + LLM. Proof-reading by Craig.