I Was Mad At My Butler. I'd Given Him a Cheap Brain.
For a year I thought my assistant was dim. It was a config line. The complaint was real and the diagnosis was wrong the entire time.
For about a year I have had a bot named Jeeves living in my phone.
He runs on a Mac in my house in Florida and talks to me over Telegram. He knows my calendar, my mail, my reminders, my donor records at work. He can search my files. He has a real toolkit, better than most people would guess for a one person operation. And for a year, quietly, I have been disappointed in him.
Not angry. Disappointed. He would tell me about a meeting that did not exist. He would say he had saved a file and the file would be nowhere. He would give me times that were four hours off. Ask him something on Tuesday that you told him on Monday and he would have no memory of Monday at all. I kept patching around it. I wrote longer instructions. I added rules to his prompt telling him not to invent calendar events, because he had invented calendar events. The prompt got long the way a house gets cluttered, one reasonable decision at a time.
Meanwhile I was using frontier models all day for everything else, and the gap kept widening. I would have a sharp, useful, almost eerie conversation on my laptop, then text Jeeves and get something that felt like it came from a different decade. I assumed that was the cost of running your own thing. Homemade is homemade. You give up polish for control.
Last week I finally sat down and asked a simple question I had somehow never asked. What model is he actually running?
gpt-4o-mini
That is the answer. A budget model. A small, fast, cheap one, priced to run at scale for pennies, built for classification and simple extraction. Not the reasoning tier. Not close.
It was pinned in two places, which is why it survived so long. Once as the default inside the bot code, and once again as an environment variable in the file that launches him every morning. Belt and suspenders, both holding up the wrong trousers.
Then I found the part that actually made me laugh out loud. Sitting in the same folder was a backup file dated June 10 with a name that told the whole story: a sonnet upgrade. Two months ago, some version of me started to fix exactly this. Made the change, saved a backup, and then, for reasons lost to whatever else was on fire that day, never shipped it. The fix had been sitting on the disk the entire time I was writing longer prompts to compensate for the problem the fix would have solved.
So here is the shape of a year of my life. I had a complaint that was completely real. My assistant genuinely was making things up, losing the thread, getting times wrong. Every symptom I logged was accurate. And my diagnosis was wrong from the first day, because I was blaming the assistant for a decision I had made about the assistant, in a config file, and then forgotten.
What was actually broken, in order
The audit turned up more than the model, and the order matters, because the model was not the only thing but it was the thing under everything else.
His memory was a variable in a running program. Not a file. Not a database. A variable. Which means every time the process restarted, he forgot everything. And he restarted often, because the code was written to restart itself after a few connection errors. So he was not forgetting because of some deep limitation of the technology. He was forgetting because his notebook was made of the same stuff as his short term memory, and both got wiped by the same event.
His conversation had a hard cap at twenty turns. He could take at most six steps to accomplish anything before giving up. He was single threaded, which is a technical way of saying if one slow task hung, he stopped answering the door entirely.
And the fix that had been applied to the underlying platform, when its memory ballooned past what it could hold, was a nightly job that archives the session and restarts everything. Read that again. The solution to remembering too much was scheduled amnesia.
None of that is the technology failing. All of it is architecture I chose or inherited and never revisited, because from the outside it all looked like the same symptom. The bot is dumb. The bot is dumb is not a diagnosis. It is a feeling.
The uncomfortable part
Here is what has been sitting with me all week.
There are millions of people right now forming a permanent opinion about what AI is and is not good at. Almost none of them know which model they are actually talking to. They know a product name. Behind that product name is a routing decision, a cost tier, a context limit, a system prompt someone wrote, a memory design, and a set of tools that may or may not exist. Any one of those can make a genuinely capable model look like a toy.
I do this for a living, more or less. I build these systems on nights and weekends and run one at work. And I spent a year mad at a butler when I should have been reading a config file. If it got me, it is getting almost everybody.
So the transferable lesson is not really about models. It is this. When a system disappoints you over and over in the same way, at some point the repetition itself is the evidence. Not that the thing is bad, but that something upstream is fixed in place. A consistent failure is almost never a mysterious one. It is a setting.
What I did about it
Jeeves is not getting fired, and I want to be clear about why, because it would be easy to tell this story as a replacement story and that is not what happened.
Once I stopped judging him on conversation, I could see what he was genuinely excellent at. Every morning he sends me a news desk digest, markets and football and the specific niches I care about, pulled from feeds, formatted clean. He pushes alerts when something needs me. He runs a delivery queue that keeps working even when the rest of the system is down, because it requires no intelligence at all, only reliability. He has been doing that job flawlessly the entire time I was frustrated with him.
So Jeeves is retiring into the job he was always good at. He broadcasts. That is a real job and he is the best I have at it.
The conversation moves to somebody new. There is a Mac mini arriving Monday that will sit in Florida and never sleep, and it will run a butler named Carson. Carson gets the frontier model, the actual reasoning tier. He gets memory that lives in files instead of in a running process, so a restart costs him nothing. He gets the same knowledge base I read from, the notes and runbooks and profiles, so he can look things up instead of guessing. And he gets real tools, the same ones I use, rather than a hand rolled loop with a six step ceiling.
Longtime readers will notice Carson already appeared here. Two notes ago he was a Raspberry Pi alert bot that sent one test message and went quiet. He is getting promoted.
I do not think Carson will be perfect. I think he will be roughly as good as the parts I give him, which is the entire point.
The model was cheap. The mistake was free. The year was not.
MG
Go check yours.
If you run an assistant of any kind, open the config and read the model name out loud. It takes a minute. You may be arguing with a setting.
For the engineers.
Underneath the story is the actual audit: where the model was pinned in two places, why a variable is not a memory, the turn and step caps, and what changed when Carson took over. I wrote it up as a companion piece. Architecture only, nothing personal.
New notes land first in the weekly letter.
You're in. Next note lands Friday. ✦