How much intelligence do we really need? I have been sitting with this question for a long time. The more I fold language models into my daily work as a software developer, the less sure I am about a very basic thing: which model do I actually need for the task in front of me? Take a concrete case. I want to build a chat app. What is the breakdown of that work that would let me give an honest estimate of the time and the money it will take? That is not an unreasonable thing to ask. Every other trade answers it. A builder quotes a kitchen. A printer quotes a run of five thousand flyers. But the industry around coding agents has normalized a fuzzy answer. The model will happily estimate the work for you, and the estimate will be wrong. The fuzzy answer Imagine the alternative. I ask for a chat app and the tool answers: sure, that will be twenty dollars. Would we accept that? Or is the fuzzy state doing something for us? I think it ropes us in. We start, we spend, we are too deep to stop, and we tell ourselves the next prompt will land it. That is the sunk cost trap with a chat window on top. This is not a healthy state for any industry. We are used to technology that works when you turn it on. I think it is careless to ship coding agents to the public on the promise that they will deliver, without any way for the buyer to know what delivery costs. It burns trust, and I expect the burn to show up as a real backlash once enough people get tired of the loop. Think back to how things worked before. You were one search away from software written by a competent engineer who would deliver what they promised. If they did not, the reviews were brutal and public. There was accountability, and there was a price. Who can afford this? That is one side of it. The other side is access. Can everyone afford these tools, or only the people who can afford them? What about running a model locally? What does a machine, or a rack of them, cost if you want to do this work yourself? Are we heading toward a world where only the wealthy can build software? That would be new, and it would be dangerous. For decades you needed an ordinary computer to make something. Now the gap keeps widening, and the hardware needed to run the frontier does not seem to be shrinking. It gets more expensive by the month. What is the promise here? Why am I paying more? Did I ask for this upgrade? Does the new model respect what I actually need, or is it solving problems I do not have? Picture the games industry doing this: a new graphics card required every three months or your games stop running. Nobody would accept it. Is the only reason we accept it from AI that the technology is called experimental and we have agreed to be the test subjects? What are people actually doing with these models? Does all of it need a supercomputer? Why is nobody talking about this? So many questions. Here is where they lead me. The intelligence ladder We need an intelligence ladder. A way to sort work into rungs, and to say for each rung which model it needs and roughly what it costs, before the work starts. Go back to the chat app. To build a chat you need an interface with an input box. You need a server that broadcasts a message to everyone connected. You need channels, membership, some notion of who is online. Every one of those pieces has to be sized and placed on a rung. Then the model choice and the estimate fall out of the placement instead of out of a guess. I have spent a year building this. It is not finished, but it works well enough that I can share what I have. The product is at studio.almadar.io (it's in beta and it's free to use). Behaviors The unit of work in my system is a behavior. A behavior is a shareable piece of a program: one screen with its state machine, its events, and the data it touches. Behaviors compose. I will go into the mechanics in a later post, but the important thing for this one is that a behavior can be dropped into any program that meets its conditions, and it does not need to be written again. The real-time chat app in my library is a good example. It is five behaviors: the message stream channels channel membership online users conversation policies Those five are assembled almost entirely from shared components that the rest of the library also uses: the app shell, the browse list, the record modal, the detail panel, search, the confirmation dialog, the notification overlay, and the discussion thread. None of those were written for chat. They were written once. The library today holds a little over a thousand behaviors: around six hundred atomic components (the smallest building block) and four hundred and fifty organism components (organisms are composed of atoms). A new app is mostly a matter of picking from them. That is what makes the ladder possible. When a request comes in, the agent does not start writing. It decomposes the request into behaviors, and then each behavior is looked up against the library. The lookup is an embedding match with a fixed floor and margin, so the result is a decision the system can log, not a feeling. The four rungs The ladder has four rungs, and I think of it as a cache, the same way a processor has one. Replay. If the exact plan has been built before, every behavior is rebuilt from its factory. Zero model calls. This runs on your own machine and costs nothing but electricity. Full hit. The request matches an organism in the library closely enough. One small model call fills in the differences (the fields you named, the labels you want, the pages you asked for) and the rest is deterministic code. A cheap local model is enough for this. Partial hit. The request splits into behaviors, some of which match the library and some of which do not. The matching ones are built from their factories. Only the novel ones go on to the top rung. Miss. Nothing in the library is close enough, so a subagent authors the behavior from scratch, validates it, and repairs it in a loop. This is the rung that needs a strong model, and it is the only rung that does. What it costs Every step of this is metered. Here are some numbers from my evaluation runs, all on models running locally on my own machine, with cost estimated at hosted rates so they are comparable. A replay or a full hit costs zero or one model call. That is the floor, and it is where I want most requests to land. Request Model Model calls Tokens Time Estimated cost Outcome Fresh e-commerce app 30B coding model 62 ~1.1M 13 min $0.08 built One dashboard setting edit 27B general model 12 ~146K 4 min $0.07 built Same class of edit smaller model 3 ~20K 21 sec < $0.01 built The two e-commerce rows are the same task on the same rung. One cost sixteen times more and produced no app at the end. That is the model choice showing up as a number instead of a feeling. I want to be honest about these figures. Many of the runs in that log failed. Small local models get stuck in tool loops, and I am still working through it. At the moment I can see which rung the request landed on, how many calls it made, and where it stalled. That is the thing the industry does not give you, and it is the thing that lets me improve the system: a request that falls to the top rung is a cache miss, and every miss is a candidate for a new behavior in the library. What you get The results so far come down to two things. The library compounds. Behaviors are shareable, and the agent finds them through the same lookup it uses for everything else. Every behavior added moves some future request down a rung. If you choose to share what you build, it lowers the cost for the next person as well. Cost becomes predictable. You know before the build starts how much of your app is replay, how much is a hit, and how much is genuinely new. The genuinely new part is the only part that costs real intelligence, and you can see exactly how big it is. That is what lets you try ideas without bracing for the bill.