Auto-generated briefs

Two more engagement types, straight out of describe() — unedited

The case description is a hand-curated case: a real grocery-sim run, but with a full stakeholder report written on top of it, worked and checked line by line. The two briefs below are different on purpose — they are the raw, unedited output of sim.describe(), shown to demonstrate that the brief generator itself produces genuinely different kinds of engagements depending on what actually happened in the run, not just different flavor text on the same story.

grocery-sim classifies every run along two axes: how the business is actually doing (struggling / thriving / uncertain, from the real profit trajectory) and what kind of engagement that performance calls for (diagnose a specific cause, optimize day-to-day operations, or invest retained earnings — see Theory for the reasoning behind the split). Malm’s Market is a diagnose case. The two below are optimize and invest, generated from grocery_sim.recipes — named, empirically verified settings recipes that reliably land on a given engagement type (shipped in the package specifically so a case-writer doesn’t have to hope a random seed produces the exercise they want).

Neither brief below has an accompanying analysis report — per describe()’s own closing line, each is “a starting outline, not a finished case.”

Optimize: an operationally sloppy year

Generated from grocery_sim.recipes.RECIPES["optimize"] — a struggling one-year run with elevated, cost-priced shrinkage. The engagement reads as “find where I’m bleeding money,” not “find the one thing that went wrong.”

Client: Erik Malm, owner, Malm’s Market, Bjorkvagen, Solby.

The letter

Dear analyst,

I’m 51. I spent 15 years working for Nordmart before I opened Malm’s Market myself, on Bjorkvagen in Solby, with about 60,000 euros of my own money behind it. That was 2025.

Over one year we have taken in about 479,000 euros across the till altogether, and the bottom line came out to a loss. I want someone who isn’t me to look at my numbers properly before I decide whether to hold on, change something, or walk away.

I’ve kept everything — every receipt, every invoice, every month’s books. My records aren’t perfect, and I’ll tell you honestly where they wobble, but they’re complete, and my own monthly ledger is right, because I check it myself.

Tell me what the numbers actually say.

— Erik Malm

Intake interview notes

In Erik Malm’s own words.

Q: Tell me about yourself and how the shop started.

He: I’m 51. I spent 15 years working for Nordmart before deciding to open my own place. I had about 60,000 euros saved, and I took a spot on Bjorkvagen, in Solby. We opened in 2025.

Q: What kind of shop is it?

He: A full grocery, small format — about 162 products on the shelf at any time. People come because we’re close and we have what they need — that’s the whole business. I’d guess close to 62 percent of what we take is by card, the rest cash.

Q: Walk me through the routine.

He: Same routine most weeks. Deliveries come every Wednesday, one truck. I do the shelf prices myself, only when they’ve genuinely drifted.

Q: What do you think happened?

He: Honestly, I don’t think it’s one single villain. I think we’re just not running as tight as we should be — waste, small inefficiencies, day to day. That’s what I want you to find, not one big story.

Q: Anything I should know about the records before you start?

He: Yes, be careful with 4 things. First, the till terminal mis-rings an item now and then — I void it and re-ring it, so you’ll find 66 paired correction lines in the receipts over the whole period, nothing missing, just messy. Second, my supplier’s system has posted the same invoice twice before — I caught 21 such duplicates myself, but I’ll admit I don’t check every single one. Third, some delivery paperwork never got typed in — there were weeks I was alone and exhausted, and I paid the supplier for goods you won’t find an invoice line for; my bank-account ledger is still right, I just can’t always show you the paper behind it. Fourth, the little weather log I keep goes dark for a few days now and then — 4 missing day(s) over the whole period — the station on the roof is nothing fancy.

Q: What does a useful answer look like to you?

He: Pages I can read. A number, and how sure you are behind it. Don’t be polite about it either.

The data

Erik Malm hands over complete records for the full one year:

File What it is
calendar the trading calendar
cost_sheet the monthly ledger, authoritative for money: revenue, procurement, rent, wages, utilities, VAT remitted, capital spend, tax payments
inventory_eod end-of-day book stock per product
locations the site-scouting notes from before opening
price_history every shelf-tag change, per product
procurement supplier invoice lines: order/delivery/posted dates, quantity, unit cost
promotions markdown campaigns: dates, depth, category
receipts every till line: date, hour, product, quantity, unit price, payment type; card payments carry a stable but anonymized customer code; voided lines and refunds reference the original line
tax_statement the annual filings
weather the shop’s own temperature and rainfall log
write_offs everything binned, with a reason

The questions

  1. “Show me where the money actually goes.”
  2. “What is the shrinkage costing me, and should I be worried about theft?”
  3. “Where am I bleeding money without noticing it day to day?”
  4. “What should I actually do next?”

Stakes

Erik Malm doesn’t think one event explains the numbers — he suspects the day-to-day running of the shop itself, and wants that priced before weighing whether to hold on, change something, or walk away.

