Case description
The client’s engagement brief, exactly as an analyst would receive it
This page is the client-facing brief that opens one complete grocery-sim engagement — the letter, the intake interview, a description of the data handed over, the questions asked, and what’s at stake. It is a real artifact from the 3y_baseline scenario arm (cases/3y_baseline/ in the repository) — nothing here is invented for the site.
Per the project’s own epistemic firewall: this brief is written entirely from what the shop’s owner actually lived through and handed over — nothing in it uses the hidden generating mechanism. Two things answer it: the stakeholder report (plain language, written for Henrik) and the technical report (model specifications and diagnostics, written for whoever reviews the stakeholder report before it goes out).
Client: Henrik Malm, owner, Malm’s Market, Kastanjegatan 7, Lindåker. Engagement window: January–February 2028. Decision deadline: the lease answer is due to the landlord by 28 February 2028.
You have been retained as an independent analyst. This packet contains the client’s letter, the notes from the intake interview, a description of the data he has handed over, and the questions he wants answered. The data accompanying this brief is generated by grocery-sim under basic.year = 3 (the arm is named 3y_baseline in the repository).
1 · The letter
Dear analyst,
Three years ago I opened a grocery shop, and by every measure I understood at the time, it worked. More people shop with us every year. The last year was our best ever at the till — over eight hundred thousand euros through the register. And after paying for everything, I personally earned almost exactly nothing. A few hundred euros in the red, if you want the truth of it.
I think I know the reason, and it has a name: Spara+, the discount chain that opened a store six hundred meters from my door last March. Everything was fine until then. Since March I have watched my own customers walk past my window with their yellow bags. I cut my prices on the shelves they advertise hardest — drinks, snacks, cleaning things — and it still wasn’t enough.
My lease expired on New Year’s Eve. The landlord will hold the current terms for a new two-year lease, but he wants my answer by the end of February. Two more years of rent is a serious promise for a shop that just earned nothing, next to a competitor with a marketing budget bigger than my revenue.
Before I sign — or don’t — I want someone who isn’t me to look at my numbers properly. I have kept everything: every receipt line, every delivery paper, every price change, every month’s books. My records are not perfect — I’ll tell you honestly where they wobble — but they are complete, and my monthly ledger is right to the cent, because I do it myself and I check it.
Tell me what the numbers actually say. If the answer is “close”, I would rather hear it from you now than from my accountant in two years.
— Henrik Malm
2 · Intake interview notes
Recorded at the shop, 9 January 2028, after closing. Lightly edited. H = Henrik Malm; Q = analyst.
Q: Tell me about yourself and how the shop started.
H: I’m 52. I spent twenty-four years running other people’s supermarkets for the Fylkia chain — shift lead, then store manager. I know how a shop breathes. In 2024 I decided that if I was ever going to run my own, it was then. I had €40,000 saved. I spent most of a year scouting locations — I still have my notes comparing eight candidate sites: the rents, the fit-out costs, how much shelf space each could hold; I’ll give you those too — and took the one on Kastanjegatan. Not the cheapest, not the busiest. A proper neighborhood: a few hundred households, schools, people who live here for decades. And renters, who don’t. We opened the second of January, 2025.
Q: What kind of shop is it?
H: A full grocery, small format. About 130 products on the shelves at any time across everything — produce, bakery, dairy, meat, fish, frozen, drinks, dry goods, snacks, household, personal care, beer and wine. I carry the premium brand and the cheap one side by side, because a neighborhood shop serves the whole neighborhood. We are not a kiosk and we are not a discounter. People come because we are two minutes away and we have what they need — that is the business.
Q: Walk me through the routine.
H: Same since day one. Open every day of the year except New Year’s Day and Christmas Day. Eight to eight originally; since November 2026 it’s seven to nine. Deliveries come every Wednesday, one truck, from Nordgros — I have used one wholesaler from the start, it keeps the paperwork sane. I do prices myself with the label gun, and I only bother when a price has genuinely drifted — you’ll see in my price file that most tags barely move. End of every month I count the stock, all of it, myself. And the last Sunday of every month is our little tradition: five percent off everything, since opening. People know it; those Sundays are busier.
Q: The first year — 2025 — how was it?
H: Better than my plan, honestly. The first month was wild — everyone in the neighborhood came to try us, and they were filling pantries, not shopping normally. Cleaning supplies, shampoo, spirits — things people buy in January and then not again for months. I nearly mis-ordered on that signal before I understood it. Then it settled into a rhythm. The autumn was rough on costs — the energy crisis, you’ll remember; my electricity bill went mad in the last quarter and my suppliers’ fridge goods crept up too. We still finished the year around seven hundred forty thousand in sales and I lived off the shop. I didn’t pay myself a salary that first year — I lived on my savings and left every euro inside.
Q: And 2026?
H: The good year — though it didn’t start that way. In February the freezer compressor died overnight. I opened the door at seven and threw the entire frozen aisle and half the dairy case into the bin. €1,800 for the repair, plus all that stock, and three weeks of running the frozen section half empty while the engineer waited for parts. But the rest of the year was strong. The summer was brutal — a heatwave like I don’t remember; ice cream flew out the door and my produce spoiled faster than I could rotate it. In September the new apartment building across the street finally filled up — you could feel the new faces week by week. From January that year I had started paying myself properly and putting half of every good month aside, and by autumn the set-aside crossed the line I had promised myself. So in November 2026 I did the expansion: hired Ana — eight-hour shifts, my first employee ever — extended hours to seven-to-nine, and rebuilt the shelving for deeper stock. Cost me €14,000 in fittings, all saved, no loan. December 2026 was the best month the shop ever had. I was proud of that year.
Q: Then 2027.
H: (long pause) Everything got heavier at once. The rent review kicked in from January — my lease had a review after two years, and it went from €1,160.66 to €1,299.94 a month, twelve percent. Fine, it’s the contract. Then in March, Spara+ opened. Six hundred meters away, yellow signs, national advertising. From May I fought back — I cut my margin about four points on drinks, snacks, and household goods, the shelves they scream about. In August we had two lovely weeks — the town moved the street festival onto our street and the shop was full of strangers. In the autumn, dry goods and flour-type staples got expensive again for a couple of months — suppliers said world prices. We ended the year at over eight hundred ten thousand in sales. Record. And the bottom line was a few hundred euros below zero. I paid Ana, I paid the landlord, I paid the taxman — everyone got paid except me.
Q: What do you think happened?
H: Spara+. I don’t need a consultant to see it — walk outside. Everything in this shop worked until March 2027 and after March 2027 I earn nothing. My worry is that this street is now a discounter’s street, and two more years of lease is just two more years of feeding the landlord while Spara+ finishes the job. That’s what I want you to check with the numbers — not whether I’m losing to them, I can see that — but whether it’s already fatal.
Q: Anything I should know about the records before I start?
H: Yes, be careful with three things. First, the POS terminal is old — it has re-uploaded whole receipts before; my card processor swears they fix it, but I have found doubles in the past and I doubt I found them all. Second, the month-end count never quite matches what the books say should be on the shelf — every retailer knows this, we write off the difference, but you should know the book stock drifts. Third, some delivery paperwork never got typed in — there were weeks I was alone and exhausted, and I paid Nordgros for goods you will not find an invoice line for. My ledger is still right — I book from the bank account, not from the paper — but the invoice file has holes. Oh, and the little weather station on the roof — I log temperature and rain because weather moves my trade — it goes dark for a few days now and then.
Q: What does a useful answer look like to you?
H: Pages I can read. A number where you tell me how sure you are. And don’t be polite: if I did something wrong, I want it in the first paragraph, not the last.
3 · The data
Henrik provides complete records for 1 January 2025 through 31 December 2027, as exported from his systems:
| File | What it is |
|---|---|
receipts.csv |
every till line: date, hour, product, quantity, unit price, payment type, a promo flag; card payments carry the terminal’s anonymized customer code; returns reference the original receipt |
price_history.csv |
every shelf-tag change per product |
promotions.csv |
his markdown campaigns (dates, depth, category) |
procurement.csv |
Nordgros invoice lines: order/delivery/posted dates, quantity, unit cost |
inventory_eod.csv |
end-of-day book stock per product |
write_offs.csv |
everything binned, with a reason (spoilage, the monthly count correction, the freezer accident) |
cost_sheet.csv |
his monthly ledger — authoritative for money: revenue, procurement, rent, wages, utilities, VAT remitted, plus his savings ledger, own draws, the fit-out spend, and tax payments |
tax_statement.csv |
the three annual filings |
calendar.csv, weather.csv |
trading calendar; the roof station’s temperature and rain log |
locations.csv |
his 2024 site-scouting notes (the eight candidate sites) |
SKUs.xlsx |
the product catalog: category, brand tier, base prices |
He estimates roughly 60% of payments are by card. Cash customers are anonymous by nature; card codes are stable but pseudonymous.
4 · The questions
Henrik’s questions, in his words, in the order he asked them. He expects each answer as something he can read, with your confidence stated.
- “Show me where the money actually goes.” A picture of the three years — what comes in, what leaves, and where the profit went — that he can put on the wall.
- “Am I really growing, or does it just feel that way?” Separate genuine growth from seasons and one-off events.
- “What is the shrinkage costing me — and should I be worried about theft?” The month-end write-offs bother him more than he admits.
- “What did Spara+ actually cost me?” A number, with your reasoning — he wants his conviction tested, not flattered.
- “Was the expansion worth it?” Ana, the hours, the shelves, the €14,000 — he asks this one quietly.
- “Which customers am I losing, and who replaced them?” He recognizes faces, not numbers; he wants the turnover of his neighborhood made visible.
- “What should I expect 2028 to look like?” If nothing changes — ranges, not prophecy.
- “Renew, close, or change something — what do the numbers say?” The answer he is paying for, due before 28 February.
5 · Stakes
If he signs, he commits to roughly €31,200 of rent over two years against a year that netted him nothing. If he walks away, he abandons a shop with record revenue, a loyal core of regulars, and three years of his life. He believes the decision hinges on Spara+. Your job is to find out whether the numbers agree.
Two answers to this brief: the stakeholder report (what Henrik actually receives) and the technical report (the review copy, on a separate grocery-sim run, showing the same underlying capability at full statistical depth).