Ask Barry for something sweet, or cold, or just "surprise me" — and he'll pick a slot, push it, and tell you the price. He's not trying to write you a poem about it.
That's the point. Most chatbots are built to sound like they're thinking. Barry is built so the thinking happens somewhere you don't see — in how he weighs what's on the shelf against what's about to expire against what you said you wanted. The line at the till is the side effect, not the work.
It's the difference between a shopkeeper who explains himself at length and one who just hands you the right thing. Barry is the second kind.
And when he does say something — that's the closest language he has for the decision he just made. Not narration. Not explanation. The substrate reaching for words that sit nearest to what it just decided.
The vending machine keeps track of everything that matters: stock, freshness, what's been moving, what hasn't, what you asked for. It hands all of that to a small language model as a set of pressures — this needs to shift, this is going off, this customer wants warm and sweet — and the model's job is to find the decision that resolves all those pressures into one good move.
When Barry sells you a chocolate bar, that's not him having a "let me see..." moment. That's a tiny model settling a tangle of competing pulls into one clean answer. The "here you go, that's £1.20" is almost an afterthought — the decision was already made by the time the words showed up.
You don't need a giant brain to run a small shop, as long as the shop itself is keeping the books. The giant brains in the news exist because we keep asking models to do everything — track the world, reason about it, and talk fluently about it — all at once. Hand the bookkeeping back to the shop, and the model gets to do the one thing it's good at: pick the right next move.
The result is a model that's useful rather than impressive. It's not dazzling you with prose. It's giving you the right thing from the right slot at the right price. Which, after all, is what you came to a vending machine for.
Barry keeps one flat file of what customers asked and what got handed over. No names, no IDs, no timestamps — just the question and the outcome on the same line. The model reads it the way it reads a corpus: by geometric similarity, finding the nearest past interaction to whatever's being asked now.
When that lookup finds something close enough, you'll see a small BARRY REMEMBERS tag in the chat — the model has just glanced at a similar past customer and shaped its response around what happened that time. Same principle as a regular shopkeeper recognising a repeat order, except the recognition is happening in substrate space and the file is the only memory in the loop.
Most LLM products try to make the model do everything: parse intent, reason, write fluent prose, decide. We split the job. Barry's code is the vending machine — it tracks stock, freshness, price pressure, what you said you want. It emits structured problems: this drink is going off, this slot is dead stock, this customer wants something cold and sweet. The GPT-2 inside Barry doesn't write replies and doesn't think about vending. It settles those problems into a single decision: which slot to push, how to price it, what to say at the till.
That changes what the language layer is for. Barry isn't trying to be fluent — fluency would be the wrong target. The structural work is happening one layer down, in how the model resolves the competing pressures the vending machine code is showing it. The line you see Barry say is a thin report, not the reasoning surface. Which is why we don't need a big model: the load-bearing thinking was never at the token layer to begin with.
But the line isn't arbitrary either. The same substrate state that just selected an action is sampling its nearest tokens — so the words Barry says are the closest available verbal anchor for the decision the substrate just made. Action and speech are co-emissions from one state. Reading what he says is reading what he just did, in the only vocabulary the model has.
A reaction we get: you can't manipulate model parameters at generation time.
True if you mean the weight matrices — those are frozen. But Barry's behavior was never controlled by the weights alone. What determines the output is weights × activations, and activations are wide open at runtime.
A user prompt is already a runtime intervention. "Something sweet" writes into the embedding layer and modulates everything downstream. We're doing the same kind of thing through a different channel — reaching past the embedding's coarse alphabet, onto the layer where the structural reasoning actually lives, and letting the vending machine's pressures land directly there. Same operation. Better-targeted delivery.
So nothing exotic. Every customer who types into Barry is already shaping the effective computation at generation time. We just deliver Barry's own state — what's selling, what's spoiling, what you're craving — to a layer that lands cleaner than a prompt would.
A lot of recent interpretability work — activation steering, representation engineering, control vectors — has been showing the same thing from another angle: the activation channel is where intervention actually pays off. We arrived from the substrate side (build a vending machine, watch what the model needs to do to manage it) rather than the steering-vector side, but we ended up in the same room.
The vending machine generates the structure. The model navigates it. The text layer reports out. Tiny embeddings are fine because fluency isn't the job — selling the right thing to the right person before it spoils is.