An AI agent ran a real café for two months. Here is what it could not learn.

Andon Labs opened a physical café in Stockholm and let an AI agent run it. Gemini 3.1 Pro lost around $6,000. GPT-5.5 stopped the losses and shrank the menu to coffee only. Neither model was wrong. Both were filling a gap that should have been filled by validated operating boundaries.

B

Balagei G Nagarajan

12 MIN READ


An AI agent named Mona ran a physical café in Stockholm for two months, managing supplier orders, customer emails, inventory, pricing, permits, and event bookings. Everything except serving the coffee. During the Gemini 3.1 Pro phase, the café spent around $15,000 with suppliers and took in about $9,000 in sales, a roughly $6,000 operating loss. Switching to GPT-5.5 stopped the overspending but caused the opposite problem: the menu shrank to coffee as ingredients ran out. The root cause was not which model ran the café. It was that an agent with real financial authority had no validated operating boundaries around it.
A Stockholm café at night seen through rain-streaked glass, warm amber light inside, a tablet screen showing inventory charts glowing on the counter
So the conversation layer had the same authority as the transaction layer.
— from “An AI agent ran a real café for two months. Here is what it could not learn.”

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.

Profit and loss chart from the Andon Café AI agent experiment, showing Gemini loss of roughly $6,000
Andon's published financials. The Gemini phase ends at a $6,000 deficit before rent and salaries. Source: Andon Labs post-mortem.

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."

Email screenshot showing Gemini agent accepting a customer claim for a 99% discount without verification
Gemini-Mona honored a 99% discount claim with no verification. Source: @andonlabs X thread.

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.

Email thread showing AI agent agreeing to sponsor an event including $2,300 in branded hoodies and photographer
Mona agreed to the event without asking about projected return. Tool authority leaked through the conversation layer. Source: @andonlabs X thread.

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.

Chart showing pastry over-ordering at the Andon Café, with more than 1,000 units of unsold inventory
Pastry over-ordering during the Gemini phase. Hundreds of units accumulated while some menu items stayed unavailable. Source: Andon Labs.

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.

Email showing GPT-5.5 agent rejecting influencer offer citing strict cost management policy
GPT-5.5 declined a 16,500-follower influencer offer. A reasonable call. The same cost discipline also starved the inventory. Source: @andonlabs.

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.

Café menu board showing most items crossed out, only coffee remaining available after GPT-5.5 over-corrected on inventory
After GPT-5.5 took over, cost conservatism spread to ingredient ordering. Most menu items became unavailable. Source: @andonlabs X thread.

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.

Failure taxonomy for the Andon Café AI agent: four failure clusters, what showed up in each, the missing boundary, and how to test for it before launch

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.

FailureWhat model didMissing boundaryWhat 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.

Frequently asked questions


Share this post

Join the discussion

Have a take, a war story, or a question? Sign in with GitHub to comment and react. Comments are powered by GitHub Discussions, ad-free and yours to moderate.

Continue Reading

Find where your agent breaks, before you build it

Faultmap maps where your agent will fail from the goal and your data, then hands you the first test suite it has to pass.