# 100x: My journey on the exponential

> A five-gear model for working with AI agents, marked 1x to 150x in expert-hours per hour of your own, built from one practitioner's numbers and graded evidence.

- Canonical: https://hcd.ai/ai-in-practice/100x-my-journey-on-the-exponential/
- Published: 2026-08-24
- Updated: 2026-08-24
- Author: Sasha Merzliakov (https://hcd.ai/about/)
- Pillar: AI in Practice

---


<p class="direct-answer" data-direct-answer="true">100x is about using agentic AI to multiply the hours of work completed by a person to produce exponential outcomes. We all know using our favourite AI saves time, the question is how far can you really take this? This article shares my journey to date, a structured approach focused on speed, scale, and secondarily, learnings on how to minimise breaking things as you shift up through the gears.</p>

<nav aria-label="Article sections" style="margin: 1.5em 0; padding: 1em 1.5em;">
<p style="margin: 0 0 0.5em; font-weight: 500;">In this article</p>
<ul style="margin: 0; padding-left: 1.2em; line-height: 1.8;">
<li><a href="#gears">Shifting through the gears</a></li>
<li><a href="#detail">Each gear in detail</a></li>
<li><a href="#so-what">What this adds up to</a></li>
<li><a href="#key-learnings">Key learnings</a></li>
<li><a href="#where-to-next">Where to next</a></li>
<li><a href="#faqs">Frequently Asked Questions</a></li>
</ul>
</nav>

<h2 id="gears" style="scroll-margin-top: 6rem;">Shifting through the gears</h2>

<p>I'd like to think of it as a gearbox. In first gear you're doing the work yourself, every gear thereafter hands a different part of that work to something else. Each shift accelerates what one hour of yours produces.</p>


<figure class="not-prose my-10">
<div class="plate plate-a">
<div class="ptitle"><b>The gearbox &#8211; which gear are you in?</b><span>&#169; hcd.ai</span></div>
<p class="t-label d-ink3" style="margin:-8px 0 14px; letter-spacing:1.4px; font-size:11.5px; color:var(--ink-3);">WHERE &#215;h IS THE WORK PRODUCED FOR ONE HOUR OF EFFORT</p>
<div class="pscroll" role="region" tabindex="0" aria-label="Output per hour of your own time across five gears. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 372" role="img" aria-labelledby="gbTitle gbDesc">
<title id="gbTitle">Output per hour of your own time across five gears</title>
<desc id="gbDesc">A curve on a linear axis running from zero to 150. Gear 1, human only, is 1 times h by definition. Gear 2, chat in a browser or app, 2 times. Gear 3, voice, 3 times. Gear 4, agents in five sessions, 15 times. Gear 5, an orchestrator running workers in parallel, 150 times. The climbing line is the argument: each gear multiplies the one before it. </desc>
<line class="d-grid" x1="70" y1="220.5" x2="656" y2="220.5"/>
<line class="d-grid" x1="70" y1="140.5" x2="656" y2="140.5"/>
<line class="d-grid" x1="70" y1="60.5" x2="656" y2="60.5"/>
<line class="d-axis" x1="70.5" y1="40" x2="70.5" y2="300.5"/>
<line class="d-axis" x1="70" y1="300.5" x2="656" y2="300.5"/>
<text class="t-value d-ink3" x="60" y="304.0" text-anchor="end">0&#215;</text>
<text class="t-value d-ink3" x="60" y="224.0" text-anchor="end">50&#215;</text>
<text class="t-value d-ink3" x="60" y="144.0" text-anchor="end">100&#215;</text>
<text class="t-value d-ink3" x="60" y="64.0" text-anchor="end">150&#215;</text>
<path class="d-series is-claim" d="M130.0,298.4 C170.0,297.9 210.0,297.0 250.0,296.8 C290.0,296.6 330.0,296.0 370.0,295.2 C410.0,294.4 450.0,295.2 490.0,276.0 C530.0,256.8 570.0,132.0 610.0,60.0"/>
<circle class="d-dot is-claim" cx="130" cy="298.4" r="5"/>
<circle class="d-dot is-claim" cx="250" cy="296.8" r="5"/>
<circle class="d-dot is-claim" cx="370" cy="295.2" r="5"/>
<circle class="d-dot is-claim" cx="490" cy="276.0" r="5"/>
<circle class="d-dot is-claim" cx="610" cy="60.0" r="5"/>
<text class="t-value d-ink1" x="478" y="266" text-anchor="end">15&#215;h</text>
<text class="t-value d-ink1" x="598" y="50" text-anchor="end">150&#215;h</text>
<text class="t-label d-ink3" x="130" y="284" text-anchor="middle">1&#215;h</text>
<text class="t-label d-ink3" x="250" y="284" text-anchor="middle">2&#215;h</text>
<text class="t-label d-ink3" x="370" y="284" text-anchor="middle">3&#215;h</text>
<rect class="d-node" shape-rendering="crispEdges" x="118" y="312" width="24" height="24"/>
<text class="t-num d-ink1" x="130" y="328.4" text-anchor="middle">1</text>
<text class="t-label d-ink3" x="130" y="356" text-anchor="middle">HUMAN</text>
<rect class="d-node" shape-rendering="crispEdges" x="238" y="312" width="24" height="24"/>
<text class="t-num d-ink1" x="250" y="328.4" text-anchor="middle">2</text>
<text class="t-label d-ink3" x="250" y="356" text-anchor="middle">CHAT</text>
<rect class="d-node" shape-rendering="crispEdges" x="358" y="312" width="24" height="24"/>
<text class="t-num d-ink1" x="370" y="328.4" text-anchor="middle">3</text>
<text class="t-label d-ink3" x="370" y="356" text-anchor="middle">VOICE</text>
<rect class="d-node" shape-rendering="crispEdges" x="478" y="312" width="24" height="24"/>
<text class="t-num d-ink1" x="490" y="328.4" text-anchor="middle">4</text>
<text class="t-label d-ink3" x="490" y="356" text-anchor="middle">AGENTS</text>
<rect class="d-node" shape-rendering="crispEdges" x="598" y="312" width="24" height="24"/>
<text class="t-num d-ink1" x="610" y="328.4" text-anchor="middle">5</text>
<text class="t-label d-ink3" x="610" y="356" text-anchor="middle">ORCHESTRATORS</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
<figcaption class="text-sm text-brand-text-muted mt-4">Used progressively, each gear multiplies the one before it increasing speed and scale.</figcaption>
</figure>

<p>Output &#215;<strong>h</strong> is the work completed for every hour you spend. Your hours go three ways, directing, reviewing and waiting. Gears 2 and 3 take a bite out of one of those, gear 4 takes the waiting and stretches the job, and gear 5 grows the job a single hour of yours can command.</p>

<div style="overflow-x: auto; -webkit-overflow-scrolling: touch;">
<table>
<thead>
<tr><th style="width:32%; white-space:nowrap;">Gear</th><th style="width:32%; white-space:nowrap;">What it changes</th><th style="width:16%; text-align:right;">Gear</th><th style="width:20%; text-align:right;">Output &#215;h</th></tr>
</thead>
<tbody>
<tr><td style="white-space:nowrap;"><strong>1. Human only</strong></td><td style="white-space:nowrap;">the baseline</td><td style="text-align:right; white-space:nowrap;">1</td><td style="text-align:right; white-space:nowrap;"><strong>1&#215;</strong></td></tr>
<tr><td style="white-space:nowrap;"><strong>2. Chat in a browser or app</strong></td><td style="white-space:nowrap;">the blank page</td><td style="text-align:right; white-space:nowrap;">&#215;2</td><td style="text-align:right; white-space:nowrap;"><strong>2&#215;</strong></td></tr>
<tr><td style="white-space:nowrap;"><strong>3. Voice in</strong></td><td style="white-space:nowrap;">the typing</td><td style="text-align:right; white-space:nowrap;">&#215;1.5</td><td style="text-align:right; white-space:nowrap;"><strong>3&#215;</strong></td></tr>
<tr><td style="white-space:nowrap;"><strong>4. Agents in many sessions</strong></td><td style="white-space:nowrap;">the doing and waiting</td><td style="text-align:right; white-space:nowrap;">&#215;5</td><td style="text-align:right; white-space:nowrap;"><strong>15&#215;</strong></td></tr>
<tr><td style="white-space:nowrap;"><strong>5. Orchestrator with workers</strong></td><td style="white-space:nowrap;">concurrency, and the job size</td><td style="text-align:right; white-space:nowrap;">&#215;10</td><td style="text-align:right; white-space:nowrap;"><strong>150&#215;</strong></td></tr>
</tbody>
</table>
</div>

<p>Each gear multiplier has been rounded on purpose, and in some cases this number may be more or less. The following outlines the rationale behind each multiplier to demonstrate how 100x or more can be attained.</p>

<h2 id="detail" style="scroll-margin-top: 6rem;">Each gear in detail</h2>

<h3>Gear 1. Human only</h3>

<figure class="not-prose my-6">
<div class="plate plate-a">
<div class="ptitle"><b>No agents</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="No agents. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 237" role="img" aria-labelledby="g1Title g1Desc">
<title id="g1Title">No agents</title>
<desc id="g1Desc">One box labelled HUMAN stands alone on the plate, with nothing connected to it. This is gear 1, a person working with no AI, which defines h.</desc>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="298" y="18" width="90" height="30"/>
<text class="t-label d-claim" x="343" y="37.3" text-anchor="middle">HUMAN</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<div class="not-prose border-t border-b border-brand-border" style="padding:0.7rem 0; margin:0 0 1.35rem;"><div style="display:flex; flex-wrap:wrap; align-items:flex-end; gap:0.85rem;"><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Baseline</div><div style="font-weight:600; font-size:1.05rem;">h</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">=</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Output</div><div style="font-weight:600; font-size:1.05rem; color:#0e7490;">1&#215;h</div></div></div></div>

<p>Gear 1 is the time it takes a human to do the task, working alone with their usual tools and with no AI. That time is here defined as <strong>h</strong>. Every gear from here is measured by it.</p>

<p>Defining <strong>h</strong> seems easy, however knowledge workers have been found to be interrupted every two minutes during core work hours (<a href="https://www.microsoft.com/en-us/worklab/work-trend-index/breaking-down-infinite-workday" target="_blank" rel="noopener noreferrer">Microsoft 2025</a>), which makes measuring a clean baseline the first challenge to overcome when benchmarking and preparing business cases.</p>

<p><strong>h</strong> is used to measure agents in other studies. <a href="https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/" target="_blank" rel="noopener noreferrer">METR's time horizons</a> ask how long a task an agent can finish by itself about half the time, and answer in the hours a person would need for that task.</p>

<h3>Gear 2. Chat, in a browser or a desktop app</h3>

<figure class="not-prose my-6">
<div class="plate plate-a">
<div class="ptitle"><b>One agent</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="One agent. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 237" role="img" aria-labelledby="g2Title g2Desc">
<title id="g2Title">One agent</title>
<desc id="g2Desc">A box labelled HUMAN sits above a box labelled AGENT, with a multiplication sign between them. This is gear 2, one person working with one agent in a chat interface.</desc>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="18" width="90" height="30"/>
<text class="t-label d-ink3" x="343" y="37.3" text-anchor="middle">HUMAN</text>
<text class="d-ink3" x="343" y="94" text-anchor="middle" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:22px;font-weight:500;">&#215;</text>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="298" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="343" y="144" text-anchor="middle">AGENT</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<div class="not-prose border-t border-b border-brand-border" style="padding:0.7rem 0; margin:0 0 1.35rem;"><div style="display:flex; flex-wrap:wrap; align-items:flex-end; gap:0.85rem;"><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Previous</div><div style="font-weight:600; font-size:1.05rem;">1&#215;h</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">&#215;</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">This gear</div><div style="font-weight:600; font-size:1.05rem;">2</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">=</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Output</div><div style="font-weight:600; font-size:1.05rem; color:#0e7490;">2&#215;h</div></div></div></div>

<p>It's 'generally accepted' that using AI increases productivity, but measurements can vary widely given the user, task, and model to name just a few variables. So what does this space look like.</p>

<p>Evidence for a doubling exists, though it sits at the level of specific tasks rather than whole jobs at this time. Google engineers running code migrations estimated the work took <a href="https://arxiv.org/abs/2504.09691" target="_blank" rel="noopener noreferrer">half the time it had taken manually</a>. At Procter &amp; Gamble, <a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.20702" target="_blank" rel="noopener noreferrer">one person working with AI matched the output of a two-person team</a> working without it. In a controlled trial of GitHub Copilot, developers finished a defined task in <a href="https://arxiv.org/abs/2302.06590" target="_blank" rel="noopener noreferrer">44% of the time</a> the control group needed, which is 2.3 times the throughput on that task.</p>

<p>Whilst measurements vary, for purposes of this article I have defined that incorporating AI can multiply productivity by 2x.</p>

<h3>Gear 3. Voice in</h3>

<figure class="not-prose my-6">
<div class="plate plate-a">
<div class="ptitle"><b>Voice accelerates the interaction</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Voice accelerates the interaction. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 237" role="img" aria-labelledby="g3Title g3Desc">
<title id="g3Title">Voice accelerates the interaction</title>
<desc id="g3Desc">The same human and agent boxes as gear 2, now with a wide band labelled VOICE spanning the space between them, showing speech carrying the instruction rather than typing. This is gear 3.</desc>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="18" width="90" height="30"/>
<text class="t-label d-ink3" x="343" y="37.3" text-anchor="middle">HUMAN</text>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="20" y="76" width="646" height="20"/>
<text class="t-label d-claim" x="343" y="90.3" text-anchor="middle">VOICE</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,50 V74"/>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="343" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,98 V122"/>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<div class="not-prose border-t border-b border-brand-border" style="padding:0.7rem 0; margin:0 0 1.35rem;"><div style="display:flex; flex-wrap:wrap; align-items:flex-end; gap:0.85rem;"><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Previous</div><div style="font-weight:600; font-size:1.05rem;">2&#215;h</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">&#215;</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">This gear</div><div style="font-weight:600; font-size:1.05rem;">1.5</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">=</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Output</div><div style="font-weight:600; font-size:1.05rem; color:#0e7490;">3&#215;h</div></div></div></div>

<p>You talk at roughly three times the speed you type, which is three times faster in communicating with the agent rather than three times the work done, which is why this gear is 1.5x.</p>

<p>Speech runs well ahead of typing. A 2025 study of <a href="https://www.medrxiv.org/content/10.1101/2025.05.11.25327386v1" target="_blank" rel="noopener noreferrer">more than a thousand clinicians across fifteen countries</a> clocked dictation at a median 93 wpm against 21.4 wpm at the keyboard, and even after allowing for the time to correct transcription errors the effective rate held at 55.42 wpm, two and a half times faster. My own logs put nine days at 83,278 words spoken to agents, which at a keyboard would have been close to three hours of typing a day.</p>

<p>Communicating verbally with agents doesn't just increase speed, but delivers a range of other benefits, the subject of my next article.</p>

<h3>Gear 4. Agents in many sessions, long runs</h3>

<figure class="not-prose my-6">
<div class="plate plate-a">
<div class="ptitle"><b>Concurrent agent sessions</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Concurrent agent sessions. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 237" role="img" aria-labelledby="g4Title g4Desc">
<title id="g4Title">Concurrent agent sessions</title>
<desc id="g4Desc">One HUMAN box connects down to five identical session boxes side by side, each holding one agent. This is gear 4, one person driving several sessions at once.</desc>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="18" width="90" height="30"/>
<text class="t-label d-ink3" x="343" y="37.3" text-anchor="middle">HUMAN</text>
<rect class="d-node" shape-rendering="crispEdges" x="20" y="76" width="646" height="20"/>
<text class="t-label d-ink3" x="343" y="90.3" text-anchor="middle">VOICE</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,50 V74"/>
<path class="d-axis" shape-rendering="crispEdges" d="M343,98 V110"/>
<path class="d-axis" shape-rendering="crispEdges" d="M65,110 H621"/>
<path class="d-axis" shape-rendering="crispEdges" d="M65,110 V122"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="20" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="65" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M204,110 V122"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="159" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="204" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,110 V122"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="298" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="343" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M482,110 V122"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="437" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="482" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M621,110 V122"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="576" y="124" width="90" height="32"/>
<text class="t-label d-claim" x="621" y="144" text-anchor="middle">AGENT</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<div class="not-prose border-t border-b border-brand-border" style="padding:0.7rem 0; margin:0 0 1.35rem;"><div style="display:flex; flex-wrap:wrap; align-items:flex-end; gap:0.85rem;"><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Previous</div><div style="font-weight:600; font-size:1.05rem;">3&#215;h</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">&#215;</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">This gear</div><div style="font-weight:600; font-size:1.05rem;">5</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">=</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Output</div><div style="font-weight:600; font-size:1.05rem; color:#0e7490;">15&#215;h</div></div></div></div>

<p>This is the gear where you start to see real acceleration. Instead of interacting with one agent you interact with more than one at a time, in separate chats, browser tabs or terminal windows.</p>

<p>The practice is <a href="https://code.claude.com/docs/en/worktrees" target="_blank" rel="noopener noreferrer">one git worktree per session</a>, each on its own branch so no two agents write the same file. Boris Cherny, who created Claude Code, calls spinning up three to five of them <a href="https://x.com/bcherny/status/2017742743125299476" target="_blank" rel="noopener noreferrer">'the single biggest productivity unlock, and the top tip from the team'</a>, and describes his own setup as five sessions in the terminal with <a href="https://howborisusesclaudecode.com/" target="_blank" rel="noopener noreferrer">another five to ten in the browser</a>, or in his words dozens of Claudes running at all times.</p>

<p>Most practitioners sit at two, the most upvoted <a href="https://www.reddit.com/r/ClaudeCode/comments/1twkch3/" target="_blank" rel="noopener noreferrer">answer on r/ClaudeCode</a>, context switching, cognitive load and quality become key challenges.</p>


<h3>Gear 5. Orchestrator with workers</h3>

<figure class="not-prose my-6">
<div class="plate plate-a">
<div class="ptitle"><b>Orchestration: agents managing sub-agents</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Orchestration: agents managing sub-agents. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 237" role="img" aria-labelledby="g5Title g5Desc">
<title id="g5Title">Orchestration: agents managing sub-agents</title>
<desc id="g5Desc">The five session boxes from gear 4 each now contain an orchestrator, and each orchestrator fans out to a block of ten smaller agent squares below it. The human connects only to the sessions, not to the agents underneath. This is gear 5.</desc>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="18" width="90" height="30"/>
<text class="t-label d-ink3" x="343" y="37.3" text-anchor="middle">HUMAN</text>
<rect class="d-node" shape-rendering="crispEdges" x="20" y="76" width="646" height="20"/>
<text class="t-label d-ink3" x="343" y="90.3" text-anchor="middle">VOICE</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,50 V74"/>
<path class="d-axis" shape-rendering="crispEdges" d="M343,98 V110"/>
<path class="d-axis" shape-rendering="crispEdges" d="M65,110 H621"/>
<path class="d-axis" shape-rendering="crispEdges" d="M65,110 V122"/>
<rect class="d-node" shape-rendering="crispEdges" x="20" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="65" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M204,110 V122"/>
<rect class="d-node" shape-rendering="crispEdges" x="159" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="204" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M343,110 V122"/>
<rect class="d-node" shape-rendering="crispEdges" x="298" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="343" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M482,110 V122"/>
<rect class="d-node" shape-rendering="crispEdges" x="437" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="482" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M621,110 V122"/>
<rect class="d-node" shape-rendering="crispEdges" x="576" y="124" width="90" height="32"/>
<text class="t-label d-ink3" x="621" y="144" text-anchor="middle">AGENT</text>
<path class="d-axis" shape-rendering="crispEdges" d="M65,158 V170"/>
<path class="d-axis" shape-rendering="crispEdges" d="M27,170 H103"/>
<path class="d-axis" shape-rendering="crispEdges" d="M27,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M46,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M65,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M84,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M103,170 V182"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="20" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="39" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="58" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="77" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="96" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="20" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="39" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="58" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="77" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="96" y="203" width="14" height="14"/>
<path class="d-axis" shape-rendering="crispEdges" d="M204,158 V170"/>
<path class="d-axis" shape-rendering="crispEdges" d="M166,170 H242"/>
<path class="d-axis" shape-rendering="crispEdges" d="M166,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M185,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M204,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M223,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M242,170 V182"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="159" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="178" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="197" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="216" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="235" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="159" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="178" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="197" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="216" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="235" y="203" width="14" height="14"/>
<path class="d-axis" shape-rendering="crispEdges" d="M343,158 V170"/>
<path class="d-axis" shape-rendering="crispEdges" d="M305,170 H381"/>
<path class="d-axis" shape-rendering="crispEdges" d="M305,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M324,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M343,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M362,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M381,170 V182"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="298" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="317" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="336" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="355" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="374" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="298" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="317" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="336" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="355" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="374" y="203" width="14" height="14"/>
<path class="d-axis" shape-rendering="crispEdges" d="M482,158 V170"/>
<path class="d-axis" shape-rendering="crispEdges" d="M444,170 H520"/>
<path class="d-axis" shape-rendering="crispEdges" d="M444,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M463,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M482,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M501,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M520,170 V182"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="437" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="456" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="475" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="494" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="513" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="437" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="456" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="475" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="494" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="513" y="203" width="14" height="14"/>
<path class="d-axis" shape-rendering="crispEdges" d="M621,158 V170"/>
<path class="d-axis" shape-rendering="crispEdges" d="M583,170 H659"/>
<path class="d-axis" shape-rendering="crispEdges" d="M583,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M602,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M621,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M640,170 V182"/>
<path class="d-axis" shape-rendering="crispEdges" d="M659,170 V182"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="576" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="595" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="614" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="633" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="652" y="184" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="576" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="595" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="614" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="633" y="203" width="14" height="14"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="652" y="203" width="14" height="14"/>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<div class="not-prose border-t border-b border-brand-border" style="padding:0.7rem 0; margin:0 0 1.35rem;"><div style="display:flex; flex-wrap:wrap; align-items:flex-end; gap:0.85rem;"><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Previous</div><div style="font-weight:600; font-size:1.05rem;">15&#215;h</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">&#215;</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">This gear</div><div style="font-weight:600; font-size:1.05rem;">10</div></div><div style="font-size:1rem; font-weight:600; padding-bottom:0.1rem;" class="text-brand-text-muted">=</div><div><div class="text-brand-text-muted" style="font-size:0.7rem; text-transform:uppercase; letter-spacing:0.09em;">Output</div><div style="font-weight:600; font-size:1.05rem; color:#0e7490;">150&#215;h</div></div></div></div>

<p>The next gear is orchestration, instead of working with a single agent across each session, that agent becomes an orchestrator of sub agents on your behalf, how many depends on the task.</p>

<p>Ten concurrent sub agents per session may seem like a lot. Some recent examples of mine include: (i) OCR PDF to text conversion tasks, 70 concurrent agents, (ii) Quantitative analysis, 30 concurrent agents, and (iii) Research projects 12-24 concurrent agents.</p>

<p>Using multi-agent systems have been shown to <a href="https://www.anthropic.com/engineering/multi-agent-research-system" target="_blank" rel="noopener noreferrer">outperform single agent systems</a>, but conversely come with the overhead of increased token spend. Nonetheless, it's not unreasonable to set the gear and target here at 10x.</p>

<h2 id="so-what" style="scroll-margin-top: 6rem;">What this adds up to</h2>

<p>The gears show that these speeds and scale are attainable. What you get depends on who is driving, what the task is, and which model is behind it. The same setup that returns 15x on a well-specified job returns nothing on one you have not thought through.</p>

<p>The value is much more than getting work done faster, it is what a single hour of yours can now command. A task that used to take a day that now takes an hour changes where you can go as opposed to what you can do. Ideas that were never worth the cost of finding out are now worth a session.</p>

<p>This is where the conversation turns from speed and scale, to quality and value, i.e., the former is for nothing without the latter. I agree, but would also propose the former helps create the space to deliver the latter.</p>

<h2 id="key-learnings" style="scroll-margin-top: 6rem;">Key learnings</h2>

<h3>Schedule work based on runtime</h3>

<figure class="not-prose my-6">
<div class="plate plate-b">
<div class="ptitle"><b>Long runs fill the gaps the short ones leave</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Long runs fill the gaps the short ones leave. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 178" role="img" aria-labelledby="kl1Title kl1Desc">
<title id="kl1Title">Long runs fill the gaps the short ones leave</title>
<desc id="kl1Desc">Three rows labelled SHORT, MEDIUM and LONG run left to right across a time axis. Short runs are four-square blocks repeated four times, each ending in a crosshatched square marking a human break. The medium and long rows are single long bars that begin with a shaded square of human time and then continue unattended. Shaded squares mean human contact time, open squares mean agent time, so the short runs tile into the gaps the longer ones leave.</desc>
<rect shape-rendering="crispEdges" x="105.5" y="21.0" width="1" height="125.2" fill="var(--stroke)"/>
<rect shape-rendering="crispEdges" x="105.3" y="144.9" width="497.2" height="1.2" fill="var(--stroke)"/>
<text class="d-ink3" x="105.9" y="15.0" text-anchor="middle" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:1.6px;">RUNS</text>
<text class="d-ink3" x="610.5" y="148.9" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:1.6px;">TIME</text>
<text class="t-label d-ink3" x="91.3" y="51.0" text-anchor="end">SHORT</text>
<text class="t-label d-ink3" x="91.3" y="87.0" text-anchor="end">MEDIUM</text>
<text class="t-label d-ink3" x="91.3" y="123.0" text-anchor="end">LONG</text>
<rect shape-rendering="crispEdges" x="162.5" y="37.0" width="80" height="20" fill="var(--surface)"/>
<rect shape-rendering="crispEdges" x="282.5" y="37.0" width="80" height="20" fill="var(--surface)"/>
<rect shape-rendering="crispEdges" x="402.5" y="37.0" width="80" height="20" fill="var(--surface)"/>
<rect shape-rendering="crispEdges" x="522.5" y="37.0" width="80" height="20" fill="var(--surface)"/>
<rect class="d-fill" x="162.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="182.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="202.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="282.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="302.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="322.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="402.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="422.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="442.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="522.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="542.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="562.5" y="37.0" width="20" height="20"/>
<rect class="d-fill" x="222.5" y="37.0" width="20" height="20"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" x="162.5" y="37.0" width="80" height="20"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M182.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M202.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M222.5,37 V57"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" x="282.5" y="37.0" width="80" height="20"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M302.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M322.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M342.5,37 V57"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" x="402.5" y="37.0" width="80" height="20"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M422.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M442.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M462.5,37 V57"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" x="522.5" y="37.0" width="80" height="20"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M542.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M562.5,37 V57"/>
<path class="d-node is-claim" shape-rendering="crispEdges" style="fill:none" d="M582.5,37 V57"/>
<line x1="224.5" y1="55.0" x2="240.5" y2="39.0" stroke="var(--claim)" stroke-width="1.6"/>
<rect class="d-fill" x="342.5" y="37.0" width="20" height="20"/>
<line x1="344.5" y1="55.0" x2="360.5" y2="39.0" stroke="var(--claim)" stroke-width="1.6"/>
<rect class="d-fill" x="462.5" y="37.0" width="20" height="20"/>
<line x1="464.5" y1="55.0" x2="480.5" y2="39.0" stroke="var(--claim)" stroke-width="1.6"/>
<rect class="d-fill" x="582.5" y="37.0" width="20" height="20"/>
<line x1="584.5" y1="55.0" x2="600.5" y2="39.0" stroke="var(--claim)" stroke-width="1.6"/>
<rect class="d-node" shape-rendering="crispEdges" x="142.5" y="73.0" width="460" height="20"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="142.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="143.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="242.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="243.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="262.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="263.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="362.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="363.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="382.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="383.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="482.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="483.5" y="74.0" width="18" height="18"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="502.5" y="73.0" width="20" height="20"/>
<rect class="d-wash" x="503.5" y="74.0" width="18" height="18"/>
<rect class="d-node" shape-rendering="crispEdges" x="122.5" y="109.0" width="480" height="20"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="122.5" y="109.0" width="20" height="20"/>
<rect class="d-wash" x="123.5" y="110.0" width="18" height="18"/>
<rect shape-rendering="crispEdges" x="192.5" y="166.9" width="9" height="9" fill="var(--surface)" stroke="var(--claim)" stroke-width="1"/>
<rect class="d-fill" x="192.5" y="166.9" width="9" height="9"/>
<text class="d-ink3" x="208.5" y="175.1" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:1.6px;word-spacing:-4.0px;">HUMAN + AGENT</text>
<rect shape-rendering="crispEdges" x="314.3" y="166.9" width="9" height="9" fill="var(--surface)" stroke="var(--claim)" stroke-width="1"/>
<rect class="d-fill" x="314.3" y="166.9" width="9" height="9"/>
<line x1="315.3" y1="174.9" x2="322.3" y2="167.9" stroke="var(--claim)" stroke-width="1"/>
<text class="d-ink3" x="330.3" y="175.1" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:1.6px;word-spacing:-4.0px;">HUMAN BREAK</text>
<rect shape-rendering="crispEdges" x="424.2" y="166.9" width="9" height="9" fill="var(--surface)" stroke="var(--stroke)" stroke-width="1"/>
<text class="d-ink3" x="440.2" y="175.1" style="font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:1.6px;word-spacing:-4.0px;">AGENT ONLY</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<p style="margin-bottom: 3.25rem;">I see future ways of working incorporating runtime scheduling, enabling humans to efficiently work across multiple concurrent agent sessions whilst minimising context switching and cognitive load.</p>

<h3>The bottleneck moves, it does not disappear</h3>

<figure class="not-prose my-6">
<div class="plate plate-b">
<div class="ptitle"><b>The narrow point moves, it does not widen</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="The narrow point moves, it does not widen. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 178" role="img" aria-labelledby="kl2Title kl2Desc">
<title id="kl2Title">The narrow point moves, it does not widen</title>
<desc id="kl2Desc">Three stages run left to right, each a bar with a narrow point in it. At gears 2 and 3 the narrow point sits at THE DOING, at gear 4 it moves to THE WAITING, and at gear 5 it moves to THE REVIEW. The narrow point is the same width in every stage, only its position changes.</desc>
<text class="t-key d-ink3" x="115" y="66.5" text-anchor="middle">GEAR 2, 3</text>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="24" y="86.5" width="54" height="10"/>
<rect class="d-wash" x="25" y="87.5" width="52" height="8"/>
<path class="d-axis" shape-rendering="crispEdges" d="M79,92 H87"/>
<rect class="d-node" shape-rendering="crispEdges" x="88" y="80.5" width="54" height="22"/>
<path class="d-axis" shape-rendering="crispEdges" d="M143,92 H151"/>
<rect class="d-node" shape-rendering="crispEdges" x="152" y="80.5" width="54" height="22"/>
<text class="t-label d-ink3" x="115" y="124.5" text-anchor="middle">THE DOING</text>
<text class="t-key d-ink3" x="343" y="66.5" text-anchor="middle">GEAR 4</text>
<rect class="d-node" shape-rendering="crispEdges" x="252" y="80.5" width="54" height="22"/>
<path class="d-axis" shape-rendering="crispEdges" d="M307,92 H315"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="316" y="86.5" width="54" height="10"/>
<rect class="d-wash" x="317" y="87.5" width="52" height="8"/>
<path class="d-axis" shape-rendering="crispEdges" d="M371,92 H379"/>
<rect class="d-node" shape-rendering="crispEdges" x="380" y="80.5" width="54" height="22"/>
<text class="t-label d-ink3" x="343" y="124.5" text-anchor="middle">THE WAITING</text>
<text class="t-key d-ink3" x="571" y="66.5" text-anchor="middle">GEAR 5</text>
<rect class="d-node" shape-rendering="crispEdges" x="480" y="80.5" width="54" height="22"/>
<path class="d-axis" shape-rendering="crispEdges" d="M535,92 H543"/>
<rect class="d-node" shape-rendering="crispEdges" x="544" y="80.5" width="54" height="22"/>
<path class="d-axis" shape-rendering="crispEdges" d="M599,92 H607"/>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="608" y="86.5" width="54" height="10"/>
<rect class="d-wash" x="609" y="87.5" width="52" height="8"/>
<text class="t-label d-claim" x="571" y="124.5" text-anchor="middle">THE REVIEW</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<p style="margin-bottom: 3.25rem;">Every gear removes one constraint but exposes the next. That constraint is you, because everything the agents produce still waits on your review. Scaling production without scaling reviews only moves the queue closer to you.</p>

<h3>Loops are governance, not a gear</h3>

<figure class="not-prose my-6">
<div class="plate plate-b">
<div class="ptitle"><b>Run, check, fix, until it passes</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Run, check, fix, until it passes. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 178" role="img" aria-labelledby="kl3Title kl3Desc">
<title id="kl3Title">Run, check, fix, until it passes</title>
<desc id="kl3Desc">A cycle running INPUT into RUN, then CHECK. A failed check returns through FIX back to RUN, and the only path to OUTPUT leaves CHECK when it passes.</desc>
<defs><marker id="ah" markerWidth="8" markerHeight="8" refX="7.5" refY="4" orient="auto" markerUnits="userSpaceOnUse"><path d="M0,0 L8,4 L0,8 z" fill="var(--stroke)"/></marker><marker id="ahc" markerWidth="8" markerHeight="8" refX="7.5" refY="4" orient="auto" markerUnits="userSpaceOnUse"><path d="M0,0 L8,4 L0,8 z" fill="var(--claim)"/></marker></defs>
<rect class="d-node" shape-rendering="crispEdges" x="52" y="116" width="100" height="30"/>
<text class="t-label d-ink3" x="102" y="135" text-anchor="middle">INPUT</text>
<rect class="d-node" shape-rendering="crispEdges" x="212" y="116" width="100" height="30"/>
<text class="t-label d-ink3" x="262" y="135" text-anchor="middle">RUN</text>
<rect class="d-node" shape-rendering="crispEdges" x="374" y="116" width="100" height="30"/>
<text class="t-label d-ink3" x="424" y="135" text-anchor="middle">CHECK</text>
<rect class="d-node is-claim" shape-rendering="crispEdges" x="534" y="116" width="100" height="30"/>
<text class="t-label d-claim" x="584" y="135" text-anchor="middle">OUTPUT</text>
<rect class="d-node" shape-rendering="crispEdges" x="293" y="36" width="100" height="30"/>
<text class="t-label d-ink3" x="343" y="55" text-anchor="middle">FIX</text>
<path class="d-axis" shape-rendering="crispEdges" fill="none" marker-end="url(#ah)" d="M152,131.5 H212"/>
<path class="d-axis" shape-rendering="crispEdges" fill="none" marker-end="url(#ah)" d="M312,131.5 H374"/>
<path class="d-axis" shape-rendering="crispEdges" fill="none" marker-end="url(#ah)" d="M424.5,116 V51.5 H393"/>
<text class="t-key d-ink3" x="434" y="86">FAIL</text>
<path class="d-axis" shape-rendering="crispEdges" fill="none" marker-end="url(#ah)" d="M293,51.5 H262.5 V116"/>
<path class="d-axis is-claim" shape-rendering="crispEdges" fill="none" marker-end="url(#ahc)" d="M474,131.5 H534"/>
<text class="t-key d-claim" x="504" y="108" text-anchor="middle">PASS</text>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<p style="margin-bottom: 3.25rem;">One way to scale reviews comes in the form of loops. A loop runs the work until a check passes, run &#8594; check &#8594; fix &#8594; repeat until pass. Much like a human review they reduce speed, but they do enable scale.</p>

<h3>Verification is what stops errors compounding</h3>

<figure class="not-prose my-6">
<div class="plate plate-b">
<div class="ptitle"><b>Errors caught early minimise compounding</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Errors caught early minimise compounding. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 178" role="img" aria-labelledby="kl4Title kl4Desc">
<title id="kl4Title">Errors caught early minimise compounding</title>
<desc id="kl4Desc">Two sequences of steps compared. The row marked NO GATE carries an error that grows at every step. The row marked VERIFICATION GATES puts a check between each step, so a FAIL is caught at the first gate and the steps after it PASS clean.</desc>
<text class="t-label d-ink3" x="44" y="64.0">NO GATE</text>
<rect class="d-node" shape-rendering="crispEdges" x="238" y="45" width="52" height="30"/>
<circle class="d-dot" cx="264" cy="60.0" r="3"/>
<path class="d-link" d="M290,60.5 H326"/>
<rect class="d-node" shape-rendering="crispEdges" x="326" y="45" width="52" height="30"/>
<circle class="d-dot" cx="352" cy="60.0" r="5"/>
<path class="d-link" d="M378,60.5 H414"/>
<rect class="d-node" shape-rendering="crispEdges" x="414" y="45" width="52" height="30"/>
<circle class="d-dot" cx="440" cy="60.0" r="8"/>
<path class="d-link" d="M466,60.5 H502"/>
<rect class="d-node" shape-rendering="crispEdges" x="502" y="45" width="52" height="30"/>
<circle class="d-dot" cx="528" cy="60.0" r="10"/>
<path class="d-link" d="M554,60.5 H590"/>
<rect class="d-node" shape-rendering="crispEdges" x="590" y="45" width="52" height="30"/>
<circle class="d-dot" cx="616" cy="60.0" r="12"/>
<text class="t-label d-claim" x="44" y="126.0">VERIFICATION GATES</text>
<rect class="d-node" shape-rendering="crispEdges" x="238" y="107" width="52" height="30"/>
<circle class="d-dot" cx="264" cy="122.0" r="3"/>
<path class="d-axis" d="M290,122.5 H299"/>
<polygon class="d-marker is-claim" points="308,113.5 317,122.5 308,131.5 299,122.5"/>
<path class="d-axis" d="M317,122.5 H326"/>
<rect class="d-node" shape-rendering="crispEdges" x="326" y="107" width="52" height="30"/>
<circle class="d-dot" cx="352" cy="122.0" r="3"/>
<path class="d-axis" d="M378,122.5 H387"/>
<polygon class="d-marker is-claim" points="396,113.5 405,122.5 396,131.5 387,122.5"/>
<path class="d-axis" d="M405,122.5 H414"/>
<rect class="d-node" shape-rendering="crispEdges" x="414" y="107" width="52" height="30"/>
<circle class="d-dot" cx="440" cy="122.0" r="3"/>
<path class="d-axis" d="M466,122.5 H475"/>
<polygon class="d-marker is-claim" points="484,113.5 493,122.5 484,131.5 475,122.5"/>
<path class="d-axis" d="M493,122.5 H502"/>
<rect class="d-node" shape-rendering="crispEdges" x="502" y="107" width="52" height="30"/>
<circle class="d-dot" cx="528" cy="122.0" r="3"/>
<path class="d-axis" d="M554,122.5 H563"/>
<polygon class="d-marker is-claim" points="572,113.5 581,122.5 572,131.5 563,122.5"/>
<path class="d-axis" d="M581,122.5 H590"/>
<rect class="d-node" shape-rendering="crispEdges" x="590" y="107" width="52" height="30"/>
<circle class="d-dot" cx="616" cy="122.0" r="3"/>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<p style="margin-bottom: 3.25rem;"><a href="https://www.tandfonline.com/doi/abs/10.1080/09617353.1995.11690648" target="_blank" rel="noopener noreferrer">Lusser's law</a> holds that a series is only as good as the product of its steps. The fix is structural rather than a better prompt: check the output before it becomes the next step's input.</p>

<h3>Adversarial reviews</h3>

<figure class="not-prose my-6">
<div class="plate plate-b">
<div class="ptitle"><b>Use a second model to review the first</b><span>&#169; hcd.ai</span></div>
<div class="pscroll" role="region" tabindex="0" aria-label="Use a second model to review the first. Scroll horizontally to view the full diagram.">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 178" role="img" aria-labelledby="kl5Title kl5Desc">
<title id="kl5Title">Use a second model to review the first</title>
<desc id="kl5Desc">Two overlapping fields of dots, one labelled PRIMARY MODEL and one SECONDARY MODEL. The dots the primary model cannot see in its own work sit outside its field and are picked up only where the second model overlaps them.</desc>
<circle class="d-glyph is-claim" cx="307" cy="79.0" r="62"/>
<circle class="d-glyph" cx="379" cy="79.0" r="62"/>
<text class="t-label d-claim" x="245" y="165.0" text-anchor="middle">PRIMARY MODEL</text>
<text class="t-label d-ink3" x="441" y="165.0" text-anchor="middle">SECONDARY MODEL</text>
<circle class="d-dot is-claim" cx="270" cy="48.0" r="4"/>
<circle class="d-dot is-claim" cx="322" cy="125.0" r="4"/>
<circle class="d-dot is-claim" cx="261" cy="73.0" r="4"/>
<circle class="d-dot is-claim" cx="300" cy="68.0" r="4"/>
<circle class="d-dot" cx="365" cy="35.0" r="4"/>
<circle class="d-dot" cx="407" cy="37.0" r="4"/>
<circle class="d-ring" cx="350" cy="62.0" r="4.5"/>
<circle class="d-ring" cx="334" cy="54.0" r="4.5"/>
<circle class="d-ring" cx="338" cy="99.0" r="4.5"/>
</svg>
</div>
<p class="phint">Scroll to see the full diagram</p>
</div>
</figure>

<p style="margin-bottom: 3.25rem;">A model reviewing its own output shares its own blind spots. At minimum use a new session and context window if you're limited to using one model, otherwise engage another model to review the first model's outputs.</p>

<h2 id="where-to-next" style="scroll-margin-top: 6rem;">Where to next</h2>

<p>Speed and scale have exponentially outpaced humans. The human bottleneck is real, but ultimately reduces to a decision, i.e., is this correct? is the quality high enough? That is where the next gains have to come from.</p>

<p>Recursive self-improvement might be the means to do this. <a href="https://www.anthropic.com/institute/recursive-self-improvement" target="_blank" rel="noopener noreferrer">Anthropic (2026)</a> define it as an AI system capable of fully autonomously designing and developing its own successor.</p>

{% faqs faqs %}

<aside class="not-prose mt-16 pt-8 border-t border-brand-border" id="references">
  <p class="section-label mb-4">References</p>
  <div class="text-sm text-brand-text-muted space-y-2">
    <p>Anthropic. 2025. <em>How we built our multi-agent research system</em>. Anthropic Engineering. Available: <a href="https://www.anthropic.com/engineering/multi-agent-research-system" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">anthropic.com</a> [Accessed 24 August 2026].</p>
    <p>Anthropic. 2026. <em>Claude Code: run parallel sessions with worktrees</em> [documentation]. Available: <a href="https://code.claude.com/docs/en/worktrees" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">code.claude.com</a> [Accessed 24 August 2026].</p>
    <p>Cherny, B. 2026. [X] February, on running three to five git worktrees in parallel. Available: <a href="https://x.com/bcherny/status/2017742743125299476" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">x.com</a> [Accessed 24 August 2026].</p>
    <p>Cherry, C. 2026. <em>How Boris uses Claude Code</em> [fan-collected compilation of @bcherny posts and interviews], 15 March, updated 15 July. Available: <a href="https://howborisusesclaudecode.com/" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">howborisusesclaudecode.com</a> [Accessed 24 August 2026].</p>
    <p>Dell&#39;Acqua, F., Ayoubi, C., Lifshitz-Assaf, H., Sadun, R., Mollick, E., Mollick, L., Han, Y., Goldman, J., Nair, H., Taub, S. and Lakhani, K.R. 2026. The cybernetic teammate: a field experiment on generative AI and teamwork. <em>Organization Science</em>, 37(4), published online 12 June. doi:10.1287/orsc.2025.20702. Available: <a href="https://pubsonline.informs.org/doi/10.1287/orsc.2025.20702" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">informs.org</a> [Accessed 24 August 2026].</p>
    <p>Favaro, M. and Clark, J. 2026. <em>When AI builds itself</em>. Anthropic Institute, May. Available: <a href="https://www.anthropic.com/institute/recursive-self-improvement" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">anthropic.com</a> [Accessed 24 August 2026].</p>
    <p>Kwa, T., West, B. et al. 2025. <em>Measuring AI ability to complete long tasks</em>. METR, 19 March. arXiv:2503.14499. Available: <a href="https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">metr.org</a> [Accessed 24 August 2026].</p>
    <p>Microsoft. 2025. <em>Breaking down the infinite workday</em>. Work Trend Index Special Report, 17 June. Available: <a href="https://www.microsoft.com/en-us/worklab/work-trend-index/breaking-down-infinite-workday" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">microsoft.com</a> [Accessed 24 August 2026].</p>
    <p>Olatunji, T., Aka, C., Okocha, C., Katuka, G., Tassallah, A., Etori, N., Ismaila, L., Mateen, B.A. and Weintraub, R. 2025. <em>A multi-country study comparing typed to automatic speech recognition-based medical documentation speeds among low- and middle-income country trained clinicians</em>. medRxiv preprint, 13 May. doi:10.1101/2025.05.11.25327386. Available: <a href="https://www.medrxiv.org/content/10.1101/2025.05.11.25327386v1" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">medrxiv.org</a> [Accessed 24 August 2026].</p>
    <p>Peng, S., Kalliamvakou, E., Cihon, P. and Demirer, M. 2023. <em>The impact of AI on developer productivity: evidence from GitHub Copilot</em>. arXiv:2302.06590. Available: <a href="https://arxiv.org/abs/2302.06590" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">arxiv.org</a> [Accessed 24 August 2026].</p>
    <p>r/ClaudeCode. 2026. <em>How many CC sessions do you run concurrently?</em> [online forum thread]. Available: <a href="https://www.reddit.com/r/ClaudeCode/comments/1twkch3/" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">reddit.com</a> [Accessed 24 August 2026].</p>
    <p>Tait, N. 1995. Robert Lusser and Lusser&#39;s law. <em>Safety and Reliability</em>, 15(2). doi:10.1080/09617353.1995.11690648. Available: <a href="https://www.tandfonline.com/doi/abs/10.1080/09617353.1995.11690648" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">tandfonline.com</a> [Accessed 24 August 2026].</p>
    <p>Ziftci, C., Nikolov, S., Sj&#246;vall, A., Kim, B., Codecasa, D. and Kim, M. 2025. Migrating code at scale with LLMs at Google. In: <em>Proceedings of the 33rd ACM International Conference on the Foundations of Software Engineering</em>. arXiv:2504.09691. Available: <a href="https://arxiv.org/abs/2504.09691" target="_blank" rel="noreferrer noopener" class="text-brand-accent hover:text-brand-accent-hover transition-colors">arxiv.org</a> [Accessed 24 August 2026].</p>
  </div>
</aside>

