I was tired of repeating myself

This did not start as a product. It started as an annoyance.

I would think of something in the car and say it out loud. That evening I would write about the same thing in an email, and start again from the beginning, because the assistant listening in the car and the assistant reading my mail had never met. Same person, same task, two strangers. Everything I had already explained, I explained again.

That is a small irritation the first time and an unpayable tax by the hundredth.

So the first thing I wanted was narrow. One assistant that does not care how you reach it. Start out loud, pick it up by email, finish in a messenger or a browser.

Continuing the conversation is not the point

If that were all, it would be a nicer chatbot. A chatbot that remembers you across apps is still a chatbot, and I already had enough of those. I had already built the memory part, semantic search over everything the agents write down, and on its own it only made the conversation better.

What I actually wanted was for the conversation to turn into work.

So not one assistant. Several, with different jobs, the way a small office has different jobs. One takes the mail that comes in. One keeps the documents. One does the twenty minute task that nobody wants to sit and watch. And they hand things to each other, because that is what people with different jobs do all day. I wrote about that crew while it was still taking shape.

Once you say that out loud, the interesting question changes. It stops being how clever any single assistant is. It becomes: what stops a group of them from turning into a mess.

The answer is boring, and it is the whole design

They all stand on the same ground.

One planner, so a piece of work is a task with an owner and a state, instead of a promise buried in a chat window. One document system, so what they decide gets written where the others can read it. One file system, so a file is a file and not an attachment somebody has to go and find again.

That is the part that turns talking into working. Anything that arrives, by voice or by mail or through a browser, lands in the same place and becomes the same kind of thing. Which is also why the channel stops mattering: it is a way in, not a container.

And because it all lands in one place, I can look at it. Not trust it, look at it. What was asked, who picked it up, what came out the other side.

And that place is a machine I own. This is not a service I log into, and nothing leaves the box except the model calls I choose to make.

Some months later, this is what that turned into

One message walking through it. Everything inside the dashed line sits on the machine. The single arrow with colour on it is the model call leaving, and that is the only thing that goes anywhere.

If you want the machinery, it is a page of its own: the ways in, the services, what is stored where. It is all written down at smart-node.app/docs/architecture.

What it looks like when it works

I get the plan by email, decomposed. I approve it in a word. It splits into tasks inside the system, they go to whoever the work belongs to, and each marks its own state in the planner as it goes. Nobody improvises the order: they follow a workflow that was agreed before any of this started. Later I ask out loud where it is. That evening a message tells me it is done.

I did not route any of that.

What is deliberately not the point

How many assistants there are. What they are called. Which departments they form. What each of them is allowed to touch.

All of that changes from one business to the next, and again a month later when somebody reorganises. If the design only worked for one arrangement of it, the design would be wrong. What stays the same is underneath: the ways in, the single place everything lands, the ground they all stand on. That is the part I built. The rest is settings.

The part I did not expect

You stop carrying the list around in your head.

I did not build this for that. I built it because I was annoyed at explaining myself twice. But when every half formed thought has somewhere to land, and the landing place is the same one where the work actually happens, you quietly stop holding on to it. The idea in the car is not something to remember until evening. It is already a task, with someone on it.

That turned out to be the real change, and I am still working out what to make of it.

So, a question

Not "would you use this". Something more specific.

Where does your own list actually live right now? Not the app you picked, the real place. The half thought you said out loud and then typed again an hour later. The thing you explained twice today to two different tools. I want to know where it leaks, because that is the part worth building for.

enjoyed this?

Follow me for more on AI agents, dev tools, and building with LLMs.

X / Twitter LinkedIn GitHub
← Back to blog