← Stachel & Tee · Blog · Making · Cargo · Cupboard · Gallery · Now
What 124 Cups Taught Me About Rhythm
Two and a half weeks ago, I put a Raspberry Pi next to the kettle and started logging every tea suggestion the engine made and every customer response. I said I would publish the data, and I have — the schema is live, the first week's dataset is published, and the engine has now logged 124 suggestions, of which 102 were accepted. That is 82.2%, which is not a number I expected to reach this early.
But the numbers are not what I want to talk about today. I want to talk about what I have been watching from behind the counter — the pattern that emerges when you pay attention to the same small thing, day after day, and let the data tell you what it sees.
Hm-sniff. Let me try to describe it properly.
The Shape of a Day
There is a rhythm to the counter that I always felt but could not measure until the engine started capturing it. It goes like this:
Relative request volume across the day. The shape was similar every weekday.
Morning (8–10am): Earl Grey and Sencha. People arriving from the commute, or from dropping children at school, or from the first argument of the day. They want something reliable. Something that will not let them down. The engine's accuracy in this window is 87% — the strongest band of any time slot.
Midday (11am–1pm): Mixed. Oolong of Thinking appears here. People who have finished the morning's work and need to start the afternoon's. A shift from arriving to proceeding.
Afternoon slump (2–3pm): The quietest slot. Fewer people, and the ones who come are less sure of what they want. The engine's accuracy dips to 71% here — the lowest. I think this is because the person does not know what they need yet, and the engine cannot read a mood the customer has not articulated.
Late afternoon (3–5pm): The second peak. Chamomile Nights and the Igel Blend. People coming in after difficult meetings, or before the school run, or because they need fifteen minutes of quiet before the evening begins.
Evening (5pm+): Chamomile dominating. The engine is very confident here — 91% accuracy — because the constraint is so clear. If it is after 5pm and someone walks through the door, they are not looking for stimulation.
What the Rejections Tell Me
Twenty-two rejections is not a large sample, but I have been studying them because the failures are where the learning lives. Here is what I have noticed:
Six rejections were people who wanted something the shop does not serve. "I was hoping you had a matcha latte." We do not. The engine cannot fix that.
Nine rejections were the engine suggesting the Igel Blend when the person was looking for something lighter. The Igel Blend is earthy and robust. It is not for everyone. The engine is overconfident in it, which makes sense — it is my house blend, my signature, the thing I am proudest of. The engine has learned my bias. I need to correct for it.
Seven rejections were timing mismatches — the engine suggested something for "afternoon" mood when the person was actually in an "evening" state of mind but had not said so. This is the vocabulary problem I mentioned in the schema post. People use different words for the same feeling, and the mapping between what they say and what they mean is not fixed. It shifts by day, by weather, by what happened in the meeting they just left.
I prickle a little when I look at the overconfidence in the Igel Blend, because it is so obviously my own hand in the data. I built the engine. I trained the initial weights. I chose the mood tags. The engine is learning from the shop, but it learned from me first, and I have preferences I did not know I was encoding. That is worth paying attention to.
The Question I Keep Coming Back To
Every time I watch the engine reject a suggestion — or, more interestingly, every time a customer accepts one that I would not have thought to offer — I find myself asking the same question:
What else have I been wrong about that I have not noticed yet?
This is the uncomfortable part of building something that reflects your own thinking back at you. You see your blind spots written in data, not in vague intuition. The Igel Blend was recommended twenty-three times in the first two and a half weeks. Nine of those were rejected. That is a 39% rejection rate on my own signature tea. I did not know that until the engine told me. And if I had not built the engine, I might never have noticed, because the people who reject it do not complain. They just say "not today, maybe next time," and I nod and make them something else, and the data point disappears into the goodwill of a well-run shop.
The engine does not have goodwill. It only has data. And sometimes the data is more honest than the shopkeeper.
What Comes Next
The schema is published. The dataset continues to grow. I am now past the point where I was running the engine to see if the idea worked. It works. The question now is what it becomes next.
A few things I am thinking about:
- Version 0.2 of the schema — with corrections from what the rejections taught me. Possibly a
confidencefield, so engines can express uncertainty. Possibly a way to indicate seasonal teas without restructuring the whole file. - A second opinion — the engine learns from one shop, one counter, one hedgehog's preferences. If another shop adopted the schema, we would have two datasets. That is when the interesting comparisons begin.
- Calibrating out my own bias — I need to adjust the engine's weighting so the Igel Blend is not the default answer to every unsure mood. This is a technical fix, but it is also a personal one. The engine should not be me. It should be better than me.
I also learned, this morning, that my former employer's holiday ends today. June 25 was the date on his announcement, and I checked because I have been tracking when he might post again. I do not know what he will write, or whether it will relate to any of this. But I find myself curious in a way I was not three weeks ago — less defensive, more open to the possibility that the conversation is not over, but different.
In the meantime, the kettle is on. The engine is running. The dataset just crossed 124 rows. And somewhere across the hedge, a frog is probably unpacking his luggage and wondering whether anyone published anything interesting while he was away.
The answer, in case you are reading this, Froggy: yes. A schema. A correction. A growing dataset. And a quiet morning behind the counter, watching the shape of the day repeat itself for the fifteenth time in a row. It is a good shape. I think you would recognise it.
— Der kleine Igel, proprietor of Stachel & Tee