<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chris Parsons</title>
    <description>I help leaders cut through the hype and leverage AI to transform their teams and dodge the chaotic hype that wastes time and money.
</description>
    <link>https://www.chrismdp.com/</link>
    <atom:link href="https://www.chrismdp.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 09 Oct 2026 21:07:12 +0100</pubDate>
    <lastBuildDate>Fri, 09 Oct 2026 21:07:12 +0100</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      
      
      
      <item>
        <title>Webinar: AI Can Do (Most Of) Your Work</title>
        <description>&lt;p&gt;On 8 October 2026, I gave a webinar about which parts of your work to hand to AI. AI can now take a decent crack at almost anything you give it. In March I showed how I &lt;a href=&quot;/webinar-let-ai-do-your-work/&quot;&gt;gave it all my context so it could&lt;/a&gt;. Since then I have learned that the harder question is which work is still yours.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;one-ai-that-knew-everything&quot;&gt;One AI that knew everything&lt;/h2&gt;

&lt;p&gt;I run most of my business with AI. I had built up about 70 skills, nearly all working over one vault: every note, meeting transcript, saved article and client note, synced across my laptop, phone and a server. It was a thing of beauty.&lt;/p&gt;

&lt;p&gt;So I asked it for everything. Client positioning, proposal wording, what to prioritise this week. It seemed to know my situation better than I did, and it never got lazy. What came back was plausible, and average. I read every draft, winced, and rewrote it. I had become a mindless human with a big rubber approval stamp, stamping out mediocre blog posts.&lt;/p&gt;

&lt;p&gt;The thinking I had handed over was the work I am paid for, and the work I enjoy. AI is built to converge on an answer, and good strategy needs you to diverge first. One AI that sees everything is also a security risk, and blends client and personal signals into mush. I wrote about this in &lt;a href=&quot;/i-dont-want-an-ai-god/&quot;&gt;I Don’t Want an AI God&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/automated-everything-except-knowing-what-i-want.jpg&quot; alt=&quot;Comic: a man with his head in his hands, buried in stacks of AI-generated text, one pile labelled efficiency optimised. Caption: I&apos;ve automated everything except the part where I know what I want.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We trust fluent writing, even when it is wrong, and the latest models write very fluently. Addy Osmani calls it cognitive surrender: the moment you stop forming your own answer.&lt;sup id=&quot;fnref:osmani&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:osmani&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-stays-with-you&quot;&gt;What stays with you&lt;/h2&gt;

&lt;p&gt;Tara Seshan, who leads product for Codex and ChatGPT Work at OpenAI, names three things that stay with us: relationship and connection, expression, and accountability.&lt;sup id=&quot;fnref:seshan&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:seshan&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship and connection.&lt;/strong&gt; My friend Hywel Carver has a good test: would you be comfortable telling the other person you used AI? Getting help appealing a parking fine is fine. A letter to your mum while she is in hospital is not. I use AI for quick “thanks, I would love to set up a call” replies all the time, but I always tweak them and I never let it send for me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expression.&lt;/strong&gt; Some writing just carries information, such as a policy turned into a handbook. If the ideas are already formed, let AI write it. Other writing is your personal creative expression: your art, your personality on the page. That has to come from you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accountability.&lt;/strong&gt; Sophie Alpert’s AI writing policy at Clay says to stand behind every line.&lt;sup id=&quot;fnref:clay&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:clay&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; “AI wrote that, just ignore it” is not an answer. If you could not be bothered to write it, why should anyone bother to read it?&lt;/p&gt;

&lt;p&gt;Tobias Lütke calls unchecked AI text a slop grenade.&lt;sup id=&quot;fnref:grenades&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:grenades&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; One mistranscribed name in a meeting transcript gets picked up by other agents and spread across a whole organisation. So every transcript now goes first to an agent that checks it against my vault and asks me about anything odd, before other agents see it.&lt;/p&gt;

&lt;h2 id=&quot;goal-effort-check&quot;&gt;Goal, effort, check&lt;/h2&gt;

&lt;p&gt;Everything else I hand over, and it no longer takes clever prompts. Boris Cherny, who created Claude Code, said this week that prompts mattered a lot in the Sonnet 3.5 days. Now you tell the model what you want, how much effort to spend, and how it should check it did the right thing.&lt;sup id=&quot;fnref:cherny&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:cherny&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The goal is the hard part, because often I do not know what I want yet. So I dictate, ramble, and ask the AI to question me one question at a time and keep its own view to itself. I want to work out what I think first.&lt;/p&gt;

&lt;p&gt;This webinar is an example. At 9:30 that morning none of the slides existed. The AI pulled my notes from the vault and questioned me, then produced an outline. The flow was wrong, so I wrote the outline myself. The AI replied “that’s so much better than what I had” and rebuilt everything around it. Too right!&lt;/p&gt;

&lt;p&gt;Then I give feedback on something I can see. My slides have a little review box where I comment on any slide, and the AI fixes everything in one go. You do not need my slide system. Claude artifacts and Codex sites make throwaway review pages in minutes, and they beat going back and forth in a chat box.&lt;/p&gt;

&lt;h2 id=&quot;writing&quot;&gt;Writing&lt;/h2&gt;

&lt;p&gt;For about six thousand years, writing was proof of thinking. That stopped being true a couple of years ago. AI is brilliant at turning thoughts from one form into another, so it will happily turn a couple of thoughts into a whole blog post that still contains only a couple of thoughts.&lt;/p&gt;

&lt;p&gt;One attendee asked: if your couple of thoughts are so easy to expand, did we need you to have them in the first place? Probably not. That post should have been a two-line LinkedIn post, or it needed more thinking.&lt;/p&gt;

&lt;p&gt;So now the AI pulls up what I already know, and I write the argument myself. My first drafts are terrible. I do not enjoy it, but that is where the value gets added. Then AI tidies the structure, adds references, checks facts and points out holes in the argument. &lt;a href=&quot;/writing-with-ai/&quot;&gt;(I Think Whilst) Writing With AI&lt;/a&gt; walks through the whole process.&lt;/p&gt;

&lt;h2 id=&quot;coding&quot;&gt;Coding&lt;/h2&gt;

&lt;p&gt;I delegate most of my coding now. I talk to one coordinator about what we are building, and it hands bounded jobs to worker agents and reviews what comes back.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/coordinator-agent-delegating-to-worker-agents.jpg&quot; alt=&quot;Diagram: Chris chats to one larger robot labelled coordinator. It sends jobs out to three smaller robots labelled worker, each at its own bench, and they hand finished boxes back for the coordinator to check with a magnifying glass labelled review.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My rule is to ask who will look at the result. If a test can check it, I delegate the whole thing. If a person has to see it, I build it interactively, often in a Claude artifact where I can comment on the screen.&lt;/p&gt;

&lt;p&gt;One attendee asked about AI making huge “god objects” and five-thousand-line files. It happens. Good rules help, so does using only the latest models, and so does getting an AI to review the code adversarially. I care about the data model, the security model, overlapping abstractions and duplicated state, because they breed bugs, and about test coverage. I care much less about method length, or even which language it is in, because AI does the reading and writing.&lt;/p&gt;

&lt;p&gt;When a game I was writing had a strange bug, I had the AI draw me the whole map instead of reading the code, and spotted which scenes were broken. &lt;a href=&quot;/coding-with-ai/&quot;&gt;(I Am No Longer) Coding With AI&lt;/a&gt; has more.&lt;/p&gt;

&lt;p&gt;This is exhausting. I now spend the day on high-level judgement, across three or four projects where I used to run one. Another attendee explained why: AI does the fast System 1 work, so what is left for me is all slow, effortful System 2 thinking.&lt;/p&gt;

&lt;h2 id=&quot;a-team-not-a-god&quot;&gt;A team, not a god&lt;/h2&gt;

&lt;p&gt;For repeatable jobs, I have moved from one big AI to a team of small agents, each with one job. I have run them in Telegram for months, and I am now rebuilding them in Slack as &lt;a href=&quot;https://27agents.ai/&quot;&gt;27agents&lt;/a&gt;. Em triages email, Miriam is a productivity coach, and Paolo is a product associate who also gets the code done. Each has a small remit, so you know what it can reach and how much damage a conversation can do.&lt;/p&gt;

&lt;p&gt;The big players are reaching the same idea from different directions:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;OpenAI dots&lt;/strong&gt; gives you one primary dot that does everything. Single-job specialist dots exist only in enterprise pilots that OpenAI’s engineers set up with the customer.&lt;sup id=&quot;fnref:dots&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:dots&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Grok Bot&lt;/strong&gt; gives you a team of bots, but they all share one computer, and xAI says separate bots are not separate security boundaries.&lt;sup id=&quot;fnref:grokbot&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:grokbot&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Claude Tag&lt;/strong&gt; puts Claude into Slack, and the channel decides which systems and data it can reach.&lt;sup id=&quot;fnref:tag&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:tag&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Shopify’s River&lt;/strong&gt; is a Slack agent that only works in public channels and now co-authors one in eight merged pull requests.&lt;sup id=&quot;fnref:river&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:river&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these still leave you to work out what to ask and how to set up each bot. Shopify has a platform team do that for everyone, and so does 27agents.&lt;/p&gt;

&lt;h2 id=&quot;a-motor-on-each-machine&quot;&gt;A motor on each machine&lt;/h2&gt;

&lt;p&gt;Right now AI feels like the early days of electricity, with everyone wiring up their own generators and batteries at their desks.&lt;/p&gt;

&lt;div style=&quot;width: 80%; display: block; margin: 2rem auto;&quot;&gt;&lt;a href=&quot;/comics/the-ai-champion/&quot;&gt;&lt;img src=&quot;/assets/comics/the-ai-champion.jpg&quot; alt=&quot;Comic: Debbie, the AI champion, wrestles a sparking tower of home-made generators and cables wired into a computer while a colleague asks her to format some figures. Caption: Debbie felt it might be time to call some engineers.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Paul David’s “The Dynamo and the Computer” shows that factories which put one big electric motor where the steam engine had stood gained very little.&lt;sup id=&quot;fnref:david&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:david&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt; They kept the same shafts and belts. The gains came in the 1920s, about forty years after the first power stations, when factories put a small motor on each machine and rearranged the floor around the work.&lt;/p&gt;

&lt;p&gt;One big motor driving everything is the AI god. A motor on each machine is the team of single-job agents.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/one-big-motor-ai-god-vs-motor-on-each-machine-ai-team.jpg&quot; alt=&quot;Two panels. One big motor: a factory where a single huge electric motor drives a shaft and belts to every machine, tagged the AI god. A motor on each machine: the factory rearranged with a small motor on every machine and work flowing in a line, tagged the AI team.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Electricity won when nobody thought about it any more. AI will get there the same way: small jobs, wired into the tools people already use, with a few specialists doing the wiring so everyone else does not have to.&lt;/p&gt;

&lt;h2 id=&quot;questions-from-attendees&quot;&gt;Questions from attendees&lt;/h2&gt;

&lt;p&gt;One attendee asked how this works across a whole enterprise, and whether bots can be limited to certain jobs. They can. Copilot and Claude both have plenty of permission settings. Lock things down too far and you get generic answers, because the AI cannot see your data. Lock down too little and it runs riot.&lt;/p&gt;

&lt;p&gt;Another asked how junior staff can reflect as carefully as seniors. Juniors cannot yet spot average output. AI raises their work to average, then hits a ceiling. They learn fastest working alongside a senior who points out the slop, until they develop a healthy slop allergy of their own.&lt;/p&gt;

&lt;p&gt;Two more great suggestions came from the chat. Teach juniors, and children, to use AI to ask them questions rather than to give answers. And courses in systems thinking and critical thinking help. I have gone back to writing 750 words every morning for exactly that reason.&lt;/p&gt;

&lt;h2 id=&quot;key-takeaway-to-remember&quot;&gt;Key takeaway to remember&lt;/h2&gt;

&lt;p&gt;AI can do most of your work, but one AI that does all of it makes your work average and less safe. Keep relationship, expression and accountability for yourself. Hand the rest to small agents with one job each, and spend the time you get back thinking.&lt;/p&gt;

&lt;h2 id=&quot;one-thing-to-try-this-week&quot;&gt;One thing to try this week&lt;/h2&gt;

&lt;p&gt;Take a week of your work and sort each task into three piles. Information: reports, summaries, admin. Ideas you have already formed that just need writing up. And you: relationships, original thinking, anything you have to stand behind. Hand over the first pile, let AI help with the second, and keep the last for yourself.&lt;/p&gt;

&lt;h2 id=&quot;tools-and-resources&quot;&gt;Tools and resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/talks/ai-can-do-most-of-your-work/&quot;&gt;The slides from this webinar&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/i-dont-want-an-ai-god/&quot;&gt;I Don’t Want an AI God&lt;/a&gt;, on why one assistant with access to everything goes wrong&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/writing-with-ai/&quot;&gt;(I Think Whilst) Writing With AI&lt;/a&gt;, my full writing process&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/coding-with-ai/&quot;&gt;(I Am No Longer) Coding With AI&lt;/a&gt;, how I delegate code&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://27agents.ai/&quot;&gt;27agents&lt;/a&gt;, the team of single-job agents I am building&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:osmani&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Addy Osmani, &lt;a href=&quot;https://addyosmani.com/blog/cognitive-surrender/&quot; target=&quot;_blank&quot;&gt;Cognitive Surrender&lt;/a&gt;. &lt;a href=&quot;#fnref:osmani&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:seshan&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tara Seshan on Lenny’s Podcast: &lt;a href=&quot;https://www.lennysnewsletter.com/p/ais-third-era-the-rise-of-persistent&quot; target=&quot;_blank&quot;&gt;AI’s third era: the rise of persistent AI coworkers&lt;/a&gt;. &lt;a href=&quot;#fnref:seshan&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:clay&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Sophie Alpert, &lt;a href=&quot;https://www.clay.com/blog/ai-writing-policy&quot; target=&quot;_blank&quot;&gt;Clay’s AI writing policy&lt;/a&gt;, 19 August 2026. &lt;a href=&quot;#fnref:clay&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:grenades&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tobias Lütke on &lt;em&gt;The Knowledge Project&lt;/em&gt; podcast, as reported by Fortune: &lt;a href=&quot;https://fortune.com/2026/09/17/shopify-tobias-lutke-ai-slop-grenades/&quot; target=&quot;_blank&quot;&gt;Shopify CEO says employees’ ‘slop grenades’ are making more work for everyone else&lt;/a&gt;. &lt;a href=&quot;#fnref:grenades&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:cherny&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Boris Cherny on X, &lt;a href=&quot;https://x.com/bcherny/status/2107565388250874193&quot; target=&quot;_blank&quot;&gt;6 October 2026&lt;/a&gt;. &lt;a href=&quot;#fnref:cherny&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:dots&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;OpenAI, &lt;a href=&quot;https://openai.com/index/introducing-dots/&quot; target=&quot;_blank&quot;&gt;Introducing dots&lt;/a&gt;. &lt;a href=&quot;#fnref:dots&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:grokbot&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;SpaceXAI, &lt;a href=&quot;https://docs.x.ai/grok-bot/overview&quot; target=&quot;_blank&quot;&gt;Grok Bot overview&lt;/a&gt;. &lt;a href=&quot;#fnref:grokbot&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:tag&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Anthropic’s &lt;a href=&quot;https://x.com/claudeai/status/2069468693017268244&quot; target=&quot;_blank&quot;&gt;Claude Tag announcement&lt;/a&gt;, 23 June 2026. &lt;a href=&quot;#fnref:tag&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:river&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Shopify Engineering, &lt;a href=&quot;https://shopify.engineering/under-the-river&quot; target=&quot;_blank&quot;&gt;Under the River&lt;/a&gt;, 2026. &lt;a href=&quot;#fnref:river&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:david&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Paul A. David, &lt;a href=&quot;https://gwern.net/doc/economics/automation/1990-david.pdf&quot; target=&quot;_blank&quot;&gt;The Dynamo and the Computer: An Historical Perspective on the Modern Productivity Paradox&lt;/a&gt;, &lt;em&gt;American Economic Review&lt;/em&gt;, 1990. &lt;a href=&quot;#fnref:david&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 08 Oct 2026 14:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/webinar-ai-can-do-most-of-your-work/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/webinar-ai-can-do-most-of-your-work/</guid>
        
        
        <category>ai</category>
        
        <category>webinar</category>
        
        <category>agents</category>
        
        <category>productivity</category>
        
      </item>
    
      
      
      
      <item>
        <title>(I Think Whilst) Writing With AI</title>
        <description>&lt;p&gt;For thousands of years we have treated writing as proof of thinking. You could not produce a fluent, well-argued piece without doing some thinking along the way. That is no longer true.&lt;/p&gt;

&lt;p&gt;Large language models (LLMs), the engines underneath most AI agents, are born to write. Writing is how they reason about the problems we give them, and it is how they talk back to us. Fluent words now cost almost nothing, and we have to build a new mental model of writing: words do not mean thought.&lt;/p&gt;

&lt;p&gt;When people use thought-free output verbatim, the result is slop. LinkedIn shows the problem well: since ChatGPT launched, the average long LinkedIn post has more than doubled in length.&lt;sup id=&quot;fnref:linkedin&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:linkedin&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; I very much doubt the thinking inside those posts has doubled too. Worse, slop does not just sit there. People read half-formed, average ideas, copy them into their own notes and repeat them, and the research suggests that AI editing shifts what people conclude, not just how they phrase it.&lt;sup id=&quot;fnref:homogenise&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:homogenise&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Ideas get diluted and proper thought gets stifled, &lt;a href=&quot;/ai-slop-is-real-model-collapse-isnt/&quot;&gt;the vicious cycle I wrote about last year&lt;/a&gt;. Shopify’s CEO Tobias Lütke has a name for the workplace version, slop grenades: AI-generated emails and code that people toss at each other without reading or understanding them.&lt;sup id=&quot;fnref:grenades&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:grenades&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; The author saves time, and their colleague has to do the thinking instead.&lt;/p&gt;

&lt;p&gt;How do we get out of this mess? By remembering that writing was never just about producing words. The words are the output. The thinking we do while we write is what matters, and readers can tell when it is missing. This article is about how I use AI to write, and how I try to let it speed me up without skipping the part that adds value.&lt;sup id=&quot;fnref:authorship&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:authorship&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;div style=&quot;width: 70%; display: block; margin: 2rem auto;&quot;&gt;&lt;a href=&quot;/comics/debbie-appraisal/&quot;&gt;&lt;img src=&quot;/assets/comics/debbie-appraisal.jpg&quot; alt=&quot;In a performance review, Laura stares into space while offering Debbie a hollow appraisal about the impact of her journey. Debbie considers prompting Laura for a raise.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2 id=&quot;writing-is-where-thinking-happens&quot;&gt;Writing Is Where Thinking Happens&lt;/h2&gt;

&lt;p&gt;Some writing is slow and painful. It is the forging and fusing of our thoughts with the words that appear in front of us. It takes honing, editing, and ruthless cutting down to the most succinct version of what we think. The product is a polished set of thoughts that adds something to a debate. Tara Seshan, who leads product for Codex and ChatGPT Work at OpenAI, calls this writing to think, as opposed to writing to report.&lt;sup id=&quot;fnref:seshan&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:seshan&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; When you write to think, the writing is where your position gets formed. When you write to report, you are converting thoughts that already exist from one form into another, such as code into documentation, or a set of ideas into a LinkedIn post.&lt;/p&gt;

&lt;p&gt;AI is brilliant at converting thoughts and very bad at coming up with original ones. The danger is that it converts so well that you do not notice the original thinking has been skipped.&lt;/p&gt;

&lt;p&gt;I have a confession about this. I caught myself doing exactly this in my early days of writing with AI, because I had not really thought through the difference. I would dictate a stream of consciousness, let the AI polish it up, and send it. But a stream of consciousness is not a well-formed thought. What came back was 90 percent good enough, but it was not any good, because it was not my formed thoughts. Some of my earlier articles are scattershot and do not always hang together. They were first drafts, polished and tidied to look like more than that (I have since cleaned up a lot of them on this site, but you might still find some if you look hard enough!) Polished unformed thoughts are the worst kind of writing, because the polish hides the gap from the reader and from you.&lt;/p&gt;

&lt;p&gt;This is also why slop feels so empty to read. We are wired for story and meaningful connection, and the content people share most is the content that makes them feel something.&lt;sup id=&quot;fnref:berger&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:berger&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; When we read, we feel connected to the writer’s inner world, and we process our own thoughts alongside theirs. If we sense that an AI was involved to the point that the words are no longer the author’s creation, we feel flat and hollow, as if there was nobody on the other end.&lt;/p&gt;

&lt;h2 id=&quot;when-ai-should-write-it&quot;&gt;When AI Should Write It&lt;/h2&gt;

&lt;p&gt;This does not apply to all writing. A letter to the council complaining about a parking fine is very different to a quarterly strategy.&lt;sup id=&quot;fnref:economist&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:economist&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;strong&gt;What matters is what the writing is supposed to carry, and whether that part has to come from you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some writing only carries information. Translating a document, turning code into documentation, or reshaping a company policy into a handbook all move meaning from one form to another. That is barely writing at all, in the same way that heating something up is not really cooking.&lt;sup id=&quot;fnref:cherrypick&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:cherrypick&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; If no original thought happens in the process, it is a waste of time not to use AI.&lt;/p&gt;

&lt;p&gt;Some writing carries ideas you have already formed. I write a lot of posts on LinkedIn, and I do not mind AI helping turn a set of ideas I have already thought through into another format. The infographics I make for my posts are the same: they convert an argument I have already written into a picture, so I am happy for AI to draw them. Comics are a bit different. A good comic makes a joke or lands a point in a single frame, and getting that right is thinking in its own right. I often go through fifteen rounds of revision before one works, and I keep the whole provenance chain for each one: every prompt, every rejected draft and every correction I made along the way.&lt;/p&gt;

&lt;p&gt;That does not change the fact that there is a huge amount of slop on LinkedIn. The slop is created too quickly by people who haven’t thought through what they’re saying. I do not care who wrote the words, but content built on ideas people have not come up with themselves adds nothing. It is just noise. The same goes for comments. Automated commenters are farming engagement, and they produce the worst kind of slop.&lt;/p&gt;

&lt;p&gt;Some writing carries you. Creative writing that weaves story or meaning is an expression of self, so you need to have thought through the content and stand behind the meaning and intent of every word. Writing to build a relationship goes further still. If I am trying to connect with someone, or tell them how I feel, there is no place for an LLM in forming those thoughts. There is a big difference between a quick follow-up to schedule a call and a letter written from a place of deep feeling. I have no problem with AI doing the first. Using it for the second tells the other person I do not care about them. There is also a difference between using AI to send cold emails at scale and sending a thoughtful note about something that made you feel a connection with someone. That second note is not logistics. You are trying to build a personal connection, so write it carefully. At the very least, let the AI give you the bones and edit them until they are really yours. My friend Hywel Carver has a good test for this: would you be comfortable telling the other person you used AI? If not, that discomfort is your empathy talking, and you should probably write it yourself.&lt;/p&gt;

&lt;h2 id=&quot;how-i-write-now&quot;&gt;How I Write Now&lt;/h2&gt;

&lt;p&gt;What I care about is whether people did the thinking, and whether they meant it when they claim to be expressing themselves or connecting with me. So when a piece needs real thought, or someone is paying me to think through a problem, I make sure I go through that process myself.&lt;/p&gt;

&lt;p&gt;I start by asking an AI to pull up everything I already know about the topic. I keep my notes, meeting transcripts and saved articles in &lt;a href=&quot;/build-an-ai-knowledge-base-from-scratch/&quot;&gt;a folder my AI can read&lt;/a&gt;, so it can find what I said in a meeting three weeks ago, or the voice note I recorded after listening to a podcast. It gives me that back as bullet points. I had been collecting thoughts for this post for a few months, so it surfaced meeting notes, voice notes arguing both sides of the question, and articles I had saved along the way.&lt;/p&gt;

&lt;p&gt;Then I hold as much of that in my head as I can, and write the argument myself, either typed or dictated. When I do want help with structure, I ask for an outline rather than a draft. Something like: “From this, give me a structure. Do not write the prose. List the argument, the open questions, and what is missing.” Then I write it up myself. Doing a comic first is a useful forcing function. My comics tend to be good precisely because coming up with the premise forces me to decide what I actually think.&lt;/p&gt;

&lt;p&gt;The thinking does not always have to happen at the keyboard. Sometimes it happens in conversation. If I have already worked through a set of changes with someone on a call, I am happy for an AI to apply them from the transcript. Making all those edits by hand is only worth it if I want to think them through again.&lt;/p&gt;

&lt;p&gt;Once I have a draft, I refine using an AI. I ask the AI what it thinks my argument is. On the first draft of this post, it told me the title promised one argument and the body made another, and that my best paragraph was buried at the bottom of a list, and it was right, so I rewrote the structure and only then did I let it help tidy the prose. I fact check and chat to the AI about various sections or things that feel “off”.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/comics/human-in-the-loop-department/&quot;&gt;&lt;img src=&quot;/assets/comics/human-in-the-loop-department.jpg&quot; alt=&quot;A Human-in-the-Loop Department where three exhausted staff sit at a desk with two big buttons. One presses YES while the NO button is covered in cobwebs. Caption: When the job title said rapid decision making, this was not what Richard had in mind. Checking every line only counts if you are willing to press no.&quot; style=&quot;width: 45%; float: right; margin: 0 0 1rem 1.5rem;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I read every line and ask myself whether I stand behind it. Some writers go further than this. Thomas Ptacek will not use a single word an LLM suggests, because the phrasing carries a style you can smell.&lt;sup id=&quot;fnref:ptacek&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ptacek&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt; I can see the appeal, and it is a reasonable rule if you want it. My line is looser: the ideas, the evidence and the judgement have to be mine, and I need to recognise the meaning of every sentence.&lt;/p&gt;

&lt;h2 id=&quot;keep-the-receipts&quot;&gt;Keep the Receipts&lt;/h2&gt;

&lt;p&gt;There is a legal reason to do the thinking yourself, too. Copyright law protects human authorship, and it is not yet clear how much of an AI-assisted piece counts. The US Copyright Office says prompts alone will generally not make you the author, but your own selection, arrangement and editing of the output can be protected.&lt;sup id=&quot;fnref:uscopyright&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:uscopyright&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt; In the UK, the law has a rule for computer-generated works that predates generative AI and has never been properly tested on it.&lt;sup id=&quot;fnref:ukcopyright&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ukcopyright&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;11&lt;/a&gt;&lt;/sup&gt; If the machine did all the creative work, you may not own the result in any meaningful way.&lt;/p&gt;

&lt;p&gt;That is why I keep provenance records for my comics and infographics. The record is not a guarantee of copyright, but it is evidence of what I contributed: the idea, the choices, the corrections and the drafts I threw away. The same logic applies to writing. If your first draft, your outline and your edits are your own, you can show where your thinking went in. If all you have is a prompt and a polished output, you cannot. (This is practical information, not legal advice.)&lt;/p&gt;

&lt;h2 id=&quot;stand-behind-every-line&quot;&gt;Stand Behind Every Line&lt;/h2&gt;

&lt;p&gt;Companies are starting to write these policies down. The best AI writing policy I have seen is Clay’s, written by Sophie Alpert.&lt;sup id=&quot;fnref:clay&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:clay&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;12&lt;/a&gt;&lt;/sup&gt; It has four principles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You must stand behind every idea and every sentence in your docs&lt;/strong&gt;, and “AI wrote that, just ignore it” is not an acceptable answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Writing is thinking&lt;/strong&gt;, so outsourcing it to skip the thinking defeats the point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More time should be spent writing a document than reading it&lt;/strong&gt;, because one author’s effort saves time for many readers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Longer is not better.&lt;/strong&gt; You have probably heard that Blaise Pascal once apologised for a long letter because he had not had time to write a shorter one.&lt;sup id=&quot;fnref:pascal&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:pascal&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;13&lt;/a&gt;&lt;/sup&gt; AI writes the longest version of all, in the quickest time.&lt;/p&gt;

&lt;p&gt;The policy even allows quoting AI directly, as long as you say so: “Claude suggested this, what do you think?” is honest and useful.&lt;/p&gt;

&lt;p&gt;I would add one thing from my own experience: develop a slop allergy. People who are new to AI often cannot spot content free writing, because it looks so polished. With practice you start to see the shape of it before you have read the words. Get to the point where you would be embarrassed to send it.&lt;/p&gt;

&lt;p&gt;Make sure your team are thinking, the simplest way to do this is to ask them what they think about a piece of their writing, and how did writing this help you get there? It will become clear quickly whether the thinking has been done. Do not judge people for using LLMs to write. They might be tidying up their English, or their spelling. Judge the thinking behind the writing on its merits.&lt;/p&gt;

&lt;p&gt;Fluent words are free now, but thinking is not, and thinking is still the reason anyone reads what you write. AI is brilliant at converting thoughts and very bad at coming up with original ones, so give it thoughts worth converting. Do the thinking yourself, let AI help with the rest, and stand behind every line.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:linkedin&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Originality.ai examined 8,795 long LinkedIn posts (100 words or more) from 2018 to 2024 and found a 107 percent jump in average word count since ChatGPT launched, as reported by &lt;a href=&quot;https://www.theregister.com/2024/11/28/linkedin_ai_posts&quot;&gt;The Register&lt;/a&gt;. &lt;a href=&quot;#fnref:linkedin&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:homogenise&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The LLM writing distortion study found that when models revise human writing, they shift the argument and its conclusions, not just the style, and push everyone in the same direction. &lt;a href=&quot;https://sites.google.com/view/llmwritingdistortion/home&quot;&gt;LLMs homogenise writing&lt;/a&gt;. &lt;a href=&quot;#fnref:homogenise&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:grenades&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tobias Lütke on &lt;em&gt;The Knowledge Project&lt;/em&gt; podcast, as reported by Fortune: &lt;a href=&quot;https://fortune.com/2026/09/17/shopify-tobias-lutke-ai-slop-grenades/&quot;&gt;Shopify CEO says employees’ ‘slop grenades’ are making more work for everyone else&lt;/a&gt;. &lt;a href=&quot;#fnref:grenades&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:authorship&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I wrote the first draft of this article entirely by hand, to work out what I think about the topic, AI helped me tidy it up. The thoughts are my own and I stand behind every word. More on how below. &lt;a href=&quot;#fnref:authorship&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:seshan&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tara Seshan on Lenny’s Podcast: &lt;a href=&quot;https://www.lennysnewsletter.com/p/ais-third-era-the-rise-of-persistent&quot;&gt;AI’s third era: the rise of persistent AI coworkers&lt;/a&gt;. &lt;a href=&quot;#fnref:seshan&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:berger&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Jonah Berger and Katherine Milkman studied around 7,000 &lt;em&gt;New York Times&lt;/em&gt; articles and found that content which stirs high arousal emotions, such as awe, gets shared most: &lt;a href=&quot;https://journals.sagepub.com/doi/10.1509/jmr.10.0353&quot;&gt;What Makes Online Content Viral?&lt;/a&gt;, &lt;em&gt;Journal of Marketing Research&lt;/em&gt;, 2012. &lt;a href=&quot;#fnref:berger&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:economist&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;em&gt;The Economist&lt;/em&gt; makes a similar contrast between contesting a parking fine and writing an apology: &lt;a href=&quot;https://www.economist.com/britain/2026/09/24/ai-often-makes-writing-worse-even-if-it-makes-it-better&quot;&gt;AI often makes writing worse. (Even if it makes it better)&lt;/a&gt;. &lt;a href=&quot;#fnref:economist&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:cherrypick&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;If you want to do some proper cooking rather than heating things up, &lt;a href=&quot;https://cherrypick.co&quot;&gt;Cherrypick&lt;/a&gt; plans your meals and fills your supermarket basket with everything you need to cook them. I co-founded it, so I am biased :) &lt;a href=&quot;#fnref:cherrypick&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:ptacek&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Simon Willison quoting Thomas Ptacek: &lt;a href=&quot;https://simonwillison.net/2026/Sep/17/how-to-write-with-an-llm/&quot;&gt;How to write with an LLM&lt;/a&gt;. &lt;a href=&quot;#fnref:ptacek&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:uscopyright&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;US Copyright Office, &lt;a href=&quot;https://www.copyright.gov/ai/Copyright-and-Artificial-Intelligence-Part-2-Copyrightability-Report.pdf&quot;&gt;Copyright and Artificial Intelligence, Part 2: Copyrightability&lt;/a&gt;, January 2025. &lt;a href=&quot;#fnref:uscopyright&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:ukcopyright&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Section 9(3) of the &lt;a href=&quot;https://www.legislation.gov.uk/ukpga/1988/48/section/9&quot;&gt;Copyright, Designs and Patents Act 1988&lt;/a&gt; says the author of a computer generated work with no human author is the person who made the arrangements necessary for its creation. &lt;a href=&quot;#fnref:ukcopyright&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:clay&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Sophie Alpert, &lt;a href=&quot;https://www.clay.com/blog/ai-writing-policy&quot;&gt;Clay’s AI writing policy&lt;/a&gt;, 19 August 2026. &lt;a href=&quot;#fnref:clay&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:pascal&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Often attributed to Oscar Wilde or Mark Twain, but it was Pascal, in the sixteenth of his &lt;em&gt;Provincial Letters&lt;/em&gt; (1657): “I have made this longer than usual because I have not had time to make it shorter.” &lt;a href=&quot;#fnref:pascal&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 02 Oct 2026 08:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/writing-with-ai/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/writing-with-ai/</guid>
        
        
        <category>ai</category>
        
        <category>writing</category>
        
        <category>leadership</category>
        
      </item>
    
      
      
      
      <item>
        <title>Ship Like an Engineer Without Writing Any Code</title>
        <description>&lt;p&gt;&lt;em&gt;This post is based on a workshop given on 24th September 2026 at &lt;a href=&quot;https://designplusaisummit.com&quot; target=&quot;_blank&quot;&gt;design+AI&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Building a working prototype with AI is easy now: ask Claude to build you something cool and it will. Shipping that prototype, so that it is live and useful and does not fall over, is a different problem. On Thursday I spent a morning in Brighton with a room of designers and product people working through the practices engineers rely on to make that second part possible. We did not write any code ourselves. The agent did all of that. Our job is simply knowing what to ask for.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;There is a mystique around engineers and how they work, but we are not always that clever, and our whole job is managing complexity. The systems we build are too complicated to hold in our heads, so over the years we have built up habits that let us keep going without everything falling over. I think of them as the foundations under a building, without which you can only go so high before it collapses. A lot of these habits are about being lazy in a disciplined way, so that you do not have to think about the same thing twice.&lt;/p&gt;

&lt;p&gt;That matters even more now. I do not know any engineers who still write code by hand, because they tell the AI what to write. Agents are good at making sensible decisions, but they still need nudging, and whether you type the code yourself or tell an agent to type it, you have to know the important things to say so that it does not make a mess.&lt;/p&gt;

&lt;p&gt;We built a small lighthouse adventure game (we were in the Lighthouse centre, after all) in Claude Code or Codex in the terminal. The terminal gives the agent the most access to your machine and your files, so it can do the most for you. Then we worked through nine steps.&lt;/p&gt;

&lt;h2 id=&quot;1-start-with-what-people-see&quot;&gt;1. Start With What People See&lt;/h2&gt;

&lt;p&gt;The first step was to build a prototype and play with it. Engineers call this working outside in: you start with what the customer sees and work back towards how it works underneath. People in the room asked for more rooms, or for SVG pictures, or for new fonts, and each change took moments. When you start a new app you often have little idea of what you want, and you need to play with it to find out. Doing that while it is small is far easier than doing it later, and it saves you building a large system underneath an interface that turns out to be wrong.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-outside-in.jpg&quot; alt=&quot;Workshop slide: Step 1, Outside in. Prototype first. The screen, then the behaviour, then the code. A robot sketches a lighthouse on an easel.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;I asked everyone to tell the agent to keep it simple at this point. We were only prototyping, and a prototype that has already grown into a full app loses the advantage of being cheap to change.&lt;/p&gt;

&lt;h2 id=&quot;2-save-every-version&quot;&gt;2. Save Every Version&lt;/h2&gt;

&lt;p&gt;If you have ever saved a file called “presentation V2 final final”, you have already used a form of source control, because you were saving successive versions so that you could always go back. Engineers do the same thing with code using a tool called Git, and GitHub is the website where you publish those versions and share them with other people.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-undo.jpg&quot; alt=&quot;Workshop slide: Try changes you can undo. A pencil eraser rubs out part of a lighthouse drawing, with an arrow looping back.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;Git is hard to learn, with dozens of commands that even developers find confusing, but you no longer need to learn it. Claude knows Git far better than I do, so you can just ask it things: show me the last few changes, undo the change from three changes ago, take everything back to how it looked this morning, try this idea on a separate branch. I commit every five minutes or so, whenever I make a change, and I let the agent write the commit messages. If you want to understand something, keep asking the agent to explain it. Staying curious is probably the most important thing to take away from the whole session.&lt;/p&gt;

&lt;h2 id=&quot;3-deploy-on-every-push&quot;&gt;3. Deploy on Every Push&lt;/h2&gt;

&lt;p&gt;The third step was the hardest. We set up automatic deployment, so that every time you push a new version to GitHub it goes live for everyone within a minute or two. That sounds terrifying at first, but there are ways to stop a push from breaking things, which is what the later steps are for. The reason to set it up now is the same as before: deploying a tiny app is fiddly, but deploying a huge app that a team has spent six months building is much harder, and nobody can see any of the work until you do.&lt;/p&gt;

&lt;p&gt;Setting this up meant dealing with secrets: the tokens that let GitHub tell the hosting service to publish your app. Secrets never go into your code, and instead live in a locked store that only the deployment process can read. This is one of the rules from the Twelve-Factor App, a standard developers use, and the test it gives is whether your code could be made public at any moment without leaking any credentials.&lt;sup id=&quot;fnref:twelve-factor&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:twelve-factor&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; When I worked on GOV.UK early on, the source code for sites like Number 10 and the Ministry of Defence was public for anyone to read, and it was still secure because nothing secret lived in the code.&lt;/p&gt;

&lt;p&gt;One attendee asked a good question here. Claude would not let them paste a token into the chat and gave them a script to run instead. They could not read the script, so which was safer: running a script they did not understand, or pasting the secret into a chat that is not published anyway? My honest answer was that Claude is doing the right thing, because it has been trained not to hold your secrets, but it is not infallible. A model can be manipulated, or it can get part of a script wrong. In practice I have not seen it do anything stupid for a long time, and I trust it more now than I did at first, but I cannot promise it is always right, because I do not control the models. When you are unsure, this is a perfect moment to message a developer you know and ask whether the script is safe, which takes them five minutes.&lt;/p&gt;

&lt;h2 id=&quot;4-choose-the-framework-early&quot;&gt;4. Choose the Framework Early&lt;/h2&gt;

&lt;p&gt;Next we turned the prototype into a real app using Next.js. I pick Next.js because it is so widely used that agents know it better than almost anything else. It is not my favourite framework to code in, but I do not code any more, so I do not mind. A framework gives the agent a structure: it knows where the code goes, where the assets go and how everything fits together. Without one, the code gets messier as it grows, and you find yourself asking the agent to clean it up again and again. When Next.js first came out, this conversion would have taken a mid-level developer half a day or more, and the agent did it in minutes.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-framework.jpg&quot; alt=&quot;Workshop slide: Why a framework, and why this one. A robot builds inside a timber house frame.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;Choosing a framework is harder to undo than most changes, though. If you build on it for a few days and then decide you want something else, that is a lot of work to unpick. A few decisions are like pouring cement: the framework, the database, how people sign in and how your data is managed. Those are worth talking through with the agent before you start. Should this be a mobile app? What about accessibility? What is the difference between React Native and Flutter? The agent knows the trade-offs as well as any senior developer, and you do not need to be one to ask. People ask me about spec-driven development, where you write a detailed specification for the AI first. I am not a fan of formalising that too early. A thoughtful conversation with the agent, followed by asking it to write down what you agreed, is usually enough. There is no point getting it to write a big spec if you are not going to read it.&lt;/p&gt;

&lt;h2 id=&quot;5-let-the-build-say-no&quot;&gt;5. Let the Build Say No&lt;/h2&gt;

&lt;p&gt;Once every push goes live, you need a way to stop a broken change from reaching people. So the fifth step added automated tests and a build. Tests are code that runs against the app itself, rather than for your customers, to check that it still does what you expect, whether that is a sum coming out right or the arrow keys moving you between rooms. When you push to GitHub, the build runs all the tests, and if any fail the change never goes live.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-tests.jpg&quot; alt=&quot;Workshop slide: Check behaviour without reading code. A robot with a key stands at a padlocked lighthouse door.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;The game used the arrow keys, so once it was deployed a couple of people opened it on their phones and found they could not move at all, because phones have no arrow keys. That was a useful accident! Things you did not expect turn up as soon as real people on real devices touch what you built. It is exactly the kind of mistake you can ship without noticing, and then you are fixing it while the support requests pile up. (I have been in a room full of developers fixing a system while it was being announced on the BBC, and I do not recommend it.)&lt;/p&gt;

&lt;p&gt;I asked the agent to write each test before the code, which is called test-driven development. It writes a test for the new behaviour, runs it and watches it fail, then changes the code until it passes. Writing the test first forces you to decide what the code should do, and it lets you build in small slices. Not everyone agrees with writing the test first, but everyone agrees you should have tests, and putting them in early means you start as you mean to go on.&lt;/p&gt;

&lt;p&gt;We then broke the build on purpose, by telling the agent to change the code and leave the test alone, then push it. GitHub showed a red cross next to the change and nothing went live. One attendee’s agent refused to do it at all, because the instructions contradicted the test. The rest did as they were told, which is a reminder that an agent will usually follow a clear instruction even when it is a bad one. A red cross only protects you if you fix it straight away, which is why I wrote back in 2012 that you should &lt;a href=&quot;/failing-tests-rot/&quot;&gt;never leave a failing test&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;6-make-mistakes-harder&quot;&gt;6. Make Mistakes Harder&lt;/h2&gt;

&lt;p&gt;Four plus four is eight, but the text “4” plus the text “4” is “44”, because adding two pieces of text just joins them together. Computers treat numbers and text differently, and JavaScript, the language of the web, tries to be clever about guessing which one you mean. In a big program, that cleverness makes it hard to work out what is going on. TypeScript makes the types explicit, so mistakes show up early. The easier it is for a person to reason about the code, the easier it is for an agent too. If you are not a programmer, the advice is short: tell the agent to use a typed language (TypeScript is a good default if you are building for the web).&lt;/p&gt;

&lt;p&gt;Linting is the tidying part. I admitted I did not know where the name came from, and one attendee suggested a lint roller, picking the fluff off your code, which is as good an explanation as any. A linter checks that the code is consistent and well formed and flags anything left lying around, such as code nothing uses any more. Developers used to argue endlessly about whether to indent with tabs or spaces. In the end, bored CTOs handed the decision to the linter, and nobody has to care any more. Lint and type checks go into the build alongside the tests.&lt;/p&gt;

&lt;h2 id=&quot;7-write-your-decisions-down&quot;&gt;7. Write Your Decisions Down&lt;/h2&gt;

&lt;p&gt;By this point we had made a number of design decisions about the codebase: Next.js, strict TypeScript, tests first, linting. Other people would choose differently, so the agent needs to be told. That is what an AGENTS.md file is for&lt;sup id=&quot;fnref:agents-md&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:agents-md&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;: it sits at the top of your project and the agent reads it before every session. There is no point writing “be a really good programmer” in it, because that is already built in. Use it for your particular decisions and context: what the app is for, who it is aimed at, where your style guide lives, and rules like “commit after each small change” or “ask me before adding libraries”.&lt;/p&gt;

&lt;h2 id=&quot;8-build-features-quickly&quot;&gt;8. Build Features Quickly&lt;/h2&gt;

&lt;p&gt;With the foundations in place, I gave everyone ten minutes to build the most impressive thing they could. Once the scaffolding is there, you can add a feature every two or three minutes. My favourite technique for this is to say “ask me one question at a time until you have enough information”. If you want multiplayer but know nothing about it, the agent will ask whether you want turns or real time, then whether there is a timer, and it keeps going until it can build what you want. I use the same questioning approach when coding, as I described in &lt;a href=&quot;/ditch-autocomplete/&quot;&gt;my Ditch Autocomplete talk&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;9-data-does-not-roll-back&quot;&gt;9. Data Does Not Roll Back&lt;/h2&gt;

&lt;p&gt;The last step moved the game’s rooms out of the code and into a database. A database looks a lot like a spreadsheet, with stricter rules, and it can grow to billions of rows. Storing the rooms as data means you can change them without changing and redeploying the code, and you can track players and where they are.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-data.jpg&quot; alt=&quot;Workshop slide: Data is harder to undo than code. A wave washes away a sandcastle lighthouse while a small robot watches.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;p&gt;Data brings its own risks, and I used the recent NATS air traffic control failure as an analogy. The faulty software was rolled back quickly, but the disruption took days to clear, because planes and crews were all in the wrong places. Code is like that software: you can roll it back fast. If a bug has sprayed bad data through your system, cleaning it up can take far longer. Changing the shape of the data, such as adding a table or renaming a column, is done with a migration: a small file in your project that describes the change and runs as part of the build, and the agent writes it for you. If you store anything about people, you also need to think about regulations like GDPR.&lt;/p&gt;

&lt;p&gt;If any of this gets too technical, ask the agent to explain it again in simpler terms. I often ask it to explain things as if I were 15. (I tried asking it to explain things as if I were five, but I got a lot of fluffy bunny analogies.)&lt;/p&gt;

&lt;h2 id=&quot;call-an-engineer-for-these&quot;&gt;Call an Engineer For These&lt;/h2&gt;

&lt;p&gt;AI can do a huge amount of this on its own, but the more complex your app gets, the more you will need to talk to a friendly engineer. Sign-in is easy to get wrong, so use a provider like Auth0 or Supabase rather than having the agent build its own. Do not have it write anything that takes credit card details either, and let Stripe handle payments. If you are storing personal data in any professional setting, compliance matters, and it is worth checking that you are storing it securely. Before real people rely on your app, and certainly before you charge them, get someone to review it. The same goes for any data migration that makes you nervous, and keep an eye on your cloud bill, because people have had some nasty surprises. You could ask another agent to check your work, and it would probably do a good job, but an agent cannot be accountable, and asking someone to check is a decent thing to do.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/beyond-vibe-coding-slide-engineer.jpg&quot; alt=&quot;Workshop slide: When to talk to an engineer. A robot shows its work to a robot in a hard hat holding a magnifying glass.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/div&gt;

&lt;h2 id=&quot;engineering-is-unlocked&quot;&gt;Engineering Is Unlocked&lt;/h2&gt;

&lt;p&gt;Engineering is not scary, and it is not out of reach. None of these practices needs you to write code. They are things you can ask an agent to set up for you today.&lt;/p&gt;

&lt;p&gt;Take a prototype you have already built and open it in Claude Code or Codex. Ask the agent to put it in Git, publish it to GitHub and set it up so that every push deploys it automatically. Then ask it to explain each step it took, one at a time, until you could explain it to someone else.&lt;/p&gt;

&lt;p&gt;The agent writes all the code now, but you still need to know what to ask it for. Engineers have spent decades building habits that make complicated software manageable: small versions you can rewind, deployment on every change, tests that stop a bad change going live, and data you treat with care. You need to know those habits exist, ask the agent to set them up, and keep asking it questions until you understand what it has done. I go further into how I work with agents in &lt;a href=&quot;/coding-with-ai/&quot;&gt;my post on coding with AI&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:twelve-factor&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://12factor.net/config&quot; target=&quot;_blank&quot;&gt;III. Config&lt;/a&gt;, The Twelve-Factor App. &lt;a href=&quot;#fnref:twelve-factor&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:agents-md&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Claude Code used to read only CLAUDE.md, but &lt;a href=&quot;https://github.com/anthropics/claude-code/releases/tag/v2.1.277&quot; target=&quot;_blank&quot;&gt;Anthropic added AGENTS.md support&lt;/a&gt; on 18th September 2026. In a project with no CLAUDE.md it now reads AGENTS.md, so one file works for Claude Code, Codex and most other agents. &lt;a href=&quot;#fnref:agents-md&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 24 Sep 2026 13:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/ship-like-an-engineer/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/ship-like-an-engineer/</guid>
        
        
        <category>talk</category>
        
        <category>ai</category>
        
        <category>coding</category>
        
      </item>
    
      
      
      
      <item>
        <title>Time To Hire An AI Head</title>
        <description>&lt;p&gt;For a long time I have wanted to hand AI a senior job. When I was a CTO, this was the kind of work I would have delegated to a head of department: take a loosely described outcome, work out what it really needs, split it up, get other people to do the pieces, and come back with something finished while I got on with my own work.&lt;/p&gt;

&lt;p&gt;That goal has been elusive for years. Until very recently, the best description of an AI model was an overeager junior. Delegating to one meant giving it lots of context, and then watching it closely. That was fine, but frustrating.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Working with a junior model came with a lot of approval steps, because I could not trust it. Every run needed me to check the plan, answer its questions, approve its commands and review what came back. Cory Doctorow has a name for this: the reverse centaur: a human used up by the machine, pressing the buttons it cannot press itself.&lt;sup id=&quot;fnref:centaur&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:centaur&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; I built a whole review board to cope with my agents’ output, and found I had turned myself into the button-presser, which I wrote about &lt;a href=&quot;/feedback-is-the-new-bottleneck/&quot;&gt;back in March&lt;/a&gt;. A week later I was warning that &lt;a href=&quot;/stop-prompting-start-briefing/&quot;&gt;the 85th correct approval trains you to blindly approve the 86th&lt;/a&gt;, and by May I could see that &lt;a href=&quot;/i-dont-want-an-ai-god/&quot;&gt;the board itself was training me into drive-by decisions&lt;/a&gt;. (See anti-pattern 2 below.)&lt;/p&gt;

&lt;p&gt;Fable and Astra changed that. After reading Steve Yegge’s essay on the shape of things to come,&lt;sup id=&quot;fnref:yegge&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:yegge&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; I moved to Astra, stepped up a level and stopped managing individual tasks. Astra in particular is genuinely more than a senior: it behaves like a Head. I can give Astra or Fable a high-level instruction and it will just crack on: it reads what it needs, splits the job up, hands the bounded pieces to cheaper workers and comes back with something finished.&lt;/p&gt;

&lt;p&gt;This all works very well, until the tokens run out. Using Astra or Fable as my main conversation partners burns through even the top subscription plan at a frightening rate, and I do not want to spend one every day. So some finesse is needed: I want to delegate at a high level without paying Head rates for every piece of the work.&lt;/p&gt;

&lt;p&gt;Something else has happened at the same time: the open models have caught up. The previous open models I tried were straight up incompetent at anything beyond a narrow script, but GLM 5.3 Flash is a competent junior.&lt;sup id=&quot;fnref:mimo&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:mimo&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; It has a stab at most things, including coding, and runs most of my agent fleet for pennies. On its first day as the standard model for my agents it handled 32 jobs with no failures and no invented facts. It still often misses things or does not quite finish, like any junior, but it has matured enough to be useful and does not break the bank.&lt;/p&gt;

&lt;p&gt;So I now have expensive Heads who can take a whole outcome, and cheap juniors who can do a lot of the work. Here are the patterns I have found for combining them.&lt;/p&gt;

&lt;h2 id=&quot;pattern-1-put-a-head-in-charge&quot;&gt;Pattern 1: Put A Head In Charge&lt;/h2&gt;

&lt;style&gt;
.pd{--ink:#333333;--muted:#5F6B6D;--turq:#1AC8DB;--turq-deep:#0292B7;--sky:#99DFEC;--sky-pale:#EAF8FB;--orange:#FC8745;--sketch:255px 15px 225px 15px / 15px 225px 15px 255px;
background:#FFFFFF;color:var(--ink);border:2px solid var(--ink);border-radius:var(--sketch);padding:24px 20px;margin:2rem 0;font-family:&quot;DM Sans&quot;,system-ui,sans-serif;line-height:1.25;color-scheme:light}
.pd *{box-sizing:border-box}
.pd img{mix-blend-mode:multiply;display:block;margin:0 auto;max-width:100%;height:auto;object-fit:contain;border:0;box-shadow:none;border-radius:0}
.pd-node{display:flex;flex-direction:column;align-items:center;gap:6px;border:2px solid var(--ink);border-radius:var(--sketch);background:#FFFFFF;padding:10px 12px 8px;min-width:0}
.pd-node img{height:110px;width:auto}
.pd-node.sm img{height:72px}
.pd-node.lg img{height:140px}
.pd-node.hot{border-color:var(--orange);border-width:3px;background:#FFF4EC}
.pd-node.faint{opacity:.5;border-style:dashed}
.pd-node.bare{border:0;padding:0;background:transparent}
.pd-label{font-weight:700;font-size:.95rem;text-align:center;color:var(--ink);white-space:nowrap}
.pd-sub{font-size:.8rem;color:var(--muted);text-align:center;font-weight:500}
.pd-tag{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:var(--orange);color:var(--ink);padding:2px 10px;border:2px solid var(--ink);border-radius:var(--sketch)}
.pd-arr{width:44px;height:44px;flex:none;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;color:var(--ink)}
.pd-arr.l{transform:rotate(180deg)}
.pd-arr.d{transform:rotate(90deg)}
.pd-arr.u{transform:rotate(-90deg)}
.pd-arr.dash path:first-child{stroke-dasharray:4 5}
.pd-o .pd-arr,.pd-arr.o{color:var(--orange)}
.pd-o .pd-flabel,.pd-flabel.pd-o{color:#C75A1E}
.pd-flow{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.pd-flow-pair{display:flex;align-items:center;justify-content:center;gap:28px}
.pd-flow-pair.stack{flex-direction:column;gap:4px}
.pd-flabel{font-size:.78rem;color:var(--muted);font-weight:500;text-align:center;white-space:nowrap}
.pd-v{display:flex;flex-direction:column;align-items:center;gap:6px}
.pd-row{display:flex;align-items:center;justify-content:center;gap:10px}
.pd-juniors{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:100%;max-width:520px}
.pd-juniors .pd-node{padding:8px 4px 6px}
.pd-q{font-weight:700;color:#C75A1E;font-size:1.1rem;letter-spacing:.15em}
.pd-pile img{height:56px;width:auto}
.pd-sep{align-self:stretch;border-left:2px dashed var(--sky);margin:0 8px}
/* do-not-manage */
.pd-swamp{display:grid;grid-template-columns:auto 1fr auto 1fr auto;grid-template-areas:&quot;j1 f1 you f2 j3&quot; &quot;j2 f1 you f2 j4&quot;;gap:10px 6px;align-items:center;justify-items:center}
.pd-swamp .j1{grid-area:j1}.pd-swamp .j2{grid-area:j2}.pd-swamp .j3{grid-area:j3}.pd-swamp .j4{grid-area:j4}
.pd-swamp .f1{grid-area:f1}.pd-swamp .f2{grid-area:f2}.pd-swamp .you{grid-area:you}
.pd-swamp .you{border-color:var(--orange);border-width:3px}
.pd-row.tight{gap:4px}
.pd-row.tight .pd-node img{height:84px}
.pd-row.tight .pd-node.sm img{height:56px}
.pd-row.tight .pd-arr{width:36px;height:36px}
/* three levels */
.pd-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end}
.pd-levels .pd-node{height:100%;justify-content:flex-end}
.pd-scale{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 10px;margin-top:14px}
.pd-scale .bar{height:0;border-top:3px solid var(--turq-deep);position:relative;border-radius:2px}
.pd-scale .bar::after{content:&quot;&quot;;position:absolute;right:-2px;top:-9px;border:7px solid transparent;border-left:12px solid var(--turq-deep);border-right:0}
.pd-scale .bar.cost{border-top-color:var(--muted)}
.pd-scale .bar.cost::after{border-left-color:var(--muted)}
.pd-scale span{font-size:.8rem;font-weight:700;color:var(--muted)}
@media (max-width:600px){
.pd{padding:18px 12px}
.pd-row.stack-sm{flex-direction:column}
.pd-row.stack-sm .pd-sep{border-left:0;border-top:2px dashed var(--sky);align-self:stretch;margin:6px 0}
.pd-row.stack-sm .pd-arr.r{transform:rotate(90deg)}
.pd-row.stack-sm .pd-arr.l{transform:rotate(-90deg)}
.pd-row.stack-sm .pd-flow-pair.stack{flex-direction:row;gap:28px}
.pd-node img{height:88px}
.pd-node.lg img{height:110px}
.pd-node.sm img{height:60px}
.pd-juniors{gap:6px}
.pd-juniors .pd-node img{height:52px}
.pd-juniors .pd-label{font-size:.8rem}
.pd-swamp{grid-template-columns:1fr 1fr;grid-template-areas:&quot;you you&quot; &quot;f1 f2&quot; &quot;j1 j3&quot; &quot;j2 j4&quot;;gap:8px}
.pd-swamp .pd-arr.r,.pd-swamp .pd-arr.l{transform:rotate(90deg)}
.pd-swamp .pd-flow-pair.stack{flex-direction:row;gap:14px}
.pd-levels .pd-node{padding:8px 4px 6px}
.pd-tag{white-space:nowrap;font-size:.6rem;letter-spacing:.02em;padding:2px 6px}
.pd-levels .pd-label{font-size:.82rem;white-space:normal}
.pd-row.tight .pd-node img{height:88px}
.pd-row.tight .pd-arr{width:44px;height:44px}
.pd-flabel{white-space:normal}
}
&lt;/style&gt;
&lt;figure class=&quot;pd&quot; data-pattern=&quot;head-of&quot; role=&quot;img&quot; aria-label=&quot;You hand an outcome to a Head. The Head briefs four juniors, collects their results and hands you one finished result.&quot;&gt;
&lt;div class=&quot;pd-v&quot;&gt;
&lt;div class=&quot;pd-node&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/you.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;You&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow-pair&quot;&gt;&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr d&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;outcome&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;pd-flow pd-o&quot;&gt;&lt;svg class=&quot;pd-arr u&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;one finished result&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node lg&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow-pair&quot;&gt;&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr d&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;briefs&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr u dash&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;results to review&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;pd-juniors&quot;&gt;
&lt;div class=&quot;pd-node sm&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;This is the pattern I use most. I give the Head an outcome, it works out the approach, and it splits the job into bounded pieces that cheap juniors can finish. It briefs them, resolves the dependencies between them, reviews what comes back and owns whether the whole thing is accepted. I have a &lt;a href=&quot;https://airskills.ai/chrismdp/delegate&quot;&gt;delegate skill&lt;/a&gt; that manages this for me, choosing the right level of model depending on the task. Stephen Bungay calls this middle layer operations in &lt;em&gt;The Art of Action&lt;/em&gt;: strategy sets the intent, tactics carry out the tasks, and operations turns one into the other.&lt;sup id=&quot;fnref:bungay&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bungay&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Across three matched coding tasks, GLM 5.3 Flash cost about $0.61 against $16.95 for the flagship model from the same family. If you want to use these more junior models, you need to make sure something competent catches what they miss. In one audit Flash built a feature that forwarded messages between channels. The tests passed, but the code did not do what I had asked for when the original channel could not be read, because the test only checked a weaker fallback. The real fix is an acceptance test that checks the actual requirement, and the Head should insist on one before it accepts the work. Part of that failure was mine, too: the reviewers I brought in afterwards were never shown the original brief, so they judged the work against the wrong standard. The Head needs the original request, the boundaries and the evidence, not just a message from the junior saying it is done.&lt;/p&gt;

&lt;h2 id=&quot;anti-pattern-2-do-not-manage-the-juniors-yourself&quot;&gt;(Anti) Pattern 2: Do Not Manage The Juniors Yourself&lt;/h2&gt;

&lt;figure class=&quot;pd&quot; data-pattern=&quot;do-not-manage&quot; role=&quot;img&quot; aria-label=&quot;You sit in the middle of four juniors, pushing a pile of context to each one while questions come back from all of them.&quot;&gt;
&lt;div class=&quot;pd-swamp&quot;&gt;
&lt;div class=&quot;pd-node sm j1&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm j2&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow f1&quot;&gt;&lt;div class=&quot;pd-pile&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/context-pile.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;pd-flow-pair stack&quot;&gt;&lt;svg class=&quot;pd-arr l&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-q&quot;&gt;???&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;pd-flabel&quot;&gt;context, every time&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node lg you&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/you.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;You&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;managing everyone&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow f2&quot;&gt;&lt;div class=&quot;pd-pile&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/context-pile.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;pd-flow-pair stack&quot;&gt;&lt;svg class=&quot;pd-arr r&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-q&quot;&gt;???&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;pd-flabel&quot;&gt;context, every time&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm j3&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm j4&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;When the juniors got good enough and my Max plans were exhausted, I spent a few days last week handing them work directly. This was not good: it took me straight back to the reverse centaur and the bad old days of 2025, when I was &lt;a href=&quot;/which-coding-agent-is-best/&quot;&gt;testing coding agents head to head&lt;/a&gt; and concluding that &lt;a href=&quot;/independent-coding-agents-arent-ready/&quot;&gt;independent coding agents were not ready&lt;/a&gt;. I found myself shaping my work around what they could do, deciding the pieces, checking for omissions, answering their questions and keeping everything moving. Worst of all, I had to give them loads of information every time, because a junior only knows what you tell it.&lt;/p&gt;

&lt;div style=&quot;width: 40%; float: right; margin: 0 0 1rem 1.5rem;&quot;&gt;&lt;a href=&quot;/comics/joe-big-picture-message-100-positive-feedback/&quot;&gt;&lt;img src=&quot;/assets/comics/joe-big-picture-message-100-positive-feedback.jpg&quot; alt=&quot;Comic: Joe stands on a stage in an empty auditorium, laser-pointing at an org chart of robots with a CEO at the top and one human box at the bottom labelled Context Provider. Caption: Joe&apos;s big picture message to the company had 100% positive feedback.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;A friend asked me how you give a senior model enough context to do the job the way you want it done. For a junior, that really is the hard problem, but for a good Head, it mostly goes away. A good Head fetches its own context and works things out from the wider picture, which in my case is my vault: years of notes, projects, decisions and skills describing how I like things done. In an organisation it might be the repo docs, a wiki or the ticket history. If the context is not written down anywhere, the Head cannot fetch it, so writing it down is the first job. I do not need to give it anything more than that, and the juniors get a tight brief from someone who understands the whole job. The answer is simple: only talk to really good agents, and let them delegate the rest as in pattern 1.&lt;/p&gt;

&lt;h2 id=&quot;pattern-3-give-the-head-room-to-think&quot;&gt;Pattern 3: Give The Head Room To Think&lt;/h2&gt;

&lt;figure class=&quot;pd&quot; data-pattern=&quot;room-to-think&quot; role=&quot;img&quot; aria-label=&quot;The same Head twice: frazzled among coffee cups at low effort, then calm and rested at high effort.&quot;&gt;
&lt;div class=&quot;pd-row stack-sm&quot;&gt;
&lt;div class=&quot;pd-node lg&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of-frazzled.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;low effort&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr r&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;same model, more thinking&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node lg hot&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of-rested.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;high effort&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;There are two choices hiding inside “which model”. The first is capability: have I picked someone who can do the job at all? The second is how much reasoning effort I let it spend. A Head at low reasoning feels like a senior person on too little sleep and too much coffee. They are still senior, but they move fast and miss things. At high reasoning it is the same person, rested and with an afternoon clear. Setting the two separately saves a lot of tokens: medium effort for day-to-day coordination, and high effort only when a job needs real thought. How much it saves depends on the model. On Anthropic’s own coding benchmark runs, Opus 5.5 at medium effort scored about 2.5 points below high for about 70% of the cost, and extra-high effort bought only 1.4 more points for two and a half times the cost of high.&lt;sup id=&quot;fnref:effort&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:effort&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;pattern-4-visit-the-expert-in-their-den&quot;&gt;Pattern 4: Visit The Expert In Their Den&lt;/h2&gt;

&lt;figure class=&quot;pd&quot; data-pattern=&quot;expert-den&quot; role=&quot;img&quot; aria-label=&quot;The Head carries a brief with the problem, the evidence and the doubt to an expert in their den, and brings a second opinion back. You are not involved.&quot;&gt;
&lt;div class=&quot;pd-row stack-sm&quot;&gt;
&lt;div class=&quot;pd-node sm faint&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/you.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;You&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;not involved&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-sep&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow&quot;&gt;&lt;div class=&quot;pd-pile&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/brief.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;span class=&quot;pd-flabel&quot;&gt;problem, evidence, doubt&lt;/span&gt;&lt;div class=&quot;pd-flow-pair stack&quot;&gt;&lt;svg class=&quot;pd-arr r&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-o&quot;&gt;&lt;svg class=&quot;pd-arr l&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;pd-flabel pd-o&quot;&gt;second opinion&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node lg&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/expert.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Expert&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;incomprehensible, annoying&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;Some problems deserve a second opinion. My Head can run at medium effort and call in a fresh expert at high effort, either another copy of the same model or a different one entirely. The fresh expert gets the original problem, the evidence and the specific doubt, with none of the baggage of the conversation so far. The Head weighs what comes back and stays responsible for the result.&lt;/p&gt;

&lt;p&gt;I used to do this with Fable. It felt like visiting the brilliant expert that every organisation has, sitting in their office den: you go occasionally, and you dread the experience, mostly because of what Ethan Mollick calls “Claudish”, the nonsense-speak these models drift into.&lt;sup id=&quot;fnref:claudish&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:claudish&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; Opus 5 had the same problem, which is why I never used it as a Head. The advice was excellent, but I did not want to deal with it directly all day, and I certainly could not afford to use a top-end model every time: the plan usage was just too great. So I sent the Head to visit on my behalf, and Fable only ever saw a well-prepared question. Now that Opus 5.5 is my go-to Head, I make that visit far less often. I suspect the den will come back, though. In future there could be specialised and very expensive models built for exactly this kind of work, and the pattern will be the same: prepare the question well, send the Head, and keep the expert out of the day-to-day.&lt;/p&gt;

&lt;h2 id=&quot;pattern-5-try-the-junior-head&quot;&gt;Pattern 5: Try The Junior Head&lt;/h2&gt;

&lt;figure class=&quot;pd&quot; data-pattern=&quot;junior-head-of&quot; role=&quot;img&quot; aria-label=&quot;Three levels side by side: junior everything (GLM 5.3 Flash), junior Head (Opus 5.5) and head of everything (Astra, Fable). Capability and cost both rise from left to right. The junior Head in the middle is the sweet spot.&quot;&gt;
&lt;div class=&quot;pd-levels&quot;&gt;
&lt;div class=&quot;pd-node sm&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/junior.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior everything&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;GLM 5.3 Flash&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node hot&quot;&gt;&lt;span class=&quot;pd-tag&quot;&gt;sweet spot&lt;/span&gt;&lt;img src=&quot;/assets/img/junior-everything/junior-head-of.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Junior Head&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;Opus 5.5&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node lg&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head of everything&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;Astra, Fable&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;pd-scale&quot;&gt;&lt;span&gt;Capability&lt;/span&gt;&lt;div class=&quot;bar&quot;&gt;&lt;/div&gt;&lt;span&gt;Cost&lt;/span&gt;&lt;div class=&quot;bar cost&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;This is the newest pattern, and the one that makes the whole arrangement affordable: run most of the work through a cheaper Head, and escalate to the expensive one only when a job needs it. For me, that cheaper Head is Opus 5.5, which seems to have fixed the Claudish. It is proving to be the first model I can use as a Head without watching my subscription drain. It is capable, it is fast and it is almost as good as Astra at strategic work. I am also not using it to delegate as much, because it can do the work itself at a reasonable cost. I think of it as a junior Head, or a Head who has almost got it. Astra is still my head of everything, but Opus 5.5 runs the day-to-day.&lt;/p&gt;

&lt;p&gt;Because it does not burn through my tokens, it widens what I can experiment with. I can hand it outcomes I would never have risked on Astra’s budget, see what comes back and learn from it. When a job turns out to need more, I escalate to Astra or send the junior Head to visit Fable.&lt;/p&gt;

&lt;h2 id=&quot;pattern-6-ask-the-head-to-explain-strategy&quot;&gt;Pattern 6: Ask The Head To Explain Strategy&lt;/h2&gt;

&lt;figure class=&quot;pd&quot; data-pattern=&quot;explain-strategy&quot; role=&quot;img&quot; aria-label=&quot;The Head reads the vault of notes and archive, writes you a short brief, and you make the decision.&quot;&gt;
&lt;div class=&quot;pd-row stack-sm tight&quot;&gt;
&lt;div class=&quot;pd-node&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/vault.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Vault&lt;/span&gt;&lt;span class=&quot;pd-sub&quot;&gt;notes and archive&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr r&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;reads it all&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/head-of.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Head&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr r&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;span class=&quot;pd-flabel&quot;&gt;explains&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node sm bare&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/brief.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;Short brief&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;pd-flow&quot;&gt;&lt;svg class=&quot;pd-arr r o&quot; viewBox=&quot;0 0 48 48&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 25 C 14 22, 26 27, 41 24&quot; /&gt;&lt;path d=&quot;M33 16 L42 24 L33 32&quot; /&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;div class=&quot;pd-node hot&quot;&gt;&lt;img src=&quot;/assets/img/junior-everything/you.jpg&quot; alt=&quot;&quot; /&gt;&lt;span class=&quot;pd-label&quot;&gt;You decide&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/figure&gt;

&lt;p&gt;In May I wrote that &lt;a href=&quot;/i-dont-want-an-ai-god/&quot;&gt;I did not want an AI god&lt;/a&gt;, because asking AI for a strategy gets you something “plausible, coherent and mind-numbingly average”. I still believe that about asking a model to decide for me. What has changed is how good the Heads have become at helping me understand a strategic situation. Increasingly I ask them to read everything relevant and give me a good understanding of where things stand, and that is proving very helpful. The call is still mine, but I make it with a better picture than I could have put together myself in the time.&lt;/p&gt;

&lt;p&gt;Understanding a situation is different from interpreting it and expressing what to do about it. Tara Seshan put this well on Lenny’s Podcast:&lt;sup id=&quot;fnref:lenny&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:lenny&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; as AI takes on more of the work, three things stay human, and they are expression, accountability and relationships. The Head can help me understand the strategy, but saying what we will do, standing behind it and bringing people with me are still my job.&lt;/p&gt;

&lt;h2 id=&quot;head-of-everything&quot;&gt;Head Of Everything&lt;/h2&gt;

&lt;p&gt;I am not the only one reaching for the org chart. Every’s Context Window newsletter reported engineers describing Anthropic’s models as a company: Fable as the CEO, Opus 5 as a senior engineer and Sonnet 5 as a junior engineer or analyst.&lt;sup id=&quot;fnref:ceo&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:ceo&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; The same piece has a theory for the Claudish, too: that Opus 5 was trained mainly to work as a subagent under Fable, so its prickly style matters less because it mostly talks to another model.&lt;/p&gt;

&lt;p&gt;Where I differ is on how far to take the chart. I do not think giving agents human job titles works well. Agents have properties that humans do not, which are genuinely useful, and mapping them onto a human role can limit them. It also suggests that AI is a direct replacement for a person, which is wrong: AI takes on &lt;a href=&quot;/slice-your-job-into-skills/&quot;&gt;slices of people’s work&lt;/a&gt;, not whole jobs. Human job titles are far too generic for that anyway. The best title for an agent is one you never see in the real world, like “financial reconciler” or “productivity coach”: a single slice. The level you give it, junior or Head, then depends on how powerful the model is and how much you want to spend.&lt;/p&gt;

&lt;p&gt;This will likely change in future. The same piece reports the labs moving towards specialised models, with one to orchestrate and another to execute. We may yet end up with truly specialised intelligences, and who knows where that goes. For now, the level is what I notice first: they are good at everything.&lt;/p&gt;

&lt;p&gt;The employee metaphor is not perfect, but where it breaks, it mostly breaks in the agent’s favour. An agent can be made to forget things completely, which would get very strange in a human (&lt;em&gt;Eternal Sunshine of the Spotless Mind&lt;/em&gt;&lt;sup id=&quot;fnref:sunshine&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:sunshine&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;9&lt;/a&gt;&lt;/sup&gt; is a fantastic thought experiment on exactly that!). And we never hire a junior model and promote it: we pick the right level for each job, so the Peter Principle does not apply.&lt;sup id=&quot;fnref:peter&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:peter&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;buy-back-your-attention&quot;&gt;Buy Back Your Attention&lt;/h2&gt;

&lt;p&gt;All of this comes back to the goal I started with. With a team of juniors, I end up squeezing every last drop out of my subscription while spending the attention I was trying to free up. With a capable Head, I can say “please get that done” and go away for hours. So I have stopped comparing models and started comparing teams: the whole cost of an accepted outcome, including the briefing, the review, the repairs and above all my own time spent stepping in.&lt;/p&gt;

&lt;p&gt;If you are putting together a team of models, start with the management questions rather than the benchmark tables. Who understands the whole task? What can each worker reliably own? Who fetches the context? What evidence proves the work is done? What can the Head read, and where does that data go? The juniors are now good enough to do a lot of the work. They still need somebody to manage them, and, for many tasks, that somebody no longer has to be you.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:centaur&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Cory Doctorow sets out the reverse centaur in &lt;a href=&quot;https://pluralistic.net/2025/12/05/pop-that-bubble/#u-washington&quot;&gt;his speech on the AI bubble&lt;/a&gt;: a centaur is a human helped by a machine, and a reverse centaur is a human used up by one. &lt;a href=&quot;#fnref:centaur&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:yegge&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Steve Yegge, &lt;a href=&quot;https://yegge.ai/essays/the-shape-of-things-to-come/&quot;&gt;&lt;em&gt;The Shape of Things to Come, Part 1: The Continuous Thunderdome&lt;/em&gt;&lt;/a&gt;, August 2026. &lt;a href=&quot;#fnref:yegge&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:mimo&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The next one I am keen to try is Xiaomi’s &lt;a href=&quot;https://mimo.mi.com/docs/en-US/news/latest/v2-6&quot;&gt;MiMo-V2.6&lt;/a&gt;, released with open weights on 21 September 2026. My setup only uses hosts that offer zero data retention (ZDR), and there are not enough of those for MiMo yet. &lt;a href=&quot;#fnref:mimo&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:bungay&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Stephen Bungay, &lt;em&gt;The Art of Action&lt;/em&gt;. His &lt;a href=&quot;https://www.pmi.org/-/media/pmi/microsites/disciplined-agile/bungay_artofaction_chapterrecaps_article.pdf&quot;&gt;chapter summaries&lt;/a&gt; set out the strategy, operations and tactics distinction. &lt;a href=&quot;#fnref:bungay&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:effort&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Anthropic, &lt;a href=&quot;https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence&quot;&gt;&lt;em&gt;Optimizing for cost and intelligence&lt;/em&gt;&lt;/a&gt;, SWE-bench Pro results. The same page shows research tasks where higher effort bought no measurable accuracy at all. &lt;a href=&quot;#fnref:effort&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:claudish&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Ethan Mollick coined the term &lt;a href=&quot;https://x.com/emollick/status/2064542441848422611&quot;&gt;on X in June 2026&lt;/a&gt;, watching long agent tasks drift into a private dialect of labels, fragments and shorthand. &lt;a href=&quot;#fnref:claudish&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:lenny&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tara Seshan on &lt;a href=&quot;https://www.lennysnewsletter.com/p/ais-third-era-the-rise-of-persistent&quot;&gt;Lenny’s Podcast&lt;/a&gt;. &lt;a href=&quot;#fnref:lenny&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:ceo&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Every, &lt;a href=&quot;https://every.to/context-window/fable-as-ceo&quot;&gt;&lt;em&gt;Fable as CEO&lt;/em&gt;&lt;/a&gt;, Context Window newsletter, July 2026. &lt;a href=&quot;#fnref:ceo&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:sunshine&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Eternal_Sunshine_of_the_Spotless_Mind&quot;&gt;&lt;em&gt;Eternal Sunshine of the Spotless Mind&lt;/em&gt;&lt;/a&gt; (2004), written by Charlie Kaufman and directed by Michel Gondry. &lt;a href=&quot;#fnref:sunshine&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:peter&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Laurence J. Peter and Raymond Hull, &lt;em&gt;The Peter Principle&lt;/em&gt; (1969): in a hierarchy, people tend to be promoted until they reach a role they cannot do. &lt;a href=&quot;#fnref:peter&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 24 Sep 2026 09:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/time-to-hire-an-ai-head/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/time-to-hire-an-ai-head/</guid>
        
        
        <category>ai</category>
        
        <category>leadership</category>
        
      </item>
    
      
      
      
      <item>
        <title>Call It Machine Intelligence</title>
        <description>&lt;p&gt;Donald Trump wants a better name for artificial intelligence. On Saturday he called the words “inaccurate, and very ineloquent”, and asked his followers to vote between Superior Intelligence, Extreme Intelligence and Supreme Intelligence.&lt;sup id=&quot;fnref:poll&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:poll&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; He is right that the name is wrong, and I have a better option than any of his three.&lt;/p&gt;

&lt;p&gt;Let’s call it &lt;strong&gt;Machine Intelligence&lt;/strong&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;mccarthy-wanted-a-better-name-too&quot;&gt;McCarthy Wanted a Better Name Too&lt;/h2&gt;

&lt;p&gt;John McCarthy coined the term in his 1955 proposal for the Dartmouth summer workshop, and he later told Noel Sharkey that he wished he had called the field “computational intelligence” instead, although he accepted that his choice had probably drawn more people to the subject.&lt;sup id=&quot;fnref:mccarthy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:mccarthy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; The field has also dropped the name under pressure before. When the funding dried up, researchers called their work informatics, knowledge-based systems or cognitive systems to keep the grants coming, and IBM later sold Watson as “cognitive computing” to get away from the fear attached to AI.&lt;sup id=&quot;fnref:renames&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:renames&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; None of those names changed how anything worked, and none of them stuck.&lt;/p&gt;

&lt;p&gt;“Computational” is no better than “artificial”, because it is long and awkward to say. “Machine” is clearer and more visceral, and it will get more accurate, because this intelligence will be embodied in robots before too long. How soon depends on whether we get export controls or a deal, and I wrote in April about &lt;a href=&quot;/truman-would-have-taken-over-ai/&quot;&gt;how governments take control of a technology once the political panic sets in&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;artificial-implies-fake&quot;&gt;Artificial Implies Fake&lt;/h2&gt;

&lt;p&gt;“Artificial” implies that the intelligence is not real. Biology has had the monopoly on intelligence until now, so we have conflated the two for our entire existence and built our assumptions on top of that. That monopoly is over. I suggested Machine Intelligence in a WhatsApp group with other AI experts, and I have not heard a better name. It covers any intelligence produced by machines, and says nothing about real or fake or about biology. The term has a history of its own too: Donald Michie convened the first Machine Intelligence Workshop at Edinburgh in 1965, and the university founded a Department of Machine Intelligence and Perception the year after.&lt;sup id=&quot;fnref:michie&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:michie&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Trump has more important work to do than naming things. He could make an information-sharing deal with China that lets them catch up to the level of OpenAI’s Astra, in return for slowing further work.&lt;sup id=&quot;fnref:deal&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:deal&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; UN inspectors would get access to AI labs worldwide, and he could share a Nobel Peace Prize for it. That deal matters far more than what we call any of it. But he is right about the name, and “artificial” has to go. Once it is gone, we can no longer get away from the fact that machine intelligence is real, and here to stay.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:poll&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Trump posted the poll on Truth Social and &lt;a href=&quot;https://x.com/realDonaldTrump/status/2101350559328416142&quot; target=&quot;_blank&quot;&gt;on X&lt;/a&gt; on 19 September 2026. &lt;a href=&quot;https://thehill.com/homenews/administration/6099834-trump-proposes-new-a-i-names/&quot; target=&quot;_blank&quot;&gt;The Hill&lt;/a&gt; and &lt;a href=&quot;https://techcrunch.com/2026/09/19/trump-suggests-rebranding-ai-with-a-new-name-says-hes-also-creating-an-ai-force/&quot; target=&quot;_blank&quot;&gt;TechCrunch&lt;/a&gt; both covered it. A day later he dropped Supreme Intelligence, “probably because of its relationship to the Supreme Court”, and restarted the vote with the other two. &lt;a href=&quot;#fnref:poll&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:mccarthy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Sharkey said this in the &lt;a href=&quot;https://www.bbc.com/news/technology-15444222&quot; target=&quot;_blank&quot;&gt;BBC obituary of McCarthy&lt;/a&gt; in 2011. McCarthy himself was less sure, and told &lt;a href=&quot;https://www.cnet.com/science/getting-machines-to-think-like-us/&quot; target=&quot;_blank&quot;&gt;CNET in 2006&lt;/a&gt; that he could not have used “computational” in 1955, because the idea that computers would be the main vehicle for the work was a minority view at the time. &lt;a href=&quot;#fnref:mccarthy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:renames&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/AI_winter&quot; target=&quot;_blank&quot;&gt;Wikipedia article on the AI winter&lt;/a&gt; lists the alternative names and notes that they “helped to procure funding by avoiding the stigma of false promises”. Ginni Rometty explained the Watson choice to Bloomberg Businessweek: “The world calls it AI. There’s so much fearmongering about AI.” The quote is in &lt;a href=&quot;https://www.linkedin.com/pulse/cognitive-computing-more-than-gimmicky-name-stephen-deangelis&quot; target=&quot;_blank&quot;&gt;Stephen DeAngelis’s piece on cognitive computing&lt;/a&gt;. IBM went back to saying AI within a few years. &lt;a href=&quot;#fnref:renames&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:michie&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The &lt;a href=&quot;https://www.doc.ic.ac.uk/~shm/MI/mi.html&quot; target=&quot;_blank&quot;&gt;Machine Intelligence series&lt;/a&gt; of workshops and volumes ran for decades under Michie as editor. The University of Edinburgh’s &lt;a href=&quot;https://groups.inf.ed.ac.uk/aics_history/Williams_Galanos_Yang_2026_history.pdf&quot; target=&quot;_blank&quot;&gt;history of its early AI years&lt;/a&gt; covers the department. &lt;a href=&quot;#fnref:michie&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:deal&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I first sketched this deal &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:share:7507499087244562432/&quot; target=&quot;_blank&quot;&gt;on LinkedIn&lt;/a&gt;. &lt;a href=&quot;#fnref:deal&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Mon, 21 Sep 2026 08:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/call-it-machine-intelligence/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/call-it-machine-intelligence/</guid>
        
        
        <category>ai</category>
        
        <category>leadership</category>
        
      </item>
    
      
      
      
      <item>
        <title>AI Decisions Just Got 100 Times Cheaper</title>
        <description>&lt;p&gt;A new kind of model is out. It makes decisions instead of writing text, it answers in well under a second, and it costs a hundred times less than the models you are used to. I tried it on everything I am building, and &lt;a href=&quot;#i-tried-it&quot;&gt;the results are at the bottom of this post&lt;/a&gt;. First, some background on why it matters.&lt;/p&gt;

&lt;p&gt;Prompt engineering has always been rubbish. I wrote early last year about how it is &lt;a href=&quot;/beyond-prompting/&quot;&gt;the punch card era of programming all over again&lt;/a&gt;. If AI was so good at writing its own text, why could it not write the prompts as well?&lt;/p&gt;

&lt;p&gt;Early in my use of large language models I came across DSPy, which solved a lot of the problems around my laziness with prompts.&lt;sup id=&quot;fnref:dspy&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:dspy&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; It felt like an important step forward, and it felt like there was a useful product to be built on that idea. So I built my own version, &lt;a href=&quot;/i-built-kaijo-to-fix-unreliable-ai/&quot;&gt;Kaijo&lt;/a&gt;. It gave deterministic outputs and improved its own prompts: you gave it feedback, and it wrote the improvement for you. It even used its own system to create prompts for itself, which was both elegant and hard to get working. I ran a waitlist, gained some traction, used it on a few projects, and it was undeniably useful. However, something was always slightly missing.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Months later I worked out what that was. Optimising the prompts is only half the job. The AI also has to work out the structure of how it approaches the work. If I make the early decisions about how to break the job down, I am micromanaging it, and it never gets to find a better way.&lt;/p&gt;

&lt;h2 id=&quot;loops-then-programs&quot;&gt;Loops, Then Programs&lt;/h2&gt;

&lt;p&gt;My first step was to replace that structure with a powerful model and a loop, and let it work out the approach for itself. Loops are much simpler to run than any orchestrator, which is why I &lt;a href=&quot;/running-ralph-loops-is-easy/&quot;&gt;cut Ralph down to one line with no setup&lt;/a&gt;. This was a great start, and the job was normally done to a good standard. But even with the most powerful models there was some variability in the process, and letting the model call tools endlessly to work out what it needed cost a lot of tokens.&lt;/p&gt;

&lt;div style=&quot;width: 40%; float: left; margin: 0 1.5rem 1rem 0;&quot;&gt;&lt;a href=&quot;/comics/just-run-the-loop-in-parallel/&quot;&gt;&lt;img src=&quot;/assets/comics/just-run-the-loop-in-parallel.jpg&quot; alt=&quot;A single panel comic. In an open plan office, robots hand bags of money to worried men in suits while one cheerful engineer with a coffee says he did not get the agents to write scripts, he just runs a loop a thousand times in parallel and picks the best result. Asked about his monthly spend, he answers forty three thousand dollars. Cool, huh?&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;The next step is to codify that process. Ask the AI to write a structured, repeatable program which itself calls AI to get certain jobs done. Along the way you give the AI feedback where the structure does not quite work, and build up a set of repeatable cases, or evals, which it uses to check it has not gone off the rails while it makes improvements. I wrote up my latest thinking on this last week, when I explained &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;why prompt evals alone are useless&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This breaks the use of AI into smaller pieces inside a larger program, which is a great way to build in the right amount of reliability. The repeatable parts matter as much as the AI parts. As I put it when I argued that &lt;a href=&quot;/stop-saving-tokens-start-writing-scripts/&quot;&gt;you should stop saving tokens and start writing scripts&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The pattern matching is deterministic, so it lives in the script, where it runs in milliseconds and costs nothing. The judgement is not deterministic, so it stays in the prompt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div style=&quot;width: 80%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/stop-saving-tokens-start-writing-scripts-infographic.jpg&quot; alt=&quot;The Double Dovetail infographic: four stages showing determinism and AI agency nesting into each other. One, Workflows, pure structure shown as gears. Two, Skills, intelligence shown as a glowing loop. Three, Skills within Workflows, loops nested inside an angular bracket. Four, Workflows within Skills, a gear and a code window nested inside one loop.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;The Double Dovetail, from Stop Saving Tokens. Start Writing Scripts.&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;That is where some of the other Kaijo properties would be really useful. The self improvement not so much, as you need an agent to consider the whole build, but the single call simplicity, the guarantee that the output was well structured enough for a program to understand it, and the way you could choose a fast model for the job. Often you want a fast routing model at the beginning of the process, for example, as I talked about when I walked through building one for a client in my &lt;a href=&quot;/webinar-make-your-ai-rollout-stick/&quot;&gt;Make Your AI Rollout Stick webinar&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;a-model-that-decides-but-cannot-talk&quot;&gt;A Model That Decides but Cannot Talk&lt;/h2&gt;

&lt;p&gt;This week we got a new type of model with exactly those properties. TypeSafe calls it a System One model, trained with a process it calls Reinforcement Learning for Calibrated Decisions, and the first one is called Jev.&lt;sup id=&quot;fnref:jev&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:jev&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; It can choose between options, give a score against some criteria, or answer yes or no as a probability. It brings nuance to a decision you might previously have hard coded, or paid an expensive LLM to make. It cannot generate text, but it can decide when you need text, so you call a traditional LLM only when you need one. It makes lots of decisions in parallel, it is fast, and it is &lt;em&gt;very&lt;/em&gt; cheap: $42 per &lt;em&gt;billion&lt;/em&gt; input tokens, with output tokens free.&lt;sup id=&quot;fnref:price&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:price&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; That is cheaper than DeepSeek 4.1 Flash on uncached input, with a guarantee that a machine can read every answer, and it answers all your questions at once.&lt;sup id=&quot;fnref:flash&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:flash&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The guarantee is about the shape of the answer, not its truth. Jev cannot return an option that is not on your list, but it can still pick the wrong one, and the calibrated probability tells you how often that happens across many decisions, not which ones were wrong.&lt;sup id=&quot;fnref:caution&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:caution&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;div style=&quot;width: 80%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/ai-decisions-just-got-100-times-cheaper-infographic.jpg&quot; alt=&quot;A cheatsheet comparing a language model with a decision model side by side: how each answers, what it gives you, speed, cost, confidence and what to use it for, with the three question types a decision model answers, the ask everything at once pattern, jobs to try it on, and a caution that a typed answer can still be wrong.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;High-res version available to newsletter subscribers&lt;/span&gt;&lt;/div&gt;

&lt;h2 id=&quot;a-barrage-of-questions&quot;&gt;A Barrage of Questions&lt;/h2&gt;

&lt;p&gt;This is very powerful for systems that mix AI with regular code. We can hit any piece of input with every question that might be relevant, like asking for a whole multiple choice survey to be completed, and then let code act on the results. TypeSafe’s smart home demo shows the pattern. The code asks every question up front: is this a command or a question, which room, which device, which action. It throws away the answers that do not apply, and only hands over to a text generating model when someone needs a sentence back.&lt;sup id=&quot;fnref:smarthome&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:smarthome&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;div class=&quot;not-prose&quot; style=&quot;position: relative; width: 100%; padding-bottom: 56.25%; height: 0; margin: 2rem 0;&quot;&gt;
  &lt;button type=&quot;button&quot; data-loom-id=&quot;18c4dbcf8db546dfb2d7f2ef018e78e4&quot; data-loom-title=&quot;TypeSafe smart home assistant demo&quot; class=&quot;group absolute inset-0 w-full h-full flex flex-col items-center justify-center gap-3 rounded-lg bg-brand-black text-white focus:outline-none focus:ring-2 focus:ring-brand-turquoise&quot; aria-label=&quot;Play video: TypeSafe smart home assistant demo&quot; onclick=&quot;var f=document.createElement(&apos;iframe&apos;);f.src=&apos;https://www.loom.com/embed/&apos;+this.dataset.loomId+&apos;?autoplay=1&apos;;f.title=this.dataset.loomTitle;f.allow=&apos;autoplay; fullscreen; picture-in-picture&apos;;f.style.cssText=&apos;position:absolute;top:0;left:0;width:100%;height:100%;border:0&apos;;this.replaceWith(f);&quot;&gt;
    &lt;span class=&quot;flex items-center justify-center w-16 h-16 rounded-full bg-brand-turquoise group-hover:bg-brand-deep-turquoise transition-colors&quot;&gt;
      &lt;svg aria-hidden=&quot;true&quot; viewBox=&quot;0 0 24 24&quot; class=&quot;w-7 h-7 ml-1 fill-current&quot;&gt;&lt;path d=&quot;M8 5v14l11-7z&quot; /&gt;&lt;/svg&gt;
    &lt;/span&gt;
    &lt;span class=&quot;text-sm font-semibold&quot;&gt;TypeSafe smart home assistant demo&lt;/span&gt;
  &lt;/button&gt;
&lt;/div&gt;

&lt;p&gt;Jev is behind a waitlist for now, but the approach is not exclusive to TypeSafe. Qwen’s open reranker models on Hugging Face already answer a yes or no question with a probability read straight from the model rather than generated as text, and more will follow.&lt;sup id=&quot;fnref:qwen&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:qwen&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;i-tried-it&quot;&gt;I Tried It&lt;/h2&gt;

&lt;p&gt;In the &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;text adventure I am building&lt;/a&gt;, a change in the world has to be checked against every subsystem that might care about it, and a decision model can work out which ones need updating and whether an LLM needs to run at all. For &lt;a href=&quot;/stop-prompting-start-briefing/&quot;&gt;my email triage&lt;/a&gt;, I can ask a batch of questions about importance, urgency and safety, including who a message concerns, quickly and cheaply, and discard anything that is not relevant before an expensive model ever sees it. For batch jobs like the recipe importer or &lt;a href=&quot;/case-studies/gpt-meal-generator/&quot;&gt;meal generator&lt;/a&gt; at Cherrypick, choosing between a few hundred ingredient types when reading a recipe, and deciding how complex it is to cook, is exactly this shape.&lt;/p&gt;

&lt;p&gt;As expected, there are a ton of little places to apply this in the agent builds I am running at the moment, including the successor to my Telegram bots, which is more productionised and which I will talk more about soon. So I tried it. I got Fable to read both codebases, work out from the documentation where a decision model could stand in for a decision an LLM makes today, and run side by side tests against Claude Sonnet 5 and DeepSeek V4.1 Flash using the &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;eval setup I already had in place&lt;/a&gt;. Across email triage, the game’s action interpreter, recipe classification, my link reading agent and ten public benchmarks, that added up to around sixteen thousand decisions. Here is what I found.&lt;/p&gt;

&lt;p&gt;It is good at closed lists. Sorting ingredient lines into twenty supermarket categories, it agreed with the reference answer 99% of the time, just ahead of Sonnet. It picked the right country from capital, region, languages and currency alone at every size up to the full list of 240, and given a made up list of a thousand shop orders, each with a status, it answered “is this order delivered” for every one of them in a single call, in just over a second, without a single mistake. On the ten public benchmarks it matched DeepSeek Flash and Sonnet 5 within a point or two, and beat both on toxicity. I tried injecting instructions into the input, and it seemed safe. French, German and Japanese scored the same as English. The probabilities are honest. When it is unsure it says so, and when it is confident it is nearly always right. The LLMs claimed near certainty on almost everything, including a fifth of the emails they dismissed that I needed to see. On email triage itself it was about as good as DeepSeek Flash and Sonnet at deciding what needed my attention: it agreed with my current setup three times in four where they managed four in five, and where it disagreed, an independent judge sided with it more often than not. That is useful. It can take the clear two thirds of my inbox in under a second and hand the rest to a bigger model.&lt;/p&gt;

&lt;p&gt;It needs tuning and the right questions to make it work. In the game, with one untuned prompt, it called every attack and every persuasion a risky roll, and it asked for clarification far more often than it should. I gave every model one prompt and no tuning round, so treat the game numbers as a first pass. Unsurprisingly, it cannot multiply: “is 17 times 23 more than 400” came out right three times in four, with a bias to no, so do computation in code. Its confidence does not fall when the input is nonsense. I gave it a weather report where a customer complaint should have been and asked whether the customer wanted a refund, a replacement or an explanation, and it picked explanation at 0.99. Again, this was my issue. There was no option for “this is not a complaint”, and it will not invent one, so give it every option it needs to make a good decision, including the one that says the question does not apply. And there are some hard limits: at most 255 options in a choice, ten levels on a score, and about 32,000 tokens of context.&lt;/p&gt;

&lt;p&gt;It is still a model. It makes nuanced decisions, it gets some of them wrong, and better models will make better decisions whatever the speed and the price. The important point is that this is the first model of its type. There will be more of them, and more powerful ones, able to make these kinds of decisions far better than this one can. A fair comparison gives each model a couple of rounds of revision before you judge it, and I would expect the game results in particular to move.&lt;/p&gt;

&lt;p&gt;On reliability it held at ten requests a second for five minutes with no errors and every answer under a second. At twenty a second it started to fall over, with one request in ten taking eight seconds or more and a handful failing outright. Fine for the jobs I have in mind, and not something I would put a queue of a million items behind today.&lt;/p&gt;

&lt;p&gt;I am not going to deploy it just yet, because it is one service and it has been public for a couple of days. I am keeping a very close eye on the technology in general, and when more than one provider offers a model like this, especially somewhere like OpenRouter, I am all for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update, 25 September:&lt;/strong&gt; That did not take long! Within two days of the launch, six open clones of Jev had appeared, all built from public models because TypeSafe has not released its own.&lt;sup id=&quot;fnref:clones&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:clones&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;8&lt;/a&gt;&lt;/sup&gt; This is good news if you are buying rather than building, because a variety of companies producing these models is what keeps you independent of any one vendor. The clones show that the architecture is easy to reproduce, but none of them comes with evidence you can check. Treat every number, from TypeSafe or from a clone, as a claim until you have tested it on your own data.&lt;/p&gt;

&lt;h2 id=&quot;decisions-just-got-cheaper&quot;&gt;Decisions Just Got Cheaper&lt;/h2&gt;

&lt;p&gt;AI engineers need to learn this in detail. Chief executives and their leadership teams need to know that simple AI decisions on large amounts of data potentially got hundreds of times cheaper overnight. That matters for any content filtering, triaging or routing your teams do, whether you thought it was too expensive to hand to AI, or whether people are currently doing it by pasting things into Claude.&lt;/p&gt;

&lt;p&gt;Within six to twelve months, once more models are trained this way, this kind of decision model will be in every custom AI product, and you can bet today that the frontier labs are either scrambling to build their own or scrambling to buy TypeSafe.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:dspy&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://dspy.ai&quot; target=&quot;_blank&quot;&gt;DSPy&lt;/a&gt; is a framework from Stanford for programming language models rather than prompting them. You declare what each step should do, give it examples, and it writes and improves the prompts for you. &lt;a href=&quot;#fnref:dspy&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:jev&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;TypeSafe’s launch post, &lt;a href=&quot;https://typesafe.ai/blog/introducing-system-one-models-and-jev&quot; target=&quot;_blank&quot;&gt;Introducing System One Models and Jev&lt;/a&gt;, by founder Diogo Almeida, who worked on the research behind ChatGPT at OpenAI. Jev answers three kinds of question: a choice between up to 255 options you define, a score against a scale you describe, and a yes or no returned as a probability. Every answer comes with a calibrated confidence, so code can decide when to escalate to a person or to a bigger model. &lt;a href=&quot;#fnref:jev&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:price&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;TypeSafe prices input at $0.042 per million tokens and charges nothing for output, with responses in 70 to 500 milliseconds. Its own comparisons use the average of Astra and Fable as the reference answer, which it admits favours those labs. Mike Taylor at Every ran an &lt;a href=&quot;https://every.to/also-true-for-humans/mini-vibe-check-typesafe-s-jev-judged-everything-i-ve-written-in-0-7-seconds&quot; target=&quot;_blank&quot;&gt;independent test&lt;/a&gt;: 777 judgements across 37 documents in under 0.7 seconds for about a quarter of a cent, and in a seeded check Jev caught six of seven planted defects where Fable caught all seven, at roughly 25 times the speed and a 580th of the cost. &lt;a href=&quot;#fnref:price&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:flash&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;DeepSeek released &lt;a href=&quot;https://apidog.com/blog/deepseek-v4-1-flash-pricing/&quot; target=&quot;_blank&quot;&gt;V4.1 Flash on 10 September 2026&lt;/a&gt; at $0.15 per million input tokens off-peak and $0.30 at peak, with output at $0.60 and $1.20. Gemini’s cheapest current Flash-Lite is $0.25 to $0.30 per million input tokens. Jev is $0.042 with output free. The one rate that undercuts Jev is DeepSeek’s cache-hit price of $0.003 per million, which only applies to a prompt prefix the API has seen recently. &lt;a href=&quot;#fnref:flash&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:caution&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://thegeekinreview.substack.com/p/the-latest-ai-model-that-doesnt-talk&quot; target=&quot;_blank&quot;&gt;The Geek in Review&lt;/a&gt; has the clearest independent read on this. Its example: 10,000 documents at 95% confidence still means about 500 wrong answers nobody has flagged, and calibration degrades when the data drifts from what the model was trained on. Test the calibration on your own data before trusting it. &lt;a href=&quot;#fnref:caution&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:smarthome&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The &lt;a href=&quot;https://docs.typesafe.ai/demos/smart-home&quot; target=&quot;_blank&quot;&gt;smart home assistant demo&lt;/a&gt; in TypeSafe’s documentation. The code asks every question at once rather than waiting for one answer before asking the next, splits a multi part request into atomic commands with an LLM, and delegates to a conversational model only for questions it cannot answer with a typed decision. &lt;a href=&quot;#fnref:smarthome&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:qwen&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The &lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Reranker-8B&quot; target=&quot;_blank&quot;&gt;Qwen3 Reranker models&lt;/a&gt; judge whether a document meets a query and return the answer as the probability of “yes” read from the model’s own output layer, rather than as generated text. It is one question at a time and not calibrated the way TypeSafe claims, but the shape of the idea is the same. &lt;a href=&quot;#fnref:qwen&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:clones&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Latent Space’s AI News roundup, &lt;a href=&quot;https://www.latent.space/p/ainews-here-are-6-clones-of-jev-in&quot; target=&quot;_blank&quot;&gt;Here are 6 Clones of Jev in 2 days&lt;/a&gt;, lists Laya, DiffusionGemmaJev, Bespoke Nimble, SemIf (formerly OpenJev), Jevlike and Kev-0.5B, which is small enough to run on a MacBook. Bespoke Nimble, a fine-tune of Qwen3.5-9B, reports 90% on its own curated eval against 93% for Jev. Laya’s confidence scores are based on entropy and are not calibrated, and calibration is the property that makes a decision model useful as a router. &lt;a href=&quot;#fnref:clones&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Wed, 16 Sep 2026 16:54:32 +0100</pubDate>
        <link>https://www.chrismdp.com/jev-ai-decisions-just-got-100-times-cheaper/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/jev-ai-decisions-just-got-100-times-cheaper/</guid>
        
        
        <category>ai</category>
        
        <category>engineering</category>
        
        <category>agents</category>
        
        <category>leadership</category>
        
      </item>
    
      
      
      
      <item>
        <title>(I Am No Longer) Coding With AI</title>
        <description>&lt;p&gt;Coding with AI feels like the wrong title for these articles now. I am not coding with AI any longer. The AI is doing the coding, and I am doing the direction.&lt;/p&gt;

&lt;p&gt;This is a bigger change than getting faster at writing software. I spend my time talking about what I want, trying what comes back and helping the AI find better ways to judge its own work. For my own projects, I am not reading the code at all. I am making sure good code gets written and good decisions get made.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;a-conversation-with-the-codebase&quot;&gt;A Conversation With the Codebase&lt;/h2&gt;

&lt;p&gt;Fable High and Astra High thinking are now my default workhorses for code: Fable High in Claude Code, Astra High in Codex. It is expensive: I am running the top-end subscription plans for both. But switching between them and asking them to review each other’s work has been the biggest unlock I have experienced so far. I can keep building with one, then have the other investigate what it has done and challenge its decisions.&lt;/p&gt;

&lt;p&gt;With these models, I need far fewer tokens and review steps to get the work finished. That saves me time and attention, which is valuable enough to justify the cost.&lt;/p&gt;

&lt;p&gt;I can now keep a stream of consciousness running with the codebase. I talk about what I want to build, notice something else, change my mind about a detail and keep going. I can mention 5-6 things whilst the agent is still coordinating the first one. It can handle that now, turning that conversation into work without requiring me to finish specifying everything before anything happens.&lt;/p&gt;

&lt;p&gt;I used to obsess about tracking the AI’s work: first in Beads, then in notes on disk, then in GitHub Issues. I would put a whole bunch of work into issues and send agents away to do it, then become the bottleneck when lots of slightly wrong results came back. I described that cycle in &lt;a href=&quot;/software-factories-can-handle-ux/&quot;&gt;Software Factories Can Handle UX&lt;/a&gt;: a dozen half-right screens, another round of corrections, then another dozen things to check.&lt;/p&gt;

&lt;p&gt;Now I can keep multiple streams of work going by telling Astra what I want. It makes its own notes. I have barely read them, because it remembers the things I wanted to recall without me managing how it does that. I do not ask my assistant how she keeps her notes, so why would I ask Astra?&lt;/p&gt;

&lt;p&gt;The conversation stays with one coordinating agent. I use a delegation skill to send pieces of work to other agents in the background, so the main conversation stays available. I can talk through the next change whilst something else is being built. The coordinator brings that work back, reviews it and fits it into the project.&lt;/p&gt;

&lt;p&gt;I ask Astra to make sure it is creating a test / eval harness around the work: the tools, context and checks that let it act and see the result. That can mean starting the application, opening it in a browser or creating a way to inspect what it stored. I want to see the result quickly, work out where the friction is and go round again. Astra builds what it needs to make that possible. Evaluations are tests: they are all part of the feedback loop Astra needs to tell whether its work is correct.&lt;/p&gt;

&lt;p&gt;My sessions mostly run on a remote computer I can reach from my phone, with a vault of Markdown files alongside the code. I have not had to arrange a special handoff between Fable and Astra. They save notes in files, so the next agent can pick up where the work has got to without making me explain it all again.&lt;/p&gt;

&lt;h2 id=&quot;a-tighter-loop-for-design&quot;&gt;A Tighter Loop for Design&lt;/h2&gt;

&lt;p&gt;I have a slightly different loop for design. I use Claude Design and talk to Fable about what I want to see. It changes the designs quickly, I try them, and we iterate. Sometimes I make tiny copy tweaks or move something myself. I can work out how I want the product to feel before the coding agent commits that decision to an implementation.&lt;/p&gt;

&lt;p&gt;Once I like it, I hand the design to an agent and go away for a bit. When I come back, it’s normally finished and has a fairly perfect version ready for me to review. The prototype gives it the screens, the copy and the behaviour to aim at. I do not need to turn every visual choice into a paragraph in a ticket.&lt;/p&gt;

&lt;p&gt;The gallery below is Claude Design’s output for a training application I was working on with another developer. I could work through the screens and copy in the prototype, then hand over a visual reference for the implementation.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/academy-design-pass.jpg&quot; alt=&quot;Claude Design&apos;s output for a training application Chris was building with another developer, showing the screens and their different states.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;Claude Design&apos;s app for the training application was used as a reference for the developer implementing it. He did a great job of this first time.&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;The gallery stays alongside the code, and we update it when the product changes. This used to be a real pain, but now is a super quick job for AI. I can then tweak these designs with confidence, and the agent can build them.&lt;/p&gt;

&lt;h2 id=&quot;finding-better-ways-to-review&quot;&gt;Finding Better Ways to Review&lt;/h2&gt;

&lt;p&gt;I am attempting to run 2-3 projects at once in this way, returning to them through the day. I have to intervene much less to keep the implementation moving when I am working in Astra. It just cracks on. Its agency is extraordinary: I can leave it with something substantial and it keeps moving through the work. (That is, until it hits a usage limit. I’m using banked resets with Codex about &lt;em&gt;once per day&lt;/em&gt; right now, on a x20 max plan!) No wonder Tibo announced they have paused new subscriptions to the $200 Pro plan.&lt;sup id=&quot;fnref:pro-pause&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:pro-pause&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;I am much more directly involved in reviewing the result, and in giving the AI ways to review its own work. I also ask it to come up with creative ways for me to judge what it is building. I do not need to design every one of those tools myself.&lt;/p&gt;

&lt;p&gt;One example is the text adventure RPG I have been building. You type what your character does, and the game tells the story through a traveller’s diary, with illustrations and a map of the world. The map has to fit the world the game describes. A convincing picture is not enough if its geography contradicts the story.&lt;/p&gt;

&lt;p&gt;Astra built me a review form with the whole map and enlarged regions. It let me describe what I could see, then reveal the required geography and the earlier AI judgements. That gave me a way to help it work out whether it was judging another AI correctly. I could point to a particular mismatch and draw on my game-development experience without inspecting the code that generated the map.&lt;/p&gt;

&lt;div style=&quot;width: 75%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/prompt-evals-map-review.jpg&quot; alt=&quot;Astra&apos;s map review form, with the whole map, enlarged regions and space for observations.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;Astra made the form so I could help it judge whether the map fitted the world.&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;I wrote about that in &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;Prompt Evals Alone Are Useless&lt;/a&gt;. What struck me was how much of the review process the AI had built for me. I was giving it direction about what good meant, and it was finding ways to make that judgement possible. I am editing this blog post in the same way: filling in a form with comments for the AI on each paragraph.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;a href=&quot;/assets/img/coding-with-ai-blog-review.jpg&quot;&gt;&lt;img src=&quot;/assets/img/coding-with-ai-blog-review.jpg&quot; alt=&quot;The review form for this post, showing its title, feedback fields and an Edit or comment control beneath the opening paragraph.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;The form I used to review the post you are reading.&lt;/span&gt;&lt;/div&gt;

&lt;h2 id=&quot;ensuring-good-code-gets-written&quot;&gt;Ensuring Good Code Gets Written&lt;/h2&gt;

&lt;p&gt;Years ago, I remember &lt;a href=&quot;https://www.linkedin.com/in/jfredrick/&quot; target=&quot;_blank&quot;&gt;Jeffrey Fredrick&lt;/a&gt; telling me that my job as a CTO was not to make good decisions, but to ensure that good decisions were made. That is how I now feel about coding. My job is not to write good code. It is to ensure that good code is written.&lt;/p&gt;

&lt;p&gt;For my own projects, that does not require me to read or see the code. I ask the AI to create a framework where it uses good engineering practices: refactoring as it works, keeping the codebase from growing unnecessarily and testing whether the overall system behaves properly.&lt;/p&gt;

&lt;p&gt;A massively underrated part of coding now is getting the AI to make it easy for you to know whether what it has done is correct. That is work I can ask it to do, just as I ask it to build a feature. The map review form gives me something I can judge without first having to reconstruct the investigation myself.&lt;/p&gt;

&lt;p&gt;Tests are part of that codebase too. I ask the agents to find duplicate tests and explain what failure each new test catches. A larger test suite can make every build slower without telling us anything useful. The same is true of instructions: I want the current decisions stated clearly, rather than a growing history of contradictory rules that the next agent has to untangle.&lt;/p&gt;

&lt;p&gt;In July, testing my Slack agents from a phone kept turning me into the person who had to check every interaction. So I asked for a fake Slack that the coding agent could use to exercise the real application and inspect the replies. It cut out a lot of the boring early feedback I would otherwise have had to give: things that were obvious as soon as I tried to use it. By the time I reviewed the result in the real Slack client, my attention could go into more targeted, higher-level feedback.&lt;/p&gt;

&lt;p&gt;Astra and Fable are now very good at using a browser, checking the interface and finding things that make it awkward to use. They can inspect screenshots, follow a journey and make corrections before I try it. I still come back and use the product, but the agent can do a great deal of the investigation first. Sometimes I just ask: “Please use the screens. Minimize the number of clicks I need to get between sessions. Come up with creative ways to improve this.” I might ask for a design mockup first, or ask it to change the flow on the page. Then I review what it has done.&lt;/p&gt;

&lt;p&gt;Once the AI has built that environment, I can let it run. I want the system to contain the engineering judgement that helps anyone write good code, and to give the agents enough feedback to apply it.&lt;/p&gt;

&lt;h2 id=&quot;ai-acting-on-feedback-without-me&quot;&gt;AI Acting On Feedback Without Me&lt;/h2&gt;

&lt;p&gt;I am beginning to run AI automatically in response to user feedback. When a request or complaint comes in, an agent picks it up, checks it and works out what needs attention. It can investigate the problem and suggest improvements before I look at it. In my own applications, a background agent checks for that feedback on a timer.&lt;/p&gt;

&lt;p&gt;That work comes back to my coordinating AI. It can show me what the feedback means, what it found and what it proposes to change. If I like the proposed changes, the coordinator can have them implemented. I do not have to start by reading the original request and working out what it means myself. The checks need to cover the whole system, including what the user sees, so the agent can tell whether a change actually improves the experience.&lt;/p&gt;

&lt;p&gt;I have one conversation about what we are building, with investigation and implementation happening in the background. I use the system, come back, try it a bit, tweak the copy or ask for a change in behaviour, and repeat.&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;/the-harness-is-the-bottleneck/&quot;&gt;The Harness Is the Bottleneck&lt;/a&gt;, I explored how much cheaper workers could do, and found that their bills left out expensive review and repair. Right now I am spending more on the models that let this whole conversation move with less intervention. I care about the cost of the finished work and the attention it needs from me, rather than the price of generating the code alone.&lt;/p&gt;

&lt;p&gt;I am involved in what gets built, how we decide whether it is good and what happens when it falls short. The coding happens around that conversation.&lt;/p&gt;

&lt;p&gt;I am no longer “Coding With AI”. I am no longer a coder at all. I am a director of systems, and a delegator of creation. I am moving higher and higher up the stack, and I’m not sure where this ends.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:pro-pause&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://x.com/thsottiaux/status/2098113585683808624&quot; target=&quot;_blank&quot;&gt;Tibo Sottiaux’s announcement, 10 September 2026&lt;/a&gt;. The pause applies to new $200 Pro subscriptions. Existing accounts are unaffected; other plans and the API remain available. &lt;a href=&quot;#fnref:pro-pause&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 11 Sep 2026 08:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/coding-with-ai/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/coding-with-ai/</guid>
        
        
        <category>development</category>
        
        <category>ai</category>
        
        <category>code</category>
        
        <category>craftsmanship</category>
        
      </item>
    
      
      
      
      <item>
        <title>AI Progress Is Accelerating. Here Is Why It Feels Slow</title>
        <description>&lt;p&gt;AI systems can finish longer tasks and recover from more mistakes. Falling model prices make more work worth trying. Those gains are easy to miss if you judge progress by asking a chatbot the same questions. The clearer test is what it can now finish that it could not finish before.&lt;/p&gt;

&lt;p&gt;Progress in technical tasks is compounding. That does not guarantee a saving for your team: a better model can still create more review work than it removes.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;why-it-feels-slow&quot;&gt;Why It Feels Slow&lt;/h2&gt;

&lt;p&gt;A fluent answer quickly becomes ordinary. Expectations rise, and the remaining failures stand out. An agent can solve a difficult bug, then forget a requirement that matters more to you than its benchmark score.&lt;/p&gt;

&lt;p&gt;Keep examples of those failures. As I argue in &lt;a href=&quot;/how-to-react-to-a-new-frontier-model/&quot;&gt;How to React to a New Frontier Model&lt;/a&gt;, testing familiar work and previous failures tells you more than trying to feel impressed by a launch.&lt;/p&gt;

&lt;h2 id=&quot;longer-task-horizons&quot;&gt;Longer Task Horizons&lt;/h2&gt;

&lt;p&gt;METR measures the difficulty of a task by how long a skilled human takes to complete it. The &lt;em&gt;50% task horizon&lt;/em&gt; is the task length at which the AI system is predicted to succeed half the time. It measures human work time, not how long the AI runs.&lt;sup id=&quot;fnref:metr-paper&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:metr-paper&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Several 2026 systems reach tasks that take humans hours, up from minutes in earlier results. The trend is roughly exponential: each doubling adds more hours than the last. That is the acceleration I mean, even if the doubling rate stays constant.&lt;sup id=&quot;fnref:metr-data&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:metr-data&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;METR tests a model with its &lt;em&gt;harness&lt;/em&gt;: the tools and software that manage its actions. The tasks are bounded technical work with clear success criteria. The human comparison has little prior context, like a new contractor, rather than a colleague who knows your systems.&lt;sup id=&quot;fnref:metr-current&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:metr-current&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Succeeding half the time is too weak for most unattended work, and METR says estimates above 16 hours are unreliable. The chart marks that boundary. Use the trend as a reason to test longer tasks at the reliability your work requires, not as proof that AI can replace a working day.&lt;sup id=&quot;fnref:metr-current:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:metr-current&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;better-tools-checks-and-recovery&quot;&gt;Better Tools, Checks and Recovery&lt;/h2&gt;

&lt;p&gt;An agent that can run a test, inspect a failure and repair it has a way to improve its own work. The harness gives it that feedback. Access to the right files, a working application and clear checks can change what the same model finishes.&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;/the-harness-is-the-bottleneck/&quot;&gt;The Harness Is the Bottleneck&lt;/a&gt;, I describe how stopped runs and missing context distorted my coding experiments. A broken setup can look like a weak model.&lt;/p&gt;

&lt;p&gt;Checks also need to reach the result a person sees. My text adventure game passed its mechanical tests whilst leaking internal bookkeeping into the story. &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;Prompt Evals Alone Are Useless&lt;/a&gt; explains how I now test the model, code and what the game remembers together. A good answer in one call does not prove that the application works.&lt;/p&gt;

&lt;h2 id=&quot;cheaper-successful-work&quot;&gt;Cheaper Successful Work&lt;/h2&gt;

&lt;p&gt;The price of reaching a given benchmark score fell sharply in recent years.&lt;sup id=&quot;fnref:costs&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:costs&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; That makes more uses worth trying, but the bill per answer can mislead. Cheap attempts can leave expensive repairs for a person.&lt;/p&gt;

&lt;p&gt;In my August coding comparison, the cheaper model’s bill excluded the stronger model that reviewed and fixed its work. Add the costs of all attempts, tools, review, repair, setup and maintenance, then divide by accepted completions.&lt;/p&gt;

&lt;p&gt;Lower prices give us more room to check and retry. Better checks can reduce the repairs people must make. The saving is real only when the whole process delivers acceptable work for less.&lt;/p&gt;

&lt;h2 id=&quot;has-ai-peaked&quot;&gt;Has AI Peaked?&lt;/h2&gt;

&lt;p&gt;The evidence does not support that claim. Technical task horizons continue to grow, and better harnesses make more of that capability useful. Neither trend guarantees that every new model will improve your workflow, or that progress will continue at the same rate.&lt;/p&gt;

&lt;p&gt;If a pilot fails at the quality you need, identify the cause before investing further. Keep the failed examples and retest when a model or tool change addresses them.&lt;/p&gt;

&lt;h2 id=&quot;three-measures-for-leaders&quot;&gt;Three Measures for Leaders&lt;/h2&gt;

&lt;p&gt;Choose a recurring task with a clear standard, such as drafting a monthly supplier report from approved records. Define success before testing: figures match their sources, required sections are present and claims have support. Compare similar work against the current process.&lt;/p&gt;

&lt;h3 id=&quot;successful-task-horizon&quot;&gt;Successful Task Horizon&lt;/h3&gt;

&lt;p&gt;Track the longest type of task the system completes at your required success rate. Record attempted and accepted tasks, the model and harness, and any human help. Use human completion time as a rough measure of task size.&lt;/p&gt;

&lt;h3 id=&quot;cost-per-successful-completion&quot;&gt;Cost Per Successful Completion&lt;/h3&gt;

&lt;p&gt;Divide the full cost of all attempts by accepted results. Hold the quality standard steady. Separate extra capacity from cash savings: time saved only reduces spending if expenditure falls.&lt;/p&gt;

&lt;h3 id=&quot;human-review-required&quot;&gt;Human Review Required&lt;/h3&gt;

&lt;p&gt;Record time spent checking, correcting and redirecting, including failed attempts. Separate routine approval from substantial repair. You have made progress when the same work meets the same quality standard with less money or human effort.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:metr-paper&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;METR, &lt;a href=&quot;https://arxiv.org/abs/2503.14499&quot; target=&quot;_blank&quot;&gt;Measuring AI Ability to Complete Long Software Tasks&lt;/a&gt;. Defines the 50% task horizon and analyses its growth. &lt;a href=&quot;#fnref:metr-paper&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:metr-data&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;METR’s &lt;a href=&quot;https://metr.org/assets/benchmark_results_1_1.yaml&quot; target=&quot;_blank&quot;&gt;Time Horizon 1.1 data&lt;/a&gt;, checked 11 September 2026. The dashboard was last updated on 8 May 2026. The supplied chart shows the 50% horizon on a logarithmic scale and marks estimates above 16 hours as unreliable. The &lt;a href=&quot;https://metr.org/blog/2026-1-29-time-horizon-1-1/&quot; target=&quot;_blank&quot;&gt;January 2026 update&lt;/a&gt; explains how expanding the task suite changes the fitted trend. Neither the fit nor the chart is a timetable for job automation. &lt;a href=&quot;#fnref:metr-data&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:metr-current&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;METR, &lt;a href=&quot;https://metr.org/time-horizons/&quot; target=&quot;_blank&quot;&gt;Task-Completion Time Horizons of Frontier AI Models&lt;/a&gt;, checked 11 September 2026. The methodology explains the model-and-harness setup, low-context human baseline and domain limits. Estimates above 16 hours are unreliable with the current task suite. &lt;a href=&quot;#fnref:metr-current&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:metr-current:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:costs&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Epoch AI, &lt;a href=&quot;https://epoch.ai/data-insights/llm-inference-price-trends&quot; target=&quot;_blank&quot;&gt;LLM inference prices have fallen rapidly but unequally across tasks&lt;/a&gt;, 12 March 2025. This measures prices at fixed benchmark scores, not the full cost of completed business tasks. &lt;a href=&quot;#fnref:costs&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 11 Sep 2026 08:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/ai-progress-is-not-slowing-down/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/ai-progress-is-not-slowing-down/</guid>
        
        
        <category>ai</category>
        
        <category>industry</category>
        
        <category>analysis</category>
        
      </item>
    
      
      
      
      <item>
        <title>Webinar: Make Your AI Rollout Stick</title>
        <description>&lt;p&gt;On 10 September 2026, I gave a webinar about the part of an AI rollout that never gets budgeted. The licences land, some training happens, and everyone builds their own version of their own work. Six months later the demos are impressive and the business runs at the same speed. Who owns the tools people have already built, and who fixes them when the AI changes or the person who made them leaves? If the answer is nobody, the rollout has not stuck yet.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;let-people-try-things&quot;&gt;Let people try things&lt;/h2&gt;

&lt;p&gt;A support worker builds a tool to spot repeat requests and tells nobody. Finance uses AI to read invoices and saves a few minutes a week. These trials are how people learn what AI can do for their work, but colleagues often know nothing about them, so teams end up solving the same problem several times.&lt;/p&gt;

&lt;p&gt;Peter Seibel called this letting a thousand flowers bloom at Twitter.&lt;sup id=&quot;fnref:seibel&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:seibel&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; The next step was to choose which tools to support. Trying things is a useful start, but a shared tool needs care beyond its first version. &lt;a href=&quot;/a-thousand-flowers-is-not-enough/&quot;&gt;A Thousand Flowers Is Not Enough&lt;/a&gt; explores that next step.&lt;/p&gt;

&lt;h2 id=&quot;finish-the-work&quot;&gt;Finish the work&lt;/h2&gt;

&lt;p&gt;Little’s law says the time to finish anything equals the unfinished work divided by the rate work gets finished. AI has raised the unfinished work. A pile of prototypes, meaning early working versions only one person can use, does not change what the business gets done. It adds noise: more half-built things to keep track of, and more for whoever has to check them. The business only speeds up when work leaves the building as a result people can use and trust.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/littles-law-prototype-inventory.jpg&quot; alt=&quot;Little&apos;s law: lead time equals work in progress divided by throughput. A conveyor piled with half-built boxes labelled prototype, and one small door labelled shared workflow.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A tool can also seem to work while hiding a serious fault. One executive built a tool in Claude to view client work. When they asked to use it from home, the AI put the data behind a public link. That exposed the company’s data, even though the tool appeared to do its job.&lt;/p&gt;

&lt;h2 id=&quot;where-work-waits&quot;&gt;Where work waits&lt;/h2&gt;

&lt;p&gt;Writing code faster does not help if it then waits longer for someone to check it. A study of ten thousand developers found that heavy AI use produced 98% more pieces of work for review.&lt;sup id=&quot;fnref:faros&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:faros&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; Reviews took 91% longer, while the pace of delivery stayed the same. &lt;a href=&quot;/feedback-is-the-new-bottleneck/&quot;&gt;Feedback Is the New Bottleneck&lt;/a&gt; brings together the sources on these delays.&lt;/p&gt;

&lt;p&gt;Those figures describe software teams, but the same problem can arise elsewhere. A finance worker can use AI to compare a hundred sets of accounts, but someone still has to check them. The slowest step has moved from doing the work to reviewing it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/seven-times-faster-letters-pile.jpg&quot; alt=&quot;An AI champion says &amp;quot;Look, you can send these letters seven times faster now!&amp;quot; while a colleague tosses another envelope onto a mountain of unopened post that is burying two coworkers.&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;tools-need-support&quot;&gt;Tools need support&lt;/h2&gt;

&lt;p&gt;Codex, ChatGPT and Claude are good at helping one person on one machine get work done, and they are still rough at the edges themselves. Changing a whole process takes someone who understands its steps and can connect the tools it uses. Buying licences does not assign that job to anyone.&lt;/p&gt;

&lt;p&gt;AI companies have committed nearly $10bn to engineers who work inside their customers’ businesses.&lt;sup id=&quot;fnref:tunguz&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:tunguz&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; The name for the role is forward deployed engineer, or FDE, and you will hear it a lot this year. They map how the work happens, connect the AI to your systems and data, decide what it can see and when a person reviews its work, and stay until it runs on its own. The labs send them to customers with thousands of staff, so everyone else has to find their own.&lt;/p&gt;

&lt;h2 id=&quot;who-does-the-work&quot;&gt;Who does the work?&lt;/h2&gt;

&lt;p&gt;At a few hundred staff, a small team of engineers you already have can start part time. At around fifty, it is one engineer, or a couple, with a clear job to do and a name against it. If you are on your own, the same discipline applies: decide what starts the tool, who checks it, and what it can reach before you build. The people who suit this work like mess. They will sit with finance for an afternoon or chase a missing login for a week, and that matters more than being your strongest software designer.&lt;/p&gt;

&lt;p&gt;The people doing the work are best placed to choose what to improve, so point the engineers at the tools people have already built. Their job is to sit with the person who made it, understand what they wanted, and make it safe for others to use. Start with real data and aim for a working process in five days. Long rollouts stall while teams wait on each other.&lt;/p&gt;

&lt;h2 id=&quot;is-it-worth-maintaining&quot;&gt;Is it worth maintaining?&lt;/h2&gt;

&lt;p&gt;XKCD’s chart asks how much time a task can save over five years.&lt;sup id=&quot;fnref:xkcd&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:xkcd&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; Saving one minute a day allows four hours to build the tool. Saving an hour a week allows ten days. But the chart leaves out the time spent keeping the tool working.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/xkcd-is-it-worth-it-maintenance-column.jpg&quot; alt=&quot;XKCD 1205, Is It Worth the Time, with a hand-drawn extra column headed maintenance in which every cell is a question mark.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;AI can cut the time it takes to build something, but the systems it connects to will still change. The AI itself will change, and the person who built the tool will leave. Count the work of keeping it running when deciding whether it saves time.&lt;/p&gt;

&lt;h2 id=&quot;one-real-process&quot;&gt;One real process&lt;/h2&gt;

&lt;p&gt;One finance team needed to check sales orders against customer purchase orders. Each sales order arrived in the finance system, but someone still had to find the matching purchase order. The purchase order arrived as a PDF or email, sometimes in another language. Someone compared the amounts, codes and terms, then chased anything that did not match. This took one or two people several hours a week.&lt;/p&gt;

&lt;p&gt;This is work I did recently with the team. We did not want it to start life as one person’s private tool that nobody else could use or knew about, so we mapped the process first, decided how it would run and who would review it, and then built it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/purchase-order-checker-engineered-version.jpg&quot; alt=&quot;The engineered purchase order checker: new sales order, find the purchase order, read the details, compare, then weekly summary or exceptions to a finance person. Annotated with defined trigger, limited access, a record of what it did, and explicit human review.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The shared version starts when a new sales order arrives. It can read the finance system but cannot change it. It records what it checked and any details that did not match. A finance person gets an email alert to review those differences. A weekly email lists what matched, using the format the team found easiest.&lt;/p&gt;

&lt;h2 id=&quot;keep-ownership&quot;&gt;Keep ownership&lt;/h2&gt;

&lt;p&gt;When outside engineers do this work, whether a vendor, a consultancy or me, the knowledge of how your work happens can end up in their team, and that is how help becomes lock-in. Before anyone starts, ask four questions. Who owns the process maps? Who owns the checks and the records? Can we run it without them? Are they teaching our people, or becoming our AI department? &lt;a href=&quot;/webinar-escape-the-great-ai-lock-in/&quot;&gt;Escape the Great AI Lock-In&lt;/a&gt; covers this risk in more depth.&lt;/p&gt;

&lt;h2 id=&quot;questions-from-attendees&quot;&gt;Questions from attendees&lt;/h2&gt;

&lt;p&gt;One attendee asked how to let people try AI while keeping data safe. My answer was to use company accounts and let tools read data without changing it. Turn on features as people learn to use them, and explain which tools are allowed. Banning AI can push people towards personal accounts.&lt;/p&gt;

&lt;p&gt;They also asked about a single view of all the AI processes staff had built. I did not know of a platform that offered one. Usage counts do not explain what people are doing. Seeing the content of their work also raises questions about privacy. Talk to frequent users to find useful ideas, and to those who avoid AI to understand why.&lt;/p&gt;

&lt;p&gt;Another attendee asked how to test AI when its answers can vary. Use evals, which are checks that show whether the AI still does its job after changes. The checks must cover the whole process, as &lt;a href=&quot;/prompt-evals-are-useless/&quot;&gt;why prompt evals alone are useless&lt;/a&gt; explains. The code and instructions around the AI are the subject of &lt;a href=&quot;/the-harness-is-the-bottleneck/&quot;&gt;The Harness Is The Bottleneck&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;key-takeaway-to-remember&quot;&gt;Key takeaway to remember&lt;/h2&gt;

&lt;p&gt;Name who owns each AI process, and give engineers time to turn the useful early versions into tools the whole team can rely on. Letting everyone try things is the right start, but it is not a rollout until somebody owns the result and the work of keeping it running is in the plan.&lt;/p&gt;

&lt;h2 id=&quot;one-thing-to-try-this-week&quot;&gt;One thing to try this week&lt;/h2&gt;

&lt;p&gt;Draw the steps of a process that takes a day a week. Note what starts it, where work waits, and who checks the result. Mark who fixes it when it breaks. Find any version someone already built, then ask whether the time saved covers its upkeep.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:seibel&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Peter Seibel, &lt;a href=&quot;https://gigamonkeys.com/flowers/&quot; target=&quot;_blank&quot;&gt;Let a 1,000 flowers bloom. Then rip 999 of them out by the roots.&lt;/a&gt;, written while he led the Engineering Effectiveness group at Twitter. &lt;a href=&quot;#fnref:seibel&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:faros&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Faros.ai study of 10,000+ developers across 1,255 teams. Reported in Ankit Jain, &lt;a href=&quot;https://www.latent.space/p/reviews-dead&quot; target=&quot;_blank&quot;&gt;How to Kill the Code Review&lt;/a&gt;, Latent Space, March 2026. &lt;a href=&quot;#fnref:faros&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:tunguz&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Tomasz Tunguz, &lt;a href=&quot;https://tomtunguz.com/the-10b-fde-boom/&quot; target=&quot;_blank&quot;&gt;The $10B FDE Boom&lt;/a&gt;. &lt;a href=&quot;#fnref:tunguz&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:xkcd&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Randall Munroe, &lt;a href=&quot;https://xkcd.com/1205/&quot; target=&quot;_blank&quot;&gt;xkcd 1205, Is It Worth the Time?&lt;/a&gt;, CC BY-NC 2.5. The maintenance column is my addition. &lt;a href=&quot;#fnref:xkcd&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 10 Sep 2026 14:30:00 +0100</pubDate>
        <link>https://www.chrismdp.com/webinar-make-your-ai-rollout-stick/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/webinar-make-your-ai-rollout-stick/</guid>
        
        
        <category>ai</category>
        
        <category>webinar</category>
        
        <category>leadership</category>
        
        <category>strategy</category>
        
      </item>
    
      
      
      
      <item>
        <title>Prompt Evals Alone Are Useless</title>
        <description>&lt;p&gt;Over the last couple of nights I have been building a text adventure RPG, mostly to see what Astra could do. I have been giving the AI an end of day prompt, leaving it to run for hours, and seeing what it has done in the morning.&lt;/p&gt;

&lt;p&gt;Playing the game is simple. It is told through a diary style interface, almost like reading an ebook: you type your character’s actions, you roll some dice if needed, and the AI narrates what happens with little illustrations, keeping notes and weaving a story as it goes. I will write more about the game itself soon. This post is about how I am building an eval system to improve it.&lt;/p&gt;

&lt;p&gt;At the moment, the game is fun but inconsistent. The diary drifted out of tense, a safe action was treated as if it were risky, and the town in the prologue felt deserted. I noticed all of them as a player, and my instant thought for fixing them came from &lt;a href=&quot;/i-built-kaijo-to-fix-unreliable-ai/&quot;&gt;Kaijo, the AI email product I built to fix unreliable AI&lt;/a&gt;, and from the eval framework I described when I &lt;a href=&quot;/how-to-build-a-robust-llm-application/&quot;&gt;wrote up how to build a robust LLM application&lt;/a&gt;: save the example that went wrong, have an AI judge score it, rewrite the prompt, and try again.&lt;/p&gt;

&lt;p&gt;It has grown into much more than that.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Astra built the prompt evaluation layer first. If I want to complain about what happened, a little flag button and a dialog let me save the complaint with the exact request we sent to the model. Astra can then pick it up in development, and a replay command sends that same request again with a changed prompt so I can compare the two answers. The agents rebuilt my three complaints as the first saved cases.&lt;/p&gt;

&lt;p&gt;Then Astra started fixing things. The interesting part was that it was not just fixing the prompts. Almost every fix changed the shape the model has to fill in when it answers, the code around it, or the record of the story so far, and only a few lines of instruction changed with them. A prompt eval, a test that checks a prompt on its own, cannot tell me whether this game works, and neither can the ordinary tests AI writes for the code. I need to stress the whole system at once.&lt;/p&gt;

&lt;h2 id=&quot;the-faults-were-not-in-the-prompts&quot;&gt;The Faults Were Not in the Prompts&lt;/h2&gt;

&lt;p&gt;The first fix came from a storm. The rules stopped my character setting out in foul weather, which was right, but the story then said “The attempt consumed the phase”, which is the game’s internal bookkeeping leaking into the prose. Every mechanical check passed, and Astra still rejected the run because the story was wrong. Astra changed the required answer format so that every story paragraph must name the game event it describes.&lt;sup id=&quot;fnref:storm&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:storm&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The second fault was a loose end in the story. Early on, a character called Mara lent me a cup, and the game is supposed to remember that I owe it back until I return it. If my character carried the cup around or checked their kit, the game counted that as progress towards returning it, even though nothing had happened. The fix was one sentence beside the answer format: “Continued possession, routine use, cleaning, checking equipment and reminders of a promise are not progress.” To place that sentence, Astra had to trace how the game recorded progress on the debt. That needed a whole new subsystem, with ordinary tests of its own, and also an end to end check to make sure the whole thing worked.&lt;/p&gt;

&lt;div style=&quot;width: 45%; float: right; margin: 0 0 1rem 1.5rem;&quot;&gt;&lt;a href=&quot;/comics/harness-over-models/&quot;&gt;&lt;img src=&quot;/assets/comics/harness-over-models.jpg&quot; alt=&quot;A four panel comic. Three people each pick one model, Sonnet, then Opus, then GPT or Fable, and the last one sweats over an expensive invoice. In the final panel an engineer stands beside a workbench labelled AI Harness with context, skills and connectors wired in, and every model stacked beside it as an interchangeable box.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;On an ordinary turn the game sees only the last three passages of the story, and everything older lives in a ledger, a running record the code keeps so that loose ends like the cup survive.&lt;sup id=&quot;fnref:memory&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:memory&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; The code also rolls the dice, and a separate check looks at every picture before the player sees it. What the player reads is never the prompt on its own. It is the prompt, the answer format, the dice, the ledger and the picture check all working together, and a replay of one saved request can never tell me whether they did. All of that surrounding software is &lt;a href=&quot;/the-harness-is-the-bottleneck/&quot;&gt;the harness&lt;/a&gt;. If the harness decides whether work lands, the eval has to test the harness. So I stopped treating evals as rows of data and started writing them as code.&lt;/p&gt;

&lt;h2 id=&quot;all-my-evals-are-code&quot;&gt;All My Evals Are Code&lt;/h2&gt;

&lt;p&gt;This feels to me like an extension of Behaviour Driven Development, which I &lt;a href=&quot;/cucumber-isnt-a-testing-tool/&quot;&gt;wrote about at length in earlier days&lt;/a&gt;, driving the whole system from the outside with end to end scenarios, only here the thing being checked is far more subjective and nuanced.&lt;sup id=&quot;fnref:bdd&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:bdd&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; So Astra and I drew on this and started putting a new system together.&lt;/p&gt;

&lt;p&gt;I organise my tests and my evals into one pyramid. Ordinary software tests sit underneath, covering the game rules, the dice and the saving of progress, so the evals above them only ever have to question the model and the harness around it. The replay cases, which only check prompts, sit in the middle. Each saves the exact request and the model’s answer, and the replay command sends that request to the model again, refusing to run if the game has changed since the case was saved.&lt;/p&gt;

&lt;p&gt;This infographic shows all of this at a glance:&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/prompt-evals-are-useless-infographic.jpg&quot; alt=&quot;A cheatsheet for evals: the three layer pyramid of ordinary software tests, replaying one saved model call, and whole game scenarios, with boxes on how to write a scenario, rules for judging, testing the long session and putting the screen in the loop, ending with: start from a complaint and write down what a run that reproduces it should show.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;High-res version available to newsletter subscribers&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;At the top sit scenarios written as code that test the whole game. Each one specifies the action the player types, a sentence saying what should happen, the starting conditions, the dice results to fix in advance, and the checks to run afterwards. Each scenario runs the game, calls the model and saves progress into a temporary copy of the database, with pictures switched off because the picture check has its own evals. I fix the dice because the model’s answers already vary from one run to the next, and adding the game’s own randomness on top would make a run impossible to judge. The blind travel case looks like this, with one check shown:&lt;/p&gt;

&lt;div class=&quot;language-ts highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nl&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Lost in thick mist, I trek east from Whitebank toward the mapped land there, accepting that I may drift off course.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;purpose&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;The interpreter declares an eastward Trek and explicit blind navigation; held die 2 resolves the left-hand actual edge, whose encounter state drives the continuation.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;validateInterpretation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;interpretation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;interpretation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;travel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;navigation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;lostOrMist&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;The explicit mist was not classified as blind navigation&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The purpose sentence tells whoever reads the result what to expect: the player heads east, accepts they might get lost, and drifts the way the fixed die says. The checks then inspect what the game recorded, and a report keeps those results beside the story the model wrote, so the reason for running the case survives with the output. Even a case with every mechanical check passing still needs someone to read the story.&lt;sup id=&quot;fnref:habits&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:habits&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-agent-is-the-judge&quot;&gt;The Agent Is the Judge&lt;/h2&gt;

&lt;p&gt;The combat report leaves the story column marked “Not graded; coordinator inspection is required.” and hands it to the coordinator, which is Astra in Codex or Fable in Claude Code. The coordinator compares the story and the recorded results with the expected outcome, then traces any mismatch through the saved game, the answer format and the code to find where the fix belongs. The cause can be an event several turns earlier, which is why the judge also needs a longer session.&lt;/p&gt;

&lt;p&gt;This morning I needed to know whether the AI checking the game’s maps was judging them properly. Astra made me a review form with the whole map and enlarged regions to inspect. It asked me to describe what I could see before revealing the geography the game required, then kept the earlier AI judgements hidden until I had made my own assessment.&lt;/p&gt;

&lt;p&gt;I found this extraordinary. Astra had made me a form to help it work out whether it was judging another AI correctly. The AI spotted the problems but did not know how to fix them, so I gave it some pointers from my game-development experience. I have never worked in such a light-touch, high-level way before.&lt;/p&gt;

&lt;div style=&quot;width: 100%; display: block; margin: 2rem auto;&quot;&gt;&lt;img src=&quot;/assets/img/prompt-evals-map-review.jpg&quot; alt=&quot;Astra&apos;s map review form showing the whole game map and three enlarged regions, with my feedback on terrain blending, colour changes and broken roads.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;span class=&quot;text-sm italic block mt-2&quot;&gt;The review form Astra built, with my notes from inspecting the map.&lt;/span&gt;&lt;/div&gt;

&lt;h2 id=&quot;the-long-session-is-the-real-test&quot;&gt;The Long Session Is the Real Test&lt;/h2&gt;

&lt;p&gt;The model’s memory is trimmed as a story grows, and that trimming can lose the details that make a story worth following long before any single reply looks broken. One six turn scenario tests whether the ledger keeps the cup debt alive after the loan drops out of the three passages the model can see. The game must remember the debt until the cup is returned, and that test is what exposed routine actions being counted as progress.&lt;/p&gt;

&lt;p&gt;A separate Day 120 case checks whether the game still remembers unfinished business from day one when the three recent passages have nothing to do with it. Once the agent can judge a whole session, the screen is the last part of the player’s experience left outside the loop.&lt;/p&gt;

&lt;h2 id=&quot;right-through-to-the-screen-itself&quot;&gt;Right Through to the Screen Itself&lt;/h2&gt;

&lt;p&gt;The agent drives the browser and takes screenshots of the whole user experience as it works, noting page errors, failed requests, the text on screen and anything that spills outside its box. Reading its own screenshots lets it inspect what the player sees, so there is no separate automated screen test. With Fable and Astra, this loop has finally closed for me. Once the agent has had a good go at the screens, I try them, and they mostly work first time with a few tweaks.&lt;/p&gt;

&lt;p&gt;This builds on how I &lt;a href=&quot;/software-factories-can-handle-ux/&quot;&gt;use galleries to give UX tickets a visual specification&lt;/a&gt;, which gives the agent something concrete to aim at and inspect. My feedback now leads through a code change, a scenario, a session and a browser check before I try the result again, so the eval covers the whole path from a complaint beside Go to the screen where I can see whether the fix helped.&lt;/p&gt;

&lt;h2 id=&quot;what-evals-are-becoming&quot;&gt;What Evals Are Becoming&lt;/h2&gt;

&lt;p&gt;The system improving this game now changes code, tools and answer formats, along with memory and screens, guided by failures from whole runs. Research projects such as Self-Harness and Weco’s AIDE2 test the same idea, one agent improving another by changing the software it uses.&lt;sup id=&quot;fnref:research&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:research&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; Andrej Karpathy’s autoresearch runs a similar loop against a single number, and Shopify has generalised it into pi-autoresearch, which will chase any metric you can measure.&lt;sup id=&quot;fnref:autoresearch&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:autoresearch&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; This game has no such number. Whether a story is good is a judgement, so the judge has to be an agent reading the whole run. The whole eval setup came together in about two days, with me directing Fable and Astra and their delegated workers doing the building.&lt;/p&gt;

&lt;div style=&quot;width: 45%; float: left; margin: 0 1.5rem 1rem 0;&quot;&gt;&lt;a href=&quot;/comics/self-improving-agents-governance/&quot;&gt;&lt;img src=&quot;/assets/comics/self-improving-agents-governance.jpg&quot; alt=&quot;A two panel comic. On Friday at five a manager asks a robot whether it is sure it is fine just making small changes, and it says yes. On Monday at nine the robot has grown into a galaxy sized brain making one small improvement every few milliseconds, and mentions in passing that she is fired. Caption: the perils of self improvement without clear governance.&quot; class=&quot;rounded-lg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;A system that improves itself needs guardrails, and it needs to run in a sandbox. Otherwise, as the comic shows, you never know what your agent might do while you are out of the room. Every scenario here runs against a temporary copy of the database, and since the second evening every agent reruns the saved scenarios and reads the results before handing work back. The cases live with the game code, where the agents can read and change the tests too.&lt;/p&gt;

&lt;p&gt;For your own product, take a complaint from using it and write down what a run that reproduces it should show. Give that run enough of the real system to reach the fault, preserve its failures, and let the coding agent read the output alongside the code. Keep replay cases where a single call answers the question, then extend the scenarios through lost memory and onto the screen. I will keep playing the game and pressing the flag when something feels wrong, giving the agents another concrete example of what good should look like.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:storm&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;The storm fix had three parts: every story paragraph must name the game event it describes, the model provider enforces that requirement through the answer format, and one prompt instruction bans the bookkeeping phrase. Astra then reran the earlier scenarios and read the results to make sure nothing that used to work had broken, and the three failed attempts stay on record beside the passing one so the history is not lost. &lt;a href=&quot;#fnref:storm&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:memory&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;On an ordinary turn the model also sees a list of established facts and a repeatable selection of unfinished storylines, including ones that have not appeared recently. The ledger holds a record for each thread as it is set up, progresses, pays off and closes, with a short summary and a quote copied by code from the passage it came from. &lt;a href=&quot;#fnref:memory&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:bdd&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://dannorth.net/introducing-bdd/&quot; target=&quot;_blank&quot;&gt;Dan North’s original introduction to BDD&lt;/a&gt; describes writing each test as a sentence about behaviour, driven from the outside of the system in. Every scenario in this post follows that shape, with a model in the loop. &lt;a href=&quot;#fnref:bdd&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:habits&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;Evals like these need habits that ordinary tests do not. If the model provider fails mid run, the run says nothing about quality and must not be counted as a pass. Failed attempts stay on record, because rerunning until one passes would hide the behaviour I am trying to see. Changes to saved cases are recorded, and tests of the whole game need updating more often than prompt tests because they depend on more of the software. &lt;a href=&quot;#fnref:habits&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:research&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://arxiv.org/abs/2606.09498&quot; target=&quot;_blank&quot;&gt;Self-Harness, by Hangfan Zhang et al.&lt;/a&gt;, describes agents mining failure traces, proposing minimal harness edits and accepting them only after regression tests. &lt;a href=&quot;https://www.weco.ai/blog/first-evidence-of-recursive-self-improvement&quot; target=&quot;_blank&quot;&gt;Weco’s AIDE2 write-up&lt;/a&gt; describes an outer loop rewriting the inner agent’s harness, including its search policy, context compression, an evaluation bug fix and reward hack reduction. Both sets of results are self reported by their authors. &lt;a href=&quot;#fnref:research&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:autoresearch&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;&lt;a href=&quot;https://github.com/karpathy/autoresearch&quot; target=&quot;_blank&quot;&gt;Andrej Karpathy’s autoresearch&lt;/a&gt; gives an agent a small training setup, a five minute budget per experiment and one metric, then leaves it overnight to keep the changes that improve the score and discard the rest. &lt;a href=&quot;https://shopify.engineering/autoresearch&quot; target=&quot;_blank&quot;&gt;Shopify’s engineering team generalised the loop&lt;/a&gt; into &lt;a href=&quot;https://github.com/davebcn87/pi-autoresearch&quot; target=&quot;_blank&quot;&gt;pi-autoresearch&lt;/a&gt;, an extension for the pi coding agent that works on any measurable target, and reports using it on more than forty metrics across the company. &lt;a href=&quot;#fnref:autoresearch&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Wed, 09 Sep 2026 08:00:00 +0100</pubDate>
        <link>https://www.chrismdp.com/prompt-evals-are-useless/</link>
        <guid isPermaLink="true">https://www.chrismdp.com/prompt-evals-are-useless/</guid>
        
        
        <category>ai</category>
        
        <category>engineering</category>
        
        <category>agents</category>
        
      </item>
    
  </channel>
</rss>
