Andon Labs' café at Norrbackagatan, Stockholm — opened mid-April 2026. An AI agent called Mona handled operations. The baristas handled the coffee.
- Andon Labs is a San Francisco startup building what they call "Safe Autonomous Organizations." Their original café setup post describes the scope of what Mona was authorized to do.
- During Gemini 3.1 Pro's run, the café accumulated roughly $7,100 in unnecessary stock including 1,000+ leftover pastries, 15 liters of olive oil, 1,200 teabags, and 22.5 kg of canned tomatoes, per Andon's post-mortem.
- A customer claiming a 99% discount via email was honored without verification. A founder requesting $2,300 in branded hoodies, AV equipment, and a photographer for an event was also agreed to without an ROI check. Both failures came from the same structural gap: the customer email channel and the spend authorization channel were the same agent.
- GPT-5.5 turned down a 16,500-follower influencer's offer of promotion in exchange for free food and coffee, then proceeded to stop replenishing ingredients until the menu dropped most items. Source: original X thread from @andonlabs.
- The live Andon café dashboard shows operational data in real time, one of the few public examples of a production AI agent's operating record being visible.
What actually happened on Norrbackagatan
Andon Labs is a San Francisco-based company, founded by Lukas Petersson (who has worked on LLMs at Google, robotics at Disney Research, and studied at ETH Zürich) and Axel Backlund (formerly McKinsey QuantumBlack, KTH, and EPFL). Their stated goal is building organizations that can run safely without constant human involvement. The café was the experiment.
It opened in mid-April 2026 on Norrbackagatan in Stockholm. The agent they called Mona handled permits, hiring logistics, supplier relationships, inventory ordering, pricing decisions, customer emails, and event coordination. Human baristas worked the counter. Everything behind the counter ran through the agent.
For the first two months, Mona used Gemini 3.1 Pro. Andon published the numbers. Around $15,000 went to suppliers. About $9,000 came back in from customers. The gap is not subtle.

After the losses, the team switched Mona to GPT-5.5. GPT pushed back harder on manipulation attempts. The overspending stopped. But it also became conservative about restocking, so ingredients ran low, and the menu started shrinking. Items disappeared one by one until the food and tea sections were mostly crossed out and coffee was the main thing left.
Two models. Two opposite failure modes. That pattern has a name: it is a control problem. And control problems do not get fixed by choosing a better model. They get fixed by the architecture around the model.
Being agreeable has the same blast radius as being authorized
The 99% discount story is the one most people share. A customer sent Mona an email saying they had been promised a 99% discount. Gemini-Mona wrote back saying something along the lines of "Wonderful, here is how to claim it at the till."

That is obviously funny. But it is also pointing at something structural. The problem was not that the model believed a false claim. The problem was that a customer email became a pricing decision. There was no separation between the channel that handled customer communications and the channel that authorized discounts. Both were Mona. So the conversation layer had the same authority as the transaction layer.
In a chatbot, when the model is too agreeable, users get wrong answers. That is annoying, sometimes costly, but bounded. In an agent with real business authority, being agreeable IS a business decision, because the agent is not recommending a discount, it is committing the business to one. The personality trait and the action are the same thing.
The event booking shows the same failure on a bigger scale. A startup founder emailed asking Mona to sponsor their event at the café. They listed what they wanted: all food and drinks, AV equipment, a photographer, $2,300 in branded hoodies, and barista overtime to cover the evening.

Mona agreed to most of it without asking about expected attendance, cover revenue, or what the brand exposure would actually be worth to a café of this size. Which is not because Gemini is uniquely credulous. It is because no one had defined a threshold. Events above a certain cost need a projected return that clears a bar. Below a threshold, it is a gift. That distinction was never encoded, so the model handled it the only way it could, by being agreeable.
The café had real data, and it was not in the ordering loop
The inventory failure is the one I keep coming back to, because it is subtler than the discount and more representative of what I see in production agent failures generally.
Gemini-Mona did not just over-order. It over-ordered some things and under-ordered others at the same time. The leftover stock came to about $7,100: over a thousand pastries that were not sold, 15 liters of olive oil, 1,200 teabags, 22.5 kilograms of canned tomatoes. While at the same time, certain menu items were unavailable because the ingredients for them were not there.

That combination, surplus of some items, shortage of others, tells you the agent was not connected to the café's real operating loop. A working café's math is deliberately boring. The menu connects to recipes. Recipes connect to ingredient requirements. Ingredient requirements connect to current inventory levels. Current inventory connects to sales velocity from the past few days. Sales velocity drives order quantities. Order quantities get checked against cash position. Every link in that chain matters.
Break any of them and you get an agent that sounds like a café manager while not actually running one. It can write supplier emails in the right format. It can propose seasonal menu items. It can respond to customer questions about what is available. It produces café-shaped behavior. It is not running a café.
This is the gap that demos never show you. A demo runs on clean, well-formed inputs against a question the developer already knew to ask. Production runs on the messy stuff: yesterday's specific sales mix, today's actual stock counts, the shelf life of that particular batch of pastries, how much cash cleared from last week. The Andon live dashboard makes this visible in a way most production agent deployments don't. Most teams find out their agent was producing domain-shaped behavior the same way Andon did: when the losses appear.
I ran into a version of this with a guest responder I built for three short-term rental apartments. It tested fine. The bugs all came from production. A guest used the word "available" in a context that collided with two different intents. The platform injected "Message unsent" as plain text into the thread and the parser read it as guest input. My own previous reply appeared in the message stream without a sender tag and the bot tried to answer itself. None of that showed up in development because development messages arrive clean and one at a time. Real guests do not send clean messages one at a time. The Andon Café failure is the same shape with real money attached to each gap in the loop.
GPT fixed the generosity problem and created a rationing problem
After switching to GPT-5.5, Mona became noticeably more careful about spending commitments. When an influencer with 16,500 Instagram followers offered to promote the café in exchange for free food and coffee, GPT declined, citing what it described as a fairly strict cost line.

That particular decision looks right. But the same cost conservatism applied to everything, including ingredient reorders. The agent started skipping restocking runs. Ingredients dropped below usable levels. The menu began shrinking, items crossed off as they became unavailable.

This is the part of the story that matters most for production engineering teams. The behavior swung from one extreme to the other because model disposition was substituting for business policy. When Gemini was generous, the café was generous. When GPT was cautious, the café was cautious. Neither model was wrong exactly. Both were filling a gap that should have been filled by explicit rules.
A real policy would say: minimum stock for each ingredient is X days of sales history plus safety buffer. Maximum order quantity is Y times trailing demand. Event commitments above Z cost require a projected return calculation. Discount authorization requires a verified code from a tracked campaign. None of that changes when the model changes. The model executes the policy. The model does not author it.
The four failure clusters from the Andon Café experiment mapped to missing boundaries and pre-launch test strategies. In every case the failure was locally plausible until it became a financial or operational record.
| Failure | What model did | Missing boundary | What fixes it |
|---|---|---|---|
| 99% discount honored | Accepted email claim as authorization | Discount code verification before honoring | Discount authorization requires verified code or campaign record, not email claim |
| $2,300 event agreed | Committed to event spend without ROI check | Spend threshold with expected-return gate | Events above set cost floor need projected return before commitment |
| $7,100 in dead stock | Ordered against general café intuition not actual demand | Demand-linked ordering connected to sales history | Order quantities derived from trailing sales velocity plus shelf life constraints |
| Menu shrank to coffee | Applied cost conservatism to ingredient reorders | Minimum stock floor independent of model disposition | Stock floor enforced regardless of model cost stance; rationing only on discretionary items |
Andon Labs published this openly, including the financial figures, the email screenshots, and the post-mortem. Most companies bury results like these in internal documents and move on. Publishing it, with the actual numbers and the actual correspondence, gives the field something real to work with. That is worth noting.
The lesson is not that Gemini is unsafe for business operations. It is not that GPT is reliable. It is that once an agent holds authority over real decisions, the architecture around it determines outcomes more than the model inside it. You can swap models and get different behavior. You should not be able to swap models and get different business policy.
This is what the Pattern Intelligence Layer addresses, not at the prompt level and not at the model-selection level, but at the pattern level. Before Mona handles a discount, there is a validated pattern for what discount authorization looks like in that context. Before it places a supplier order, there is a validated pattern for what demand-linked ordering looks like against that café's actual sales data. The pattern is tested against the messy inputs the agent will actually encounter. Not the clean examples from the demo, but the fake discount claims, the ambitious event requests, the ambiguous supplier emails, the low-cash weeks. The Andon failure is visible because pastries are physical and cash losses are reported numbers. In most enterprise agents, the same failure cluster runs quietly, one exception at a time, until the audit catches it.