(This brief is generated from this run’s own settings and its own real results — no hidden simulation parameter appears above. Edit freely; this is a starting outline, not a finished case.)

Invest: real, unspent retained earnings

Generated from grocery_sim.recipes.RECIPES["invest"] — a thriving three-year run where retained earnings have cleared the smallest investment’s own calibrated capex. The engagement reads as a capital question, not a diagnosis: what should the owner do with the money.

Client: Mikael Lindqvist, owner, Lindqvist’s Market, Granstigen, Vidnes.

The letter

Dear analyst,

I’m 49. I spent 26 years working for Solvik Handel before I opened Lindqvist’s Market myself, on Granstigen in Vidnes, with about 60,000 euros of my own money behind it. That was 2025.

We started small — about 676,000 euros through the till that first year. By last year we took in about 728,000 euros, our best year yet.

2027: My lease renewed and the rent went up 12 percent, from about 960 euros to about 1,100 euros a month.

Over 3 years we have taken in about 2,118,000 euros across the till altogether, and the bottom line came out to a real profit. I want someone who isn’t me to look at my numbers properly before I decide whether to expand further or simply stay the course.

I’ve kept everything — every receipt, every invoice, every month’s books. My records aren’t perfect, and I’ll tell you honestly where they wobble, but they’re complete, and my own monthly ledger is right, because I check it myself.

Tell me what the numbers actually say.

— Mikael Lindqvist

Intake interview notes

In Mikael Lindqvist’s own words.

Q: Tell me about yourself and how the shop started.

He: I’m 49. I spent 26 years working for Solvik Handel before deciding to open my own place. I had about 60,000 euros saved, and I took a spot on Granstigen, in Vidnes. We opened in 2025.

Q: What kind of shop is it?

He: A full grocery, small format — about 128 products on the shelf at any time. People come because we’re close and we have what they need — that’s the whole business. I’d guess close to 58 percent of what we take is by card, the rest cash.

Q: Walk me through the routine.

He: Same routine most weeks. Deliveries come every Wednesday, one truck. I do the shelf prices myself, only when they’ve genuinely drifted.

Q: And 2025?

He: A quiet year. We took in about 676,000 euros.

Q: And 2026?

He: A quiet year. We took in about 713,000 euros.

Q: And 2027?

He: My lease renewed and the rent went up 12 percent, from about 960 euros to about 1,100 euros a month. We took in about 728,000 euros that year.

Q: What do you think happened?

He: Honestly, I don’t have a complaint. Business is good, and now I have to decide what to do with what I’ve saved — put it back into the shop, or just leave it be. That’s the actual question.

Q: Anything I should know about the records before you start?

He: Yes, be careful with 4 things. First, the till terminal mis-rings an item now and then — I void it and re-ring it, so you’ll find 280 paired correction lines in the receipts over the whole period, nothing missing, just messy. Second, my supplier’s system has posted the same invoice twice before — I caught 65 such duplicates myself, but I’ll admit I don’t check every single one. Third, some delivery paperwork never got typed in — there were weeks I was alone and exhausted, and I paid the supplier for goods you won’t find an invoice line for; my bank-account ledger is still right, I just can’t always show you the paper behind it. Fourth, the little weather log I keep goes dark for a few days now and then — 17 missing day(s) over the whole period — the station on the roof is nothing fancy.

Q: What does a useful answer look like to you?

He: Pages I can read. A number, and how sure you are behind it. Don’t be polite about it either.

The data

Mikael Lindqvist hands over complete records for the full 3 years:

File What it is
calendar the trading calendar
cost_sheet the monthly ledger, authoritative for money: revenue, procurement, rent, wages, utilities, VAT remitted, capital spend, tax payments
inventory_eod end-of-day book stock per product
locations the site-scouting notes from before opening
price_history every shelf-tag change, per product
procurement supplier invoice lines: order/delivery/posted dates, quantity, unit cost
promotions markdown campaigns: dates, depth, category
receipts every till line: date, hour, product, quantity, unit price, payment type; card payments carry a stable but anonymized customer code; voided lines and refunds reference the original line
tax_statement the annual filings
weather the shop’s own temperature and rainfall log
write_offs everything binned, with a reason

The questions

  1. “Show me where the money actually goes.”
  2. “Am I really growing, or does it just feel that way?”
  3. “What is the shrinkage costing me, and should I be worried about theft?”
  4. “Which customers am I losing, and who replaced them?”
  5. “What should I expect next year to look like if nothing changes?”
  6. “What should I do with the money I’ve saved — is there a good return on putting it back into the shop?”
  7. “What should I actually do next?”

Stakes

Mikael Lindqvist isn’t chasing a problem — he is sitting on real, unspent savings and weighing whether to expand further or simply stay the course.

(This brief is generated from this run’s own settings and its own real results — no hidden simulation parameter appears above. Edit freely; this is a starting outline, not a finished case.)