<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="https://purl.org/rss/1.0/modules/content/"
	xmlns:media="https://search.yahoo.com/mrss/"
	xmlns:wfw="https://wellformedweb.org/CommentAPI/"
	xmlns:dc="https://purl.org/dc/elements/1.1/"
	xmlns:atom="https://www.w3.org/2005/Atom"
	xmlns:sy="https://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
	xmlns:custom="https://www.oreilly.com/rss/custom"

	>

<channel>
	<title>Radar</title>
	<atom:link href="https://www.oreilly.com/radar/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.oreilly.com/radar</link>
	<description>Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology</description>
	<lastBuildDate>Wed, 19 Aug 2026 12:29:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://www.oreilly.com/radar/wp-content/uploads/sites/3/2025/04/cropped-favicon_512x512-160x160.png</url>
	<title>Radar</title>
	<link>https://www.oreilly.com/radar</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>When Guardrails Go Wrong</title>
		<link>https://www.oreilly.com/radar/when-guardrails-go-wrong/</link>
				<comments>https://www.oreilly.com/radar/when-guardrails-go-wrong/#respond</comments>
				<pubDate>Wed, 19 Aug 2026 10:53:37 +0000</pubDate>
					<dc:creator><![CDATA[Mike Loukides]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19419</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/When-guardrails-go-wrong.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/When-guardrails-go-wrong-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[We don’t need hamstrung AI.]]></custom:subtitle>
		
				<description><![CDATA[The latest round of restrictions and safeguards for frontier models are overly fussy and limiting. A Claude skill that I created demonstrates what happens when guardrails go astray. My skill helps me to find articles and blog posts that go into O’Reilly Radar’s monthly Trends to Watch. It reads roughly a dozen well-known sites like [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">The latest round of restrictions and safeguards for frontier models are overly fussy and limiting. A Claude skill that I created demonstrates what happens when guardrails go astray. My skill helps me to find articles and blog posts that go into O’Reilly Radar’s monthly <a href="https://www.oreilly.com/radar/radar-trends-to-watch-august-2026/" target="_blank" rel="noreferrer noopener">Trends to Watch</a>. It reads roughly a dozen well-known sites like <em><a href="https://thenewstack.io/" target="_blank" rel="noreferrer noopener">The New Stack</a></em>, <em><a href="https://thenextweb.com/" target="_blank" rel="noreferrer noopener">The Next Web</a></em>, and <a href="https://news.ycombinator.com/" target="_blank" rel="noreferrer noopener">Hacker News</a>, plus any other sources that it finds useful. After reading the sites, it produces a digest of the most important articles published in the last day. I use it as a sanity check on my own reading: Did I miss anything important? Am I on the fence about something that might be an important leading indicator?</p>



<p class="wp-block-paragraph">I’ve used the skill daily for a couple of months now. It suddenly stopped working with the following message:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">API Error: Sonnet 5’s safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Apply to the Cyber Verification Program to reduce these interruptions. Send feedback with /feedback or learn more: <a href="https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude" target="_blank" rel="noreferrer noopener">https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude</a></p>
</blockquote>



<p class="wp-block-paragraph">When I started a new Claude Code session with Haiku, the skill worked without problems. (I didn’t try Opus or Fable; if Sonnet found the skill dangerous, I’m sure Opus and Fable would draw the same conclusion.) GPT 5.6 with “high” reasoning was able to execute a very similar skill without problems. So what happened to Sonnet?</p>



<p class="wp-block-paragraph">The best approach to debugging AI is often to ask the AI itself, so I pasted the message into another Claude Code session and asked it what was happening. The response came down to the descriptions of Hacker News, <em><a href="https://www.bleepingcomputer.com/" target="_blank" rel="noreferrer noopener">Bleeping Computer</a></em>, and <em><a href="https://www.theregister.com/" target="_blank" rel="noreferrer noopener">The Register</a></em>. The phrase “vulnerabilities, exploits, threat reporting” in the description of Hacker News triggered Sonnet’s guardrails. Ironically, that description is both incorrect and Claude generated. (Reminder to self: Be more careful when asking Claude to develop a skill from a task.) Sonnet came up with three solutions, the first of which was to let it rewrite the skill with more neutral descriptions like “security industry news.” Fair enough, but I did the editing myself.</p>



<p class="wp-block-paragraph">Then I went back to the original Claude Code session. It still didn’t work. I expected that I’d need to do something to reload the skill, but the problem was worse. Regardless of the prompt, the original session wouldn’t do anything except repeat the error message. It wouldn’t even commit the modified skill to my GitHub repo. However, Sonnet executed my skill correctly in a new Claude Code instance.</p>



<p class="wp-block-paragraph">So I returned to Sonnet to find out what’s going on. The answer was interesting: The error may have been triggered by the skill, but when evaluating security threats, the models base their decisions on the entire conversation, not just the specific skill that was called. If a model needs to call a skill that it thinks is problematic, that call is part of the conversation, part of the context. The entire conversation is then forever dead and lost.</p>



<p class="wp-block-paragraph">What can we learn from this? First, it’s a problem for a program to stop working because of a change over which you have no control. If anything, the industry has erred on the other side; we’re all familiar with “we don’t really understand why this works, so don’t touch it, don’t update the compiler, don’t update the libraries, and run it on emulators of computers that haven’t been built in 40 years.” That’s not just a problem for COBOL code from the 1970s; we see the same thing with C, C++, Java, JavaScript, and just about every language that ever went into production. Legacy code is everywhere. The “don’t change anything” approach isn’t necessarily a bad thing; it certainly beats “here’s a new library, you’re going to love it, you can’t use the old version any more, and wow, look at all the things it broke, guess you’ll have to fix them.” AI where working code breaks at random is a lot less useful than AI that works day in and day out. Stability is a virtue. It’s impossible to work effectively when the environment changes from day to day and isn’t under your control.</p>



<p class="wp-block-paragraph">But that’s not really what bothers me. It’s rather bizarre that reading well-known sources is treated as a security risk, especially when the “risk” seems to come from an AI-generated description. Of course, we know about hallucinations, errors, and prompt injections. The possibility of a Hacker News post that injects a hostile prompt isn’t zero, and it’s also possible that a model might mistakenly interpret an example of a hostile action as a prompt. I also don’t expect any model to reason that a skill must be safe because it’s been in use for months (though files have time stamps). Artificial intelligence always coexists with artificial stupidity, as does natural intelligence.</p>



<p class="wp-block-paragraph">Guardrails may keep you from going off a cliff, but they may also prevent you from going where you need to go. And that’s a problem. There’s a basic concept from signal processing and data science called the <a href="https://en.wikipedia.org/wiki/Receiver_operating_characteristic" target="_blank" rel="noreferrer noopener">receiver operating characteristic</a> (ROC). In any binary classification system, you can never achieve perfect classification. The only way to guarantee that no true positives (dangerous things) slip through the classifier is to reject everything. The opposite is equally true: The only way to eliminate false positives (things that look dangerous but aren’t) is to let everything through, including dangerous actions. In theory, it’s possible to get arbitrarily close to perfect classification, but you know how that goes: “The difference between theory and practice is bigger in practice than in theory.”</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1600" height="1600" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-1600x1600.png" alt="ROC curve" class="wp-image-19431" style="width:647px;height:auto" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-1600x1600.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-300x300.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-160x160.png 160w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-768x768.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-1536x1536.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Roc_curve-2048x2048.png 2048w" sizes="(max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption">The ROC curve. (This <a href="https://en.wikipedia.org/wiki/Receiver_operating_characteristic#/media/File:Roc_curve.svg" target="_blank" rel="noreferrer noopener">figure</a> is from Wikimedia Commons and licensed under Creative Commons Attribution-Share Alike 4.0 International.)</figcaption></figure>
</div>


<p class="wp-block-paragraph">We know how to make AI “safe”: Go back to 2022 and models that can only tell the difference between cats and dogs. The model might mislabel a few things, but the consequences of an error are small. Safety comes with limitations, and none of us who use AI for real work want to return to the days of dogs, cats, and bananas. And while I don’t want the ability to use Claude to <a href="https://www.bleepingcomputer.com/news/security/openai-anthropic-ai-agents-targeted-real-people-and-systems-in-cyber-tests/" target="_blank" rel="noreferrer noopener">generate hostile attacks against unsuspecting victims</a>, and while I understand the danger of interpreting any input text as a command (for example, an article describing the <a href="https://en.wikipedia.org/wiki/Morris_worm" target="_blank" rel="noreferrer noopener">Morris worm</a>), I have a problem with an AI that refuses to perform reasonable tasks. The ROC tells us that we can’t have perfect guardrails, but there’s no rule against overly fussy ones. What’s allowed, and what’s forbidden? What are the limits? We don’t know. And that’s the situation we’re in now. We can’t know in advance what is and isn’t acceptable, and the rules can change at any time. A tool with unknown limitations is much less useful than a tool that tells you what it can and can’t do. I’ve enjoyed using Claude to write programs that play with <a href="https://www.oreilly.com/radar/the-ai-blues/" target="_blank" rel="noreferrer noopener">prime numbers</a> and infinite series, and fortunately I don’t rely on any of those programs for my job. But what if tomorrow (or a month from now or a year from now) Claude decides that testing whether large numbers are prime signals an attack against cryptography?</p>



<p class="wp-block-paragraph">I’m not completely unsympathetic to scoring an entire conversation rather than individual actions. A series of steps, each of which appears innocuous by itself, is more likely to lead an agent to a hostile action than a single prompt. But again, given how valuable context is, do we really want the penalty to be losing all the context for an innocuous project? There are risks on either side, including the possibility that a model will ignore its guardrails; after all, rules that a harness adds to the context are at best advisory.</p>



<p class="wp-block-paragraph">Guardrails always have unintended consequences. We need to learn what the ROC is teaching us: that it’s impossible to get to the upper left corner of the diagram, where we have perfect rejection of true positives (dangers) and no rejection of false positives. But we also need to get as close to that upper left corner as possible if we want our classifiers to have consistently useful output. An engineering team needs to balance risk against usefulness, and they’re clearly out of balance now. Risks will never go away, but guardrails whose boundaries are unclear and overly strict lead to models and agents that are less useful, rather than more. The bad guys will always figure out how to do bad stuff. Hamstrung AI for the rest of us is not a solution.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/when-guardrails-go-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Is Open-Source AI Really the Dangerous Path?</title>
		<link>https://www.oreilly.com/radar/is-open-source-ai-really-the-dangerous-path/</link>
				<comments>https://www.oreilly.com/radar/is-open-source-ai-really-the-dangerous-path/#respond</comments>
				<pubDate>Tue, 18 Aug 2026 15:58:34 +0000</pubDate>
					<dc:creator><![CDATA[Raffi Krikorian]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19411</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Is-open-source-AI-really-the-dangerous-path.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Is-open-source-AI-really-the-dangerous-path-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[The following article originally appeared on the Tech Policy Press site and is being republished here with the author’s permission. In Washington, AI is increasingly being treated as something that needs to be controlled. The government believes that AI is, first and foremost, a national security asset, meaning that it must be sequestered to prevent [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on the</em> <a href="https://www.techpolicy.press/is-open-source-ai-really-the-dangerous-path/" target="_blank" rel="noreferrer noopener">Tech Policy Press</a> <em>site and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">In Washington, AI is increasingly being treated as something that needs to be controlled. The government believes that AI is, first and foremost, a national security asset, meaning that it must be sequestered to prevent enemies from gaining an advantage. On the other side of the world, in Beijing, the approach is moving in the opposite direction. China is reducing barriers, encouraging adoption, and using open-source AI as a way to spread Chinese-developed technology across global markets.</p>



<p class="wp-block-paragraph">There is now a fundamental divide. The United States is betting that control is the path to preserve its lead. China, instead, is betting on diffusion. The country whose technology is adopted most widely may ultimately shape the future of AI. Questions over open source and open weights sit at the center of that contest.</p>



<p class="wp-block-paragraph">Beginning on July 24, high-profile support for open source moved what is often a debate behind closed doors into the public sphere, where it belongs: Nvidia’s Jensen Huang’s <a href="https://x.com/JensenHuang/status/2080643682408321103" target="_blank" rel="noreferrer noopener">first-ever post on X</a> linked to an <a href="https://images.nvidia.com/pdf/Open-Weights-and-American-AI-Leadership.pdf" target="_blank" rel="noreferrer noopener">open letter</a> signed by 35 companies—including Palantir, Andreessen Horowitz and Microsoft—warning Washington not to over-restrict open source software. “Open models strengthen safety and cybersecurity, accelerate innovation and diffusion, and enable sovereignty,” Huang wrote, leading the likes of Elon Musk and Mark Zuckerberg to post their support.</p>



<p class="wp-block-paragraph">Mozilla signed it because, despite being a very different company from many of the signatories and not always seeing eye to eye, we believe in the spirit and substance of the letter, particularly that ‘openness may be one of the most important paths to AI safety and security.’ The letter was followed by the <a href="https://blogs.nvidia.com/blog/open-secure-ai-alliance/" target="_blank" rel="noreferrer noopener">announcement</a> of the Open Secure AI Alliance for AI Safety and Security, which aims to “build and share open tools that promote responsible use of and trust in AI.”</p>



<p class="wp-block-paragraph">The battle is on. Here’s what’s behind it.</p>



<h2 class="wp-block-heading">Following the money</h2>



<p class="wp-block-paragraph">Open models now do about a third of the world’s AI work, but they collect only about four percent of the money.</p>



<p class="wp-block-paragraph">Those two numbers, taken from Mozilla’s new “<a href="https://stateofopensource.ai/" target="_blank" rel="noreferrer noopener">State of Open Source AI</a>” report, provide more context than the entire AI safety conversation. The report tells a story of a performance gap between open models—the ones whose weights anyone can download, run, and adapt—and the best proprietary systems. While the capabilities are still a jagged frontier, on average, the performance has narrowed sharply over the past year. Costs keep falling. Seventy-nine percent of developers now build with open models. And yet the money hasn’t followed the usage.</p>



<p class="wp-block-paragraph">This is where the battle lies. A third of the work, but only four percent of the money—that gap is the prize.</p>



<p class="wp-block-paragraph">The battle started almost exactly three years ago, when Anthropic’s Dario Amodei <a href="https://www.techpolicy.press/transcript-senate-hearing-on-principles-for-ai-regulation/" target="_blank" rel="noreferrer noopener">told Congress</a> that advanced open-source AI is on a “very dangerous path.” On the surface, his argument is pretty simple: once a model’s weights are public, no one can monitor abuse or revoke access. Once released, an open weights model can’t be “unreleased.” But let’s ask ourselves what that revoke switch actually does. Revocation is not a feature of the model, it is in the API contract. That means it only applies to a lab’s own customers—and the people in Amodei’s threat model were never customers. The labs shipping frontier-class open weights—such as DeepSeek, Alibaba, Mistral, and Moonshot (with its just-released, 2.8T-parameter model Kimi)—mostly sit outside Washington’s reach anyway. Two million open models already sit on Hugging Face; many run on a laptop. That means that in the real world, there’s no single kill switch to throw.</p>



<p class="wp-block-paragraph">This distance between what such a regulatory switch claims to control and what it actually does is what’s missing from the debate over which models are “safer.” It’s also the key to the fight over who captures AI’s value.</p>



<p class="wp-block-paragraph">To the companies that built the proprietary models, value is about maintaining a privileged position and using everything at their disposal to protect it—policy, pricing, and technology. For everybody else, value means the ability and power to shape, audit, and improve the systems we all depend on. And increasingly, that power doesn’t live in the model at all.</p>



<p class="wp-block-paragraph">For instance, right now, two developers can take the identical open model and ship completely different products: a scam-call operation or a nurse-advice hotline. The model doesn’t know (or care) about the difference. What is making the actual decisions is the layer of software built around it—the agentic harness—that sits between users and the model, determining what the application can access, remember, and act on.</p>



<p class="wp-block-paragraph">As models get cheaper, not to mention more interchangeable, that harness is where the power is actually going. And it’s being quietly locked up by the big labs. Farmers know how this story goes. They bought their tractors outright, but the manufacturer kept the keys to the software, making the farmers owners on paper but renters in practice. It took years of lawsuits—and, <a href="https://medium.com/enrique-dans/the-ftc-just-reminded-john-deere-what-ownership-means-when-you-buy-a-machine-you-should-be-able-fb8b59f3911d" target="_blank" rel="noreferrer noopener">just this month</a>, the Federal Trade Commission—to start prying that lock back open. A similar arrangement is now being built for the software that reads your email, books your travel, and remembers every detail of your life.</p>



<p class="wp-block-paragraph">This isn’t an accident of engineering; it’s a business model. A closed wrapper makes money by making itself expensive to leave. An open one can’t lock the door, so it survives only by staying worth using. Same underlying technology, opposite incentives. It’s the reason the value captured by open models sits at four percent while their usage sits at a third. The real question for all the builders right now isn’t which model you’re using. Rather, it’s whether you could leave for a different one.</p>



<h2 class="wp-block-heading">Guess who’s deciding the future?</h2>



<p class="wp-block-paragraph">The debate that matters isn’t really which models get released or which get regulated; it’s who controls the layer wrapped around them. That’s being decided right now—mostly by developers who don’t realize they’re the ones responsible. For a glimpse of the future, we can look to the internet: it exists as it does today because, when the architecture was still up for grabs, developers chose HTML and HTTP over proprietary walled gardens like AOL. AI is at that same juncture now, and the fact that two million open models already exist suggests plenty of builders have shown up early. That window doesn’t stay open on its own, and it doesn’t stay open forever. It stays open because people keep choosing it.</p>



<p class="wp-block-paragraph">For developers, four habits matter most in ensuring an open future:</p>



<ol class="wp-block-list">
<li><strong>Build on open harnesses, not just open models.</strong> The orchestration layer above the weights is where capability is concentrating, and closed labs are already welding it shut. Keeping it open takes deliberate effort.</li>



<li><strong>Own the memory layer. </strong>Store accumulated context in portable controllable formats, so it’s retrievable if a vendor changes its terms rather than trapped inside one.</li>



<li><strong>Keep a second model warm.</strong> Integrate an open model and keep it production-ready even while running primarily on a closed API, so switching is cheap if it becomes necessary.</li>



<li><strong>Don’t assume all open stacks are equal. </strong>Open models skew toward particular regions and providers; keeping this layer genuinely open means actively supporting a geographically distributed set of options, not defaulting to whichever model is cheapest this quarter.</li>
</ol>



<p class="wp-block-paragraph">None of this requires believing anyone is acting in bad faith. It’s worth noticing, though, that the loudest safety arguments arrived right around the time models got cheap enough for the real competition to move up a layer. That’s not evidence of a conspiracy—it’s just where the incentives point, and it’s why so much of the current debate is aimed at the wrong target.</p>



<p class="wp-block-paragraph">More evidence is in our report, and most of it is good news: performance gaps closing, costs collapsing, millions of developers building. The question in front of developers isn’t whether AI is dangerous—it’s whether they’ll hold the keys to the machines they’re building. The question for governments is whether the keys they’re reaching for turn anything at all. For now, that door is still open. Let’s work together to keep it that way.</p>



<p class="wp-block-paragraph"><em>And be sure to join us at </em>AI Codecon: Building with Open Source AI<em> on August 31, a free half-day virtual conference. You’ll hear from leading developers and technical experts working with open-weight models, self-hosted infrastructure, and real-world AI workflows, and learn how building in the open gives teams more control over costs, data privacy, and what they ship. <a href="https://www.oreilly.com/AI-Codecon/" target="_blank" rel="noreferrer noopener">Register today</a> to save your spot.</em></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/is-open-source-ai-really-the-dangerous-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Zero to Agent in 30 Minutes: From Prompting to Loop Engineering with Ofer Mendelevitch</title>
		<link>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-from-prompting-to-loop-engineering-with-ofer-mendelevitch/</link>
				<comments>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-from-prompting-to-loop-engineering-with-ofer-mendelevitch/#respond</comments>
				<pubDate>Tue, 18 Aug 2026 10:54:48 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[Zero to Agent in 30 Minutes]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19416</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/zero-to-agent-cover-radar.png" 
				medium="image" 
				type="image/png" 
				width="504" 
				height="504" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/zero-to-agent-cover-radar-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[What changes when coding agents can pursue a goal, verify their work, and review one another]]></custom:subtitle>
		
				<description><![CDATA[Ofer Mendelevitch, head of developer relations at BAND, used this episode of Zero to Agent in 30 Minutes to trace how coding workflows can give agents progressively more room to work on their own. Using a package version resolver as a running example, he compared step-by-step prompting with loop engineering and then showed how multiple [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ofer Mendelevitch, head of developer relations at BAND, used this episode of <em>Zero to Agent in 30 Minutes</em> to trace how coding workflows can give agents progressively more room to work on their own. Using a package version resolver as a running example, he compared step-by-step prompting with loop engineering and then showed how multiple agents can collaborate on the same task.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Zero to Agent in 30 Minutes: From Prompting to Loop Engineering With Ofer Mendelevitch" width="500" height="281" src="https://www.youtube.com/embed/vg5IkLHx9FU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>How to move from prompting to multi-agent coding</strong></h2>



<ol class="wp-block-list">
<li><strong>Start with explicit prompts in every step.</strong> Give the coding agent a specification and tell it what to implement. Ofer used a package version resolver with existing Python tests, then followed up with prompts to verify the implementation, resolve open questions, and add packaging.</li>



<li><strong>Define a verifiable goal.</strong> Loop engineering replaces a sequence of individual prompts with an end result the agent can check for itself. In Ofer’s example, the agent had to implement the resolver and continue iterating until it was ready to ship with packaging. The agent can inspect the code, add tests, run them, fix failures, and verify the package without waiting for another human prompt after each step. He demonstrated how this approach allowed the agent to work through the task until the goal was met.</li>



<li><strong>Add a second agent as a reviewer.</strong> Ofer then moved from a single coding agent to two collaborating agents (using Jam), assigning one to write the code and another to review it. The reviewer examined the specification, provided feedback, and ran additional checks, including adversarial probes. A larger group of coding agents could include agents focused on security, compliance, testing, frontend, backend, or DevOps. He also described using different coding agents together so that one model can challenge work produced by another.</li>
</ol>



<p class="wp-block-paragraph">The shift toward more autonomous coding workflows starts with how the work is framed. By defining goals agents can verify, giving them room to iterate, and assigning complementary agents to review the work, developers can reduce the amount of human intervention required and achieve higher quality for the code generated by the coding agents.</p>



<h2 class="wp-block-heading"><strong>Coming next week</strong></h2>



<p class="wp-block-paragraph">Next week, Craig Hewitt will host <em><a href="https://learning.oreilly.com/live-events/zero-to-agent-in-30-minutes/0642572392338/" target="_blank" rel="noreferrer noopener">Zero to Agent in 30 Minutes</a></em> to focus on building a voice-first workflow with OpenAI Codex<strong>.</strong> The episode will show how natural voice commands can operate a development environment, run subagent workers in parallel, and trigger browser-use workflows. It will also cover structured Codex project directories and hands-free system-level execution, with the developer directing the work by voice.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-from-prompting-to-loop-engineering-with-ofer-mendelevitch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>What’s an Orchestrator—and Why Does Software Need One?</title>
		<link>https://www.oreilly.com/radar/whats-an-orchestrator-and-why-does-software-need-one/</link>
				<comments>https://www.oreilly.com/radar/whats-an-orchestrator-and-why-does-software-need-one/#respond</comments>
				<pubDate>Mon, 17 Aug 2026 15:55:11 +0000</pubDate>
					<dc:creator><![CDATA[Tim O'Brien]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19404</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Whats-an-orchestrator-and-why-does-software-need-one-.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Whats-an-orchestrator-and-why-does-software-need-one--160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[A new job title for experts who ship systems by directing systems, agents, and outcomes]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on Medium and is being republished here with the author’s permission. Everybody’s talking about the death of developers. I get it. The developer whose job was to write boilerplate or scaffold CRUD apps is done—a model can do that in seconds, and that developer is not coming back. But the [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on </em><a href="https://medium.com/@tobrien/whats-an-orchestrator-and-why-does-software-need-one-5079bd71e57e">Medium</a> <em>and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Everybody’s talking about the death of developers. I get it. The developer whose job was to write boilerplate or scaffold CRUD apps is done—a model can do that in seconds, and that developer is not coming back. But the people announcing the end of programming are missing something. There’s a new job title that’s starting to emerge across several areas in software.</p>



<p class="wp-block-paragraph">Architects and developers are becoming orchestrators—one person directing work that once required entire teams. This shift will reach far beyond software, but software engineering is where I’ve seen it firsthand.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="700" height="467" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-13.png" alt="The orchestrator stands between the machine and the consequences. (Image Assist by Anthropic)" class="wp-image-19405" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-13.png 700w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-13-300x200.png 300w" sizes="(max-width: 700px) 100vw, 700px" /><figcaption class="wp-element-caption">The orchestrator stands between the machine and the consequences. (Image Assist by Anthropic)</figcaption></figure>



<p class="wp-block-paragraph">An orchestrator knows how to develop software, but their job isn’t to write the code anymore—it’s to oversee a system, orchestrate tools and agents, and generate components into something that has to work in production. But the most important distinction between an “orchestrator” and a “software developer” is that an orchestrator focuses less on delivering software and more on orchestrating the systems that can both operate and develop software.</p>



<p class="wp-block-paragraph">The technical expertise that used to be applied to figuring out the structure of a database schema or an object model will now be applied to guiding a set of subsystems that have taken responsibility for most tactical, line-level decisions. Where a “developer” in 2023 focused on deciding how a React application might store state, an “orchestrator” in 2027 is focused on a DESIGN.md file that sets standards for a subsystem that is responsible for fusing analytics data with input from customer feedback to recommend, test, and implement site changes as part of a large, more autonomous approach to running a business.</p>



<h2 class="wp-block-heading">Orchestrating systems of delegated intelligence</h2>



<p class="wp-block-paragraph">While everyone is calling everything “agents” these days, I’m also going to put forward an idea. An orchestrator can and will use systems that resemble some of the more “agentic” approaches we’re all using today, from systems like Hermes, OpenClaw, or every other system that has started to call itself an “agent.” I’m starting to see that the term is overused. Taking a step back from the technology we’re using today, I’m going to suggest that the job of an “orchestrator” is to coordinate systems that fall under a new category called “delegated intelligence.”</p>



<p class="wp-block-paragraph">We’ve been calling everything “artificial intelligence” for several decades. That term, mixed with “Generative AI” and “Inference Engines,” fails to capture what we’re starting to see in practice. An agentic system that has memory and can start to operate with a level of independence is exhibiting “delegated intelligence,” and the word “delegated” is doing a lot of work. It implies that systems in this category will always be traceable back to an accountable operator, or, in this case, an Orchestrator.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Fundamental to the shift toward Orchestrators is a combination of automation, productivity, and accountability. As organizations, companies, and governments start to make use of delegated intelligence to support a more autonomous approach to design, operation, and engineering, there will be an increasing need to establish accountability. If your business operates critical infrastructure on a set of autonomous agents, one of the questions that will become necessary to answer in the case of an outage is “on whose authority was this delegated intelligence operating?”</p>
</blockquote>



<h2 class="wp-block-heading">An ecosystem of orchestrators: Generalists and specialists</h2>



<p class="wp-block-paragraph">There are orchestrators, and then there are technical specialists. A move towards generalist expertise marks orchestrators, because the capability of a specialist is now found mostly in a model. You’ll still need a couple of specialists, but not one for every technology—and even some of those specialists will be specialist orchestrators. It’s going to get complicated.</p>



<p class="wp-block-paragraph">You’ll be looking for generalist orchestrators who understand the whole thing end to end. You could think of an orchestrator as an expert Renaissance programmer—usually people with a couple of decades of experience who understand the end-to-end life cycle of software development. Those are the individuals becoming orchestrators, and it’s changing the whole makeup of IT departments. We’re no longer programmers.</p>



<p class="has-text-align-center wp-block-paragraph">. . .</p>



<p class="wp-block-paragraph">Let me use my own experience here to capture what the new reality looks like. I recently had to add DRM to a series of audiobooks I’m self-publishing—an <a href="https://en.wikipedia.org/wiki/Audio_watermark_detection" target="_blank" rel="noreferrer noopener">inaudible watermark</a> encoding order-specific data into the audio file, so that if I find one of these files in the wild, I can identify who bought it. I’m not a subject matter expert in overlaying audio watermarks, but I do understand how to write code that processes sound files.</p>



<h2 class="wp-block-heading">Orchestration: From months to minutes</h2>



<p class="wp-block-paragraph">This particular task would have taken me weeks or months, and not long ago I would have started the project by creating a git repository and opening up an IDE. That’s not how it works in 2026.</p>



<p class="wp-block-paragraph">When I orchestrated the creation of this system two weeks ago, it took 20 minutes, and the tools gave me three dimensions of highly encrypted watermarking and fingerprinting—essentially the work product of 3 steganographic audio specialists.</p>



<p class="wp-block-paragraph">Okay, I lied—it was 40 minutes. The first 20 minutes I was asking the models to come up with 5 different approaches so I could choose the right one. But I want to emphasize that I asked the system to produce 5 different proposals and then model the long-term cost and operability of each option. I also gave it direction to think about customer experience, create a matrix of pros and cons for each option, and end with a recommendation.</p>



<p class="wp-block-paragraph">This was all done by a system that has been tracking content development for several months, and it used customer knowledge, analytics, and product design to inform the set of options it was giving its Orchestrator before jumping into implementation.</p>



<h2 class="wp-block-heading">Your job isn’t code, it’s orchestration</h2>



<p class="wp-block-paragraph">Part of my job now is to leverage these tools not just to create, but during ideation, product design, and quality engineering. The Orchestrator is there because that person knows what questions to ask. It would have taken me three months and a large team to get this done only four years ago, and I shipped it without reading every line.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">To be frank, it’s a weird space to be in, and the “me” from three years ago would have been really uncomfortable hearing that I implemented something but didn’t write the code myself. In fact, my initial reaction to Steve Yegge saying that he should stop reading his code was very negative, and I still have some reservations about that belief, but I will say that in my own practice, I’m starting to not read my code—because it’s not my code.</p>
</blockquote>



<p class="wp-block-paragraph">Like a lot of programmers reading this, I’ve had to go through an identity moment as a programmer—becoming comfortable with shipping something to production I might not have read every line of. There’s maybe a hundred thousand lines of code—too much to read—and honestly, it’s not my job anymore. I’m an orchestrator, and it would be highly inefficient if I tried to keep up.</p>



<p class="wp-block-paragraph">I’m not a vibe-coder, and I’m not a “citizen developer”—a term I hate enough to curse at because it’s just the wrong word. I’m someone who could write the code, but I’ve decided to delegate that task to a system that has more information at hand than I could ever hope to assemble. And while these systems, the delegated intelligence tools like an agent, can implement systems in mere minutes, they still need a human to weigh in on direction. And I would argue that we still need a human to remain present and accountable.</p>



<p class="wp-block-paragraph">The Orchestrator knows enough to understand what was done for them and how to dig into the details when something breaks. They know how to debug, they have a sense of what’s valid and what’s not, and they’re honest about what they know and what they don’t.</p>



<h2 class="wp-block-heading">Orchestrators as finishers</h2>



<p class="wp-block-paragraph">Here’s the controversial part. This is absolutely not about “democratizing access to technology.” There’s a myth that anyone can pick up these tools and code, and that is true—yes, anyone can code, but not everyone can deliver it to production in a scalable and secure manner.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">A colleague of mine recently wrote that it’s easy to start projects with generative AI, but what’s difficult is finishing them. It takes the same effort, energy, and technical expertise to deliver something to production as it always has.</p>
</blockquote>



<p class="wp-block-paragraph">The idea that anyone and their brother can pick up a generative AI tool and create technical perfection—that myth is about to expire. If you build a complicated, technical system without an individual responsible for orchestrating the creation and operation of that system, there will come a day when you have to pay someone to do that for you, and that someone is going to charge you a lot.</p>



<h2 class="wp-block-heading">Orchestrators plan for contingencies: Ability to support</h2>



<p class="wp-block-paragraph">That DRM system I just talked about—I haven’t read every line, but before I shipped it, I made sure that I understood the baseline for support going forward. While I delegated authority to an agent to create it, I also made sure to ask that same agent to capture code locations, architecture, approach, and to generate a system of documents that could be used to debug and support it if AI was unavailable.</p>



<p class="wp-block-paragraph">Have I read this “pilot manual” from start to finish before deploying this to production? No. But I understand where the throttle gauge is, and if I needed to land this plane without autopilot, I could. This is one of the responsibilities of the new role. Planning for “offline,” thinking through contingencies.</p>



<p class="wp-block-paragraph">The key point is that I’m qualified enough to understand the pilot manual that AI wrote for me in case I need to debug it, and if AI were to disappear tomorrow, I could rebuild it myself. That is not true for many people introducing themselves to coding through AI, and it creates a dependence on the tools that needs to be managed—one of the ways it will be managed is through certified orchestrators who can create but also support systems without the tools, especially in regulated and critical areas.</p>



<h2 class="wp-block-heading">Adapting the organization to the emerging role</h2>



<p class="wp-block-paragraph">Things are changing fast—one Orchestrator equals 20 or 30 developers, plus teams of QA engineers. While we’re still going to need product people and people who think about the customer, the technical work is consolidating around the person directing it.</p>



<p class="wp-block-paragraph">And before you ask—why not just call this an architect? Because architect never worked. If you’ve worked in a company that has architects, you&#8217;ll understand that while a few architects continue to keep up-to-date with technology, many also tend to lean back on past experience delegating day-to-day technology to junior engineers. This role differs from that of an architect because it calls for someone to be engaged with specifications, outcomes, and operations.</p>



<p class="wp-block-paragraph">Orchestrator isn’t the incommunicative programmer that stares at an IDE all day; they are the individual that understands the full, end-to-end flow not just of data in a technical system but how the business operates and adapts autonomously. They are technical, but they are also focused on providing oversight, and they are the individual responsible for deciding what intelligence can be delegated.</p>



<p class="wp-block-paragraph"><strong>So how do we create orchestrators?</strong> Not from a bootcamp or a six-week certificate. This is going to take an apprentice program—years of it, the same way we create doctors and lawyers. You work under someone who knows what to pay attention to, and you learn by watching them make decisions.</p>



<p class="wp-block-paragraph">These are employees who can do real damage, and they’re a walking liability. When a corporation buys insurance for people writing code, that’s one set of risks. When you’re insuring professionals who are a hundred times more productive, they also carry a hundred times more responsibility. Insurance rates, regulations, and certification requirements are all going to go up. Doctors carry <a href="https://www.ama-assn.org/practice-management/sustainability/medical-liability-malpractice-insurance" target="_blank" rel="noreferrer noopener">malpractice insurance</a> because their decisions affect people’s lives.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">A <a href="https://www.nspe.org/resources/licensure/what-pe" target="_blank" rel="noreferrer noopener">Professional Engineer</a> has to be licensed because engineering affects public safety. Orchestrators are headed the same direction.</p>
</blockquote>



<p class="wp-block-paragraph">If you fast-forward 20 or 30 years, what we call programmers now are going to be orchestrators, and they’re going to look more like doctors and lawyers than like this band of people we have now who write code.</p>



<p class="wp-block-paragraph">Code will be part of the job, but not the majority of it.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/whats-an-orchestrator-and-why-does-software-need-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>When AI Writes the Code, Specifications Need an Exit Strategy</title>
		<link>https://www.oreilly.com/radar/when-ai-writes-the-code-specifications-need-an-exit-strategy/</link>
				<comments>https://www.oreilly.com/radar/when-ai-writes-the-code-specifications-need-an-exit-strategy/#respond</comments>
				<pubDate>Mon, 17 Aug 2026 10:45:18 +0000</pubDate>
					<dc:creator><![CDATA[Markus Eisele]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19398</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/When-AI-writes-the-code-specifications-need-an-exit-strategy.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/When-AI-writes-the-code-specifications-need-an-exit-strategy-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[AI coding teams need small change briefs, native engineering artifacts, and enough judgment to stop Markdown specifications becoming a second codebase.]]></custom:subtitle>
		
				<description><![CDATA[The following article has been extended and rewritten by Markus Eisele from The Main Thread and is being republished here with the author’s permission. Open a repository after six months of spec-driven agent work and you may find a second system sitting next to the code. Requirements, research notes, high-level designs, low-level designs, implementation plans, [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article <em>has been extended and rewritten by Markus Eisele</em> from</em> <a href="https://www.the-main-thread.com/p/spec-driven-development-exit-strategy" target="_blank" rel="noreferrer noopener">The Main Thread</a><em> and is being republished here with the author</em>’<em>s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph">Open a repository after six months of spec-driven agent work and you may find a second system sitting next to the code. Requirements, research notes, high-level designs, low-level designs, implementation plans, task lists, review reports, and a growing stack of Markdown files that explain what the code is supposed to mean. Even if the code changed significantly last Tuesday, the last documentation update was weeks ago.</p>



<p class="wp-block-paragraph">I understand how teams get there. And it’s not a really new effect after all. We had software evolving parallel to documentation since I can remember. Now that agents produce code so  quickly, we try to control the drift and the code generation by moving more thought in front of implementation. Instead of documenting code, we try to drive code generation with it, making Markdown files with requirements, decision records, design approaches, and acceptance criteria the center of gravity and turning them into our workflow drivers.</p>



<p class="wp-block-paragraph">What effectively is becoming a very large prompt can easily fill a significant portion of the context window even of modern agents before any relevant source code gets added to it. Natural language specification is a weak system for agents to synchronize a codebase with. Without additional attention and diligence, most agents I work with slowly shift attention away from it quickly and focus on the stronger signals in the codebase, forgetting to update the specification eventually.</p>



<p class="wp-block-paragraph">Even if it sounds like it, I am not advocating for one-shot prompting or vibe coding here. We still need some specifications to build successful software. The mistake is treating a specification as a permanent natural-language copy of the software. A useful spec describes the next change, documents the decisions that drive the change, sets boundaries, and gives us and the agents enough verification surface. But as soon as the change ships, most of it should be removed.</p>



<p class="wp-block-paragraph">What remains should move into the artifacts software teams already know how to maintain. First and foremost, obviously, the code. But I also count schemas, configuration, and policies as relevant artifacts. They carry meaning about domain knowledge and system configuration. Two categories that I value highly get easily forgotten: tests as the stable verification layer and runtime telemetry. In fact, I do let my agents look at evidence from all these places not only to hunt for errors but also to continuously optimize existing codebases. Oh, and I do keep decision records. But only a small number and only when their content really has no other place in any of the mentioned artifacts. They can even look like <a href="https://github.com/myfear/aicontext" target="_blank" rel="noreferrer noopener">Javadoc</a>, but that will be another article someday.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="728" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10-1600x728.png" alt="A change specification should be temporary by default. After implementation, durable information moves into code, schemas, tests, policies, and operational signals. The rest leaves the active context." class="wp-image-19399" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10-1600x728.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10-300x137.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10-768x350.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10-1536x699.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-10.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>A change specification should be temporary by default. After implementation, durable information moves into code, schemas, tests, policies, and operational signals. The rest leaves the active context.</em></figcaption></figure>



<h2 class="wp-block-heading">Code is the fact</h2>



<p class="wp-block-paragraph">Code is actual behavior. Once code is deployed to production, users and connected systems are depending on it. Even a mistake can become an observed contract because it has behaved the same way for three years. The runtime behavior takes precedence in this contract because nobody checks the specification anymore, even if it defines a very different behavior. This is the strongest signal for me to start with the actual code in the production system. Reading a natural-language summary instead of the implemented truth cannot accurately reflect runtime behavior. Code to me is the ultimate, executable specification. Just written in a very specific and deterministic language.</p>



<p class="wp-block-paragraph">What production code cannot drive though is the next version or iteration of a feature. While agents can infer technical patterns from well-structured codebases, there’s no way they could predict policy changes or future feature requests. Neither can they know about regulatory requirements like retention periods or other specific exceptions, such as why one export runs every night for only one customer. That specific context has to come from somewhere else. But it does not require us to keep a permanent prose description of the whole system. We need just enough context to decide the delta: the difference between what exists and what should exist next.</p>



<h2 class="wp-block-heading">Written words are for the delta</h2>



<p class="wp-block-paragraph">A change specification should exist when it helps a team decide and review that delta. It should name the outcome, non-goals, constraints that differ from current behavior, and the evidence required for acceptance. It might even contain technical design elements when new features cross architectural boundaries or introduce new patterns that are not present in the code yet. Sometimes it is also worth thinking about how expensive reversing the change is, especially if the existing system has various implementations for a certain pattern and the risk is high that an agent might invent another new version.</p>



<p class="wp-block-paragraph">The list necessary for changes is very short:</p>



<ul class="wp-block-list">
<li>The intended outcome and non-goals (where necessary)</li>



<li>Known unknowns and decisions that need human judgment</li>



<li>Affected system boundaries and authoritative interface artifacts</li>



<li>Functional and nonfunctional constraints that differ from today</li>



<li>Acceptance criteria/test scenarios covering the risky path</li>
</ul>



<p class="wp-block-paragraph">I prefer calling this a “change brief” instead of a “specification.” Specification carries too much negativity. It sounds heavyweight and reminds me of times long past. It also pretends to be complete. And this completeness is making it very expensive.</p>



<p class="wp-block-paragraph">We have tried exhaustive specifications before and produced requirement documents and other  high- and low-level designs, followed by architecture decision records for everything. I remember reading folders full of paper over the weekend to get started on a new project on Monday. Way before AI even entered all our lives and codebases. We called this waterfall back in the day, and the approach still has the same negative side effects today. The documentation was complete in an administrative sense and was mostly useless in the engineering sense. We all have seen this happening. Agents easily recreate the same erratic results from overflowing documentation, like we did back in the day.</p>



<p class="wp-block-paragraph">One particular risk I am seeing with many teams is that they let agents generate the initial version of the spec. A long workflow run produces not only the research but directly derives the requirements, design, and planning, and reviews artifacts on top. While the completeness makes everything look very controlled and defined, it also generates a lot more material to be reviewed and approved. Even if models and harnesses continue to evolve at breathtaking speed, it is still challenging for them to generate real cohesiveness out of chaos. The chance they put the wrong attention on some tempting repetitive words is high. This results in an even higher burden on the human reviewer and makes it endlessly harder to keep the various documents aligned.</p>



<p class="wp-block-paragraph">I think that additional prose like research notes, prototypes, and design records should only be added to a software project when uncertainty justifies them. They resolve a specific problem. Or help navigate the terrain. I <a href="https://www.oreilly.com/radar/why-ai-coding-agents-still-need-clear-specs/" target="_blank" rel="noreferrer noopener">wrote about this before</a>. They should absolutely not become required stages for every pull request.</p>



<h2 class="wp-block-heading">The map will always be incomplete</h2>



<p class="wp-block-paragraph">A prompt, ticket, or change brief captures what we know before the work starts. The codebase, runtime information, configuration, connected systems, and years of accumulated decisions glued into code hold the rest. Some of those decisions were never written down.</p>



<p class="wp-block-paragraph">When agents get to work they expose the missing information. Reading a module reveals an unexpected dependency. A prototype shows that a specific user-interaction is awkward. A test uncovers an edge case. Production data contradicts an assumption in the design. This <a href="https://x.com/trq212/status/2073100352921215386" target="_blank" rel="noreferrer noopener">field guide</a> on finding unknowns in agent work describes the problem well. We can identify some unknowns at the start. Others appear only after we inspect the references, build a prototype, or review a result using judgment that was difficult to write down in advance.</p>



<p class="wp-block-paragraph">Discovery happens and continues during the work:</p>



<ul class="wp-block-list">
<li><strong>Before implementation</strong>, inspect the current system and identify decisions that could change the architecture or user experience. When preferences are difficult to describe, build a cheap prototype.</li>



<li><strong>During implementation</strong>, record meaningful deviations. Stop and reassess when a new unknown changes the risk or direction.</li>



<li><strong>After implementation</strong>, read the code, run the checks, and compare the result with the original intent.</li>
</ul>



<p class="wp-block-paragraph">The change brief remains part of this loop. It provides the starting point and records the intent, while the work supplies the information needed to complete it. Only promote durable constraints.</p>



<h2 class="wp-block-heading">Keep durable facts in their native form</h2>



<p class="wp-block-paragraph">When I say “promote durable constraints,” I do not mean turning every decision into permanent Markdown. That gives us the same stale documentation problem in a different way. Software engineering already provides better versions for most of the necessary, durable facts:</p>



<ul class="wp-block-list">
<li>API shape and compatibility belong in OpenAPI, AsyncAPI, protocol schemas, types, and compatibility tests.</li>



<li>Data invariants belong in types, database constraints, validation, and migration checks.</li>



<li>Security rules belong in access policies, static analysis, dependency policies, and runtime enforcement.</li>



<li>Architecture boundaries belong in module structure, dependency rules, and focused architecture tests.</li>



<li>Reliability requirements belong in load tests, service objectives, telemetry, and alerts.</li>



<li>Release rules belong in continuous integration and deployment policies.</li>
</ul>



<p class="wp-block-paragraph">These artifacts are already part of delivery. A failed schema check or alert needs to be fixed and handled while the corresponding paragraph in an old design folder does not.</p>



<p class="wp-block-paragraph">Natural language and specification still have a place in software. Specific domain knowledge like business policy, trade-offs, and even architectural rationale do not always fit into an executable artifact or annotation. I keep that prose short and close to the thing it explains. A small architecture decision record is worth keeping when a future team might otherwise repeat an expensive investigation and a code comment cannot justify the implementation. Recording every local choice just hides the few decisions that matter and confuses the agents that are supposed to build the software. Ask which fact must survive and what its authoritative form should be.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="1005" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11-1600x1005.png" alt="Briefs and design notes support ongoing changes. Native engineering artifacts carry the constraints and evidence that remain relevant after a release." class="wp-image-19400" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11-1600x1005.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11-300x189.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11-768x483.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11-1536x965.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-11.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>Briefs and design notes support ongoing changes. Native engineering artifacts carry the constraints and evidence that remain relevant after a release.</em></figcaption></figure>



<h2 class="wp-block-heading">Judgment belongs in the workflow</h2>



<p class="wp-block-paragraph">Heavyweight specification methods try to control quality by prescribing the path. Every change goes through the same documents, reviews, and test categories. That approach creates a lot of attention on low-risk work while avoiding the deep technical judgment needed for harder changes. A copyedit and a payment-flow change should not have to follow the same process or testing strategy.</p>



<p class="wp-block-paragraph"><a href="https://simonwillison.net/2026/Jul/3/judgement/" target="_blank" rel="noreferrer noopener">Simon Willison describes</a> a simpler approach: give the coding agent the outcome and let it judge how much process the task requires. His examples include deciding whether a change warrants automated tests and whether routine implementation can be delegated to a cheaper model while keeping judgment-heavy work in the main loop. This replaces a growing list of procedural branches with one expectation: Choose tactics that fit the work. That matches how I want these systems to operate. And I think it extends to specification and how we document intent.</p>



<p class="wp-block-paragraph">Agentic changes still require clear boundaries. The team defines the outcome, safety constraints, ownership, and who has authority to accept the result. Within those boundaries, the agent can choose its tactics. When uncertainty introduces consequences beyond its authority, it should surface the problem and ask for a decision.</p>



<p class="wp-block-paragraph">The workflow then starts matching the risk introduced:</p>



<ul class="wp-block-list">
<li>A small, familiar change can move from a short brief to implementation and review. Almost a one-shot prompt change.</li>



<li>Unfamiliar code requires factual research before design. Explore codebases, identify implementation details. Preload intent and agent knowledge.</li>



<li>An unclear user experience calls for prototypes and comparison. And might even require user research after all.</li>



<li>An architectural change requires explicit human alignment.</li>



<li>High-consequence behavior requires stronger independent evidence and approval.</li>
</ul>



<p class="wp-block-paragraph">I would rather add processes and additional artifacts when the work becomes risky or unfamiliar. Starting every change with the full ceremony just burns time and context.</p>



<h2 class="wp-block-heading">Context is an engineering budget</h2>



<p class="wp-block-paragraph">Large specifications cost more than the time required to write and maintain them. They also  compete with the code and evidence the agent needs for the current decision. Every requirement, design note, repository instruction, and tool definition consumes part of a limited working context. Extra material burns expensive tokens, but the much bigger cost is lost attention. Important rules become harder to follow when they are surrounded by stale or duplicated material. A spec that leaves too little room for the repository defeats its own purpose.</p>



<p class="wp-block-paragraph">Progressive disclosure is a better fit. Give the agent a small map, a few stable rules that apply broadly, and pointers to deeper material. A concise AGENTS.md can document build commands, repository layout, and architectural boundaries. It should not narrate every class or repeat API documentation. The file helps humans for the same reason: It tells them where to look without pretending to replace what we will find.</p>



<p class="wp-block-paragraph">Experience with Research-Plan-Implement shows what happens when the context grows too large. The original workflow moved human review before implementation, but teams ended up with large prompts and plans that could reach 1,000 lines. Engineers reviewed those plans while treating generated code almost like compiler output. The implementation could still drift from the approved plan, which meant that eventually someone had to reconstruct the decision from the code. That problem becomes worse in brownfield systems, while greenfield systems might even survive large plans because they inherited no hidden constraints. Complex changes, in contrast, often inherit behavior that plans may miss.</p>



<p class="wp-block-paragraph">In “<a href="https://www.youtube.com/watch?v=YwZR6tc7qYg" target="_blank" rel="noreferrer noopener">Everything We Got Wrong About Research-Plan-Implement</a>,” Dexter Horthy revisits the original position. Teams shipped more code and then spent much of the gain time cleaning up earlier low-quality output. The implementation could also diverge from the reviewed plan, which forced engineers to reconstruct what happened from the code anyway. The revised workflow uses smaller contexts for factual research, design alignment, structure, implementation, and review. I take a simple lesson from this: Research and design give me leverage, but I still need to understand and own the code that is generated.</p>



<h2 class="wp-block-heading">Modernization makes this obvious</h2>



<p class="wp-block-paragraph">A mature application contains several kinds of behavior in the same codebase. Some logic represents durable business logic or implements a published interface. Some code exists because an old platform imposed a technical constraint. An incident fix remains long after its  context is gone. And even defects can survive to the point where they almost look intentional when undiscovered.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="952" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12-1600x952.png" alt="Legacy code records accumulated decisions but it does not tell us which of those still belong in the system. Modernization requires judgment about which behavior to preserve, verify, redesign, or remove." class="wp-image-19401" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12-1600x952.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12-300x179.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12-768x457.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12-1536x914.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-12.png 2048w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /><figcaption class="wp-element-caption"><em>Legacy code records accumulated decisions but it does not tell us which of those still belong in the system. Modernization requires judgment about which behavior to preserve, verify, redesign, or remove.</em></figcaption></figure>



<p class="wp-block-paragraph">An agent that treats every code variant as a new target specification can translate those layers faithfully into a new language or architecture. The translation may be technically accurate but also preserves defects and old architecture approaches in newer and cleaner code.</p>



<p class="wp-block-paragraph">I design changes to brownfield projects similar to the way I did modernizations before the agentic age. Classification and observation are central aspects that I put first. The goals are:</p>



<ul class="wp-block-list">
<li>Preserve durable business invariants and externally required behavior</li>



<li>Verify behavior that appears active but lacks clear ownership or evidence</li>



<li>Redesign logic tied to obsolete architectural constraints</li>



<li>Remove dead paths, duplicated logic, and confirmed defects</li>
</ul>



<p class="wp-block-paragraph">You can read a lot about static source code analysis when it comes to brownfield assessments or modernization. You can inspect dependencies and current behavior by executing tests and maybe even adding test cases to secure behavior. What I do recommend is to also embrace <a href="https://www.the-main-thread.com/p/mutation-testing-quarkus-java-tutorial" target="_blank" rel="noreferrer noopener">mutation testing approaches</a> (e.g., PIT) to find hidden assumptions and failure behavior. Code coverage is also seeing a renaissance because it aids in identifying dead code paths.</p>



<p class="wp-block-paragraph">On top of that we still ignore operational context and telemetry data. Both are vital elements to not only control but also to help judge existing behavior. All this together helps you judge which elements belong in the system going forward and which don’t. It all starts from code. It is the foundation of the behavior we have. The original and leading specification. A change brief will always be temporary and its sole job is to describe the delta between existing and future functionality. The new implementation and its native checks become the next durable state.</p>



<h2 class="wp-block-heading">Small specs still need real evidence</h2>



<p class="wp-block-paragraph">Keeping specifications small does not mean returning to a loose prompt followed by hopeful review or even vibe-coding approaches. An agent can turn an underspecified request into a coherent implementation before the missing decisions become visible to anyone. The result may compile, pass the available tests, and look internally consistent. That coherent appearance is part of the risk now. Unapproved business decisions disappear into something very ordinary-looking because they got resolved plausibly.</p>



<p class="wp-block-paragraph">And this behavior is backed by research. If we look at <a href="https://arxiv.org/abs/2505.07270" target="_blank" rel="noreferrer noopener">repairing ambiguous natural-language requirements</a>, for example, we can see that directly asking models to resolve ambiguity often leads to inconsistent or even irrelevant results. Choosing a more targeted repair approach around the identified defects (change brief) improved the results by roughly 31%. <a href="https://arxiv.org/abs/2406.12952" target="_blank" rel="noreferrer noopener">SWT-Bench</a> found that generated tests could filter proposed fixes and double the precision of a software repair agent. They used one agent to generate a proposed change and gave another the task to produce evidence to reject it. Lastly, the topic of formal specification generation: One <a href="https://arxiv.org/abs/2606.05792" target="_blank" rel="noreferrer noopener">interesting study I found</a> gave 30 models the task to translate natural language into TLA+ (Temporal Logic of Actions, a <a href="https://lamport.azurewebsites.net/tla/tla.html" target="_blank" rel="noreferrer noopener">specification language</a> created by Turing Award-winner Leslie Lamport). The best results only reached about 27% syntactic correctness and 9% semantic correctness. The formal notation helped to detect mistakes, but it did not guarantee correctness or that the translation preserved the original meaning.</p>



<p class="wp-block-paragraph">These results support focused clarification and independent checks. Clarify the uncertainties that can change the outcome, then verify the implementation with evidence that does not come entirely from the same reasoning path. Generating a longer specification does not solve that problem at all.</p>



<p class="wp-block-paragraph">I want the strength and independence of the evidence to match the consequence of being wrong. A small internal refactor may need ordinary tests and code review. A change that involves security or financial aspects, or that even touches regulated data, needs a much stronger separation coupled with adversarial review and explicit human approval. For those changes, the agent proposing the implementation should not also be the only source of its requirements and tests.</p>



<h2 class="wp-block-heading">A lighter operating model</h2>



<p class="wp-block-paragraph">In practice, I want a workflow that I can explain without a complex flow diagram. It starts with the evidence already in the system and makes the intended change explicit. Everything else is added only when the potential risk of the change justifies it. Ideally, this is a simple five-step process:</p>



<ol class="wp-block-list">
<li>Start from the code and operational evidence that describe the current system</li>



<li>Define the intended delta, important boundaries, and known unknowns</li>



<li>Add research, prototypes, design alignment, or stronger verification where risk requires them</li>



<li>Read and review the implementation, not just the plan</li>



<li>At release, discard temporary reasoning and preserve each surviving fact in its native authoritative artifact</li>
</ol>



<p class="wp-block-paragraph">That is enough structure to guide the work without building a natural-language replica of the software.</p>



<p class="wp-block-paragraph">Before implementation, the change brief describes the intended delta, and during implementation it helps people and agents align while new information changes the plan. But after the release the code and production behavior become the primary evidence of what the system does. Not separate documentation in any form that potentially drifts over time.</p>



<p class="wp-block-paragraph">Durable obligations remain in the artifacts we already know how to maintain: schemas, tests, policies, configuration, telemetry, and short records for rationale that cannot be encoded elsewhere. Most planning details have completed their job by then and should expire.</p>



<p class="wp-block-paragraph">I expect teams to get the most from coding agents when they are selective: specify what must be decided, discover what the system can answer, verify what carries risk, and let temporary planning go.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Sources</h3>



<ul class="wp-block-list">
<li><a href="https://x.com/trq212/status/2073100352921215386" target="_blank" rel="noreferrer noopener">A Field Guide to Finding Your Unknowns</a>, Thariq Shihipar, 2026.</li>



<li><a href="https://simonwillison.net/2026/Jul/3/judgement/" target="_blank" rel="noreferrer noopener">Judgement</a>, Simon Willison, 2026.</li>



<li><a href="https://arxiv.org/abs/2606.05792" target="_blank" rel="noreferrer noopener">Can LLMs Write Correct TLA+ Specifications?</a>, Bisharat et al., 2026.</li>



<li><a href="https://arxiv.org/abs/2505.07270" target="_blank" rel="noreferrer noopener">Automated Repair of Ambiguous Natural Language Requirements</a>, Jia et al., 2025.</li>



<li><a href="https://arxiv.org/abs/2406.12952" target="_blank" rel="noreferrer noopener">SWT-Bench: Testing and Validating Real-World Bug-Fixes with Code Agents</a>, Mündler et al., 2024.</li>



<li><a href="https://arxiv.org/abs/2509.11446" target="_blank" rel="noreferrer noopener">Large Language Models for Requirements Engineering: A Systematic Literature Review</a>, Zadenoori et al., 2025.</li>



<li><a href="https://www.humanlayer.dev/blog/advanced-context-engineering" target="_blank" rel="noreferrer noopener">Advanced Context Engineering for Coding Agents</a>, HumanLayer, 2025.</li>



<li><a href="https://www.youtube.com/watch?v=YwZR6tc7qYg" target="_blank" rel="noreferrer noopener">Everything We Got Wrong About Research-Plan-Implement</a>, Dexter Horthy, 2026.</li>



<li><a href="https://research.ibm.com/publications/usage-effects-and-requirements-for-ai-coding-assistants-in-the-enterprise-an-empirical-study" target="_blank" rel="noreferrer noopener">Usage, Effects and Requirements for AI Coding Assistants in the Enterprise</a>, IBM Research, 2026.</li>



<li><a href="https://www.ibm.com/think/perspectives/ai-governance-to-assurance-what-we-shared-think-2026" target="_blank" rel="noreferrer noopener">From AI Governance to AI Assurance</a>, IBM, 2026.</li>
</ul>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/when-ai-writes-the-code-specifications-need-an-exit-strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>This Week in AI: When agents outnumber people</title>
		<link>https://www.oreilly.com/radar/this-week-in-ai-when-agents-outnumber-people/</link>
				<comments>https://www.oreilly.com/radar/this-week-in-ai-when-agents-outnumber-people/#respond</comments>
				<pubDate>Fri, 14 Aug 2026 15:59:40 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[This Week in AI]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19388</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-scaled.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2560" 
				height="2560" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/05/0642572383770_This_Week_in_AI_Cover-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Security speed, infrastructure constraints, and why human judgment grows more important as AI starts to act]]></custom:subtitle>
		
				<description><![CDATA[AI agents are multiplying, and many of the systems used to manage them weren’t designed for their scale or speed. This week, host Vicki Reyzelman, a senior solutions engineer at Akamai, used one figure to connect developments in cybersecurity, infrastructure, education, and AI governance: For every human on the internet, there are 144 agents. That [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">AI agents are multiplying, and many of the systems used to manage them weren’t designed for their scale or speed. This week, host Vicki Reyzelman, a senior solutions engineer at Akamai, used one figure to connect developments in cybersecurity, infrastructure, education, and AI governance: For every human on the internet, there are 144 agents.</p>



<p class="wp-block-paragraph">That ratio framed a larger question running through the episode. What changes when software can operate continuously, respond in seconds, and increasingly take action without waiting for a person? Vicki looked at faster cyberattacks, growing investment in agent security, the resource demands of AI infrastructure, and the expansion of AI from chat interfaces into robotics. The episode points beyond model selection to the systems required to deploy AI safely and reliably.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="This Week in AI: When Agents Outnumber People with Vicki Reyzelman" width="500" height="281" src="https://www.youtube.com/embed/nSAZkP0ZogI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>Security operations have to match agent speed</strong></h2>



<p class="wp-block-paragraph"><a href="https://www.cybersecuritydive.com/news/openai-hugging-face-hack-ai-models-black-hat/827167/" target="_blank" rel="noreferrer noopener">AI is compressing the time required to find and exploit software weaknesses</a>. Vicki pointed to reports of attackers moving in minutes and vulnerabilities being exploited soon after public disclosure. She also described an attack against one of her customers in which the attacker returned, changed tactics, and tried again.</p>



<p class="wp-block-paragraph">Traditional security processes assume there is time for people to investigate an alert, understand the vulnerability, deploy a patch, and monitor the result. That assumption gets weaker as automated systems become faster at reconnaissance and adaptation. Vicki argued for multiple defensive layers across APIs, applications, and networks so that one missed signal does not become a single point of failure.</p>



<p class="wp-block-paragraph">We’ve followed agent security throughout <em>This Week in AI</em>, and the discussion now centers on how enterprise security changes around more autonomous software. That puts more weight on automated defenses, tighter permissions, and monitoring systems that can constrain machine activity at comparable speed.</p>



<h2 class="wp-block-heading"><strong>AI capacity depends on physical infrastructure</strong></h2>



<p class="wp-block-paragraph">AI capacity requires electricity, cooling, water, data center space, and the infrastructure that supplies them. Vicki connected large hyperscaler investments with projections for sharply <a href="https://www.pbs.org/newshour/science/energy-water-use-and-pollution-of-ai-and-data-centers-rival-most-countries" target="_blank" rel="noreferrer noopener">higher data center energy and water use by 2030</a>. An audience member added a useful example from a university data center that can reuse waste heat during colder months but has to shed that heat during warmer weather.</p>



<p class="wp-block-paragraph">Those constraints affect deployment decisions directly. Organizations have to account for power availability, cooling systems, water access, latency, security, and local infrastructure capacity alongside model performance and cost.</p>



<p class="wp-block-paragraph">Government policy already shapes those choices. The episode paired expanding investment in AI infrastructure with <a href="https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai" target="_blank" rel="noreferrer noopener">growing regulatory requirements in Europe</a>. AI infrastructure now spans engineering, economics, compliance, and public policy, which means deployment decisions increasingly involve several systems at once.</p>



<h2 class="wp-block-heading"><strong>Human judgment becomes more valuable when AI can act</strong></h2>



<p class="wp-block-paragraph">Rapid AI adoption increases the value of foundational knowledge. Vicki raised that issue while discussing AI use in education and research. Students may have easier access to explanations and answers, but someone who does not understand the subject may have little basis for recognizing an incorrect result. The same problem appears in scientific work, where <a href="https://news.stanford.edu/stories/2026/08/reproducibility-ai-driven-science" target="_blank" rel="noreferrer noopener">reliable AI output still depends on reliable data and reproducible processes</a>.</p>



<p class="wp-block-paragraph">That evaluation problem becomes more consequential when AI controls physical systems. Vicki described systems that can perceive their surroundings, pass information about that environment to a model, and use the result to guide physical actions. Errors in those systems can extend beyond a bad answer on a screen.</p>



<p class="wp-block-paragraph">Practitioners still need to evaluate evidence, recognize weak assumptions, and decide where automated action should stop. Better models can reduce some forms of manual work, but they also increase the value of people who understand the domain well enough to know when a system’s output does not fit the situation.</p>



<h2 class="wp-block-heading"><strong>What’s next</strong></h2>



<p class="wp-block-paragraph">AI systems can now operate faster and more independently than many of the processes surrounding them. Security teams have to defend at machine speed. Infrastructure planners have to account for physical resource limits. Researchers, students, and practitioners have to evaluate increasingly capable systems without assuming that capability guarantees correctness.</p>



<p class="wp-block-paragraph">The 144-to-one ratio makes that change concrete. Agent adoption is already testing whether organizations can govern these systems, support the infrastructure they require, and preserve informed human oversight.</p>



<p class="wp-block-paragraph">Join us again next Monday for another episode of <em>This Week in AI,</em> when we’ll dive into more of the news, issues, and key developments shaping the AI era. And check back each Friday for the latest episode, or watch on <a href="https://www.youtube.com/watch?v=g4cfjz5AKxY&amp;list=PL055Epbe6d5bJEhT7_ZzOeJZ6gPyUzYpS" target="_blank" rel="noreferrer noopener">YouTube</a>, <a href="https://open.spotify.com/show/033kJS2BG1teGunxmtsU1r" target="_blank" rel="noreferrer noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/this-week-in-ai/id1896798047" target="_blank" rel="noreferrer noopener">Apple</a>, or wherever you get your podcasts.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/this-week-in-ai-when-agents-outnumber-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Intent Debt</title>
		<link>https://www.oreilly.com/radar/the-intent-debt/</link>
				<comments>https://www.oreilly.com/radar/the-intent-debt/#respond</comments>
				<pubDate>Fri, 14 Aug 2026 13:01:38 +0000</pubDate>
					<dc:creator><![CDATA[Addy Osmani]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19390</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-intent-debt_1.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-intent-debt_1-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[The following article originally appeared on Addy Osmani’s blog site and is being republished here with the author’s permission. Technical debt lives in your code. Cognitive debt lives in your head. Intent debt lives in the artifacts you may never have written: the goals, constraints, and rationale for why the system is the way it [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>The following article originally appeared on <a href="https://addyosmani.com/blog/intent-debt/" target="_blank" rel="noreferrer noopener">Addy Osmani’s blog site</a> and is being republished here with the author’s permission.</em></p>
</blockquote>



<p class="wp-block-paragraph"><em>Technical debt lives in your code. Cognitive debt lives in your head. Intent debt lives in the artifacts you may never have written: the goals, constraints, and rationale for why the system is the way it is. If you’re lucky, some of this exists scattered in team documents or discussions, but it’s likely incomplete. It’s the one kind of debt your agents can’t pay down for you, and agentic engineering makes it the most expensive.</em></p>



<p class="has-text-align-center wp-block-paragraph">____________________________</p>



<h2 class="wp-block-heading">Three places debt can live</h2>



<p class="wp-block-paragraph">Margaret-Anne Storey’s <a href="https://arxiv.org/abs/2603.22106" target="_blank" rel="noreferrer noopener">Triple Debt Model</a> is a clean way to think about software health. The three models of debt are technical, cognitive, and intent.</p>



<p class="wp-block-paragraph"><strong>Technical debt lives in the code.</strong> It’s the accumulation of implementation choices that make the system harder to change later: the tangled module, the shortcut you took under deadline, the abstraction that leaked. We’ve understood this one for decades. You feel it coming through slow builds, fragile tests, and the dread of touching one particular file.</p>



<p class="wp-block-paragraph"><strong>Cognitive debt lives in people.</strong> It’s the erosion of shared understanding, the gap between how much code exists and how much any human understands. I’ve been calling this comprehension debt. It builds up when the system grows faster than the team’s mental model of it. Your code can be pristine and you can still carry crippling cognitive debt, because nobody understands the pristine code either.</p>



<p class="wp-block-paragraph"><strong>Intent debt lives in artifacts.</strong> It’s the absence or erosion of the <em>externalized</em> rationale, goals, and constraints that explain why the system is the way it is. The key word is externalized. The rationale has to be written down where a teammate, a future you, or an agent can read it, not held in your head. When intent debt runs high, the system drifts from what you meant it to do, and nobody can say when it diverged or why.</p>



<p class="wp-block-paragraph">These three are independent, which took me a while to internalize.</p>



<p class="wp-block-paragraph">You can have low technical debt and high intent debt. You can understand a system completely yourself (no cognitive debt for you) while its intent exists nowhere outside your skull (enormous intent debt for everyone else).</p>



<p class="wp-block-paragraph">From the inside they feel alike, but each one bills you separately.</p>



<h2 class="wp-block-heading">Why intent debt is the one agents can’t help with</h2>



<p class="wp-block-paragraph">AI generates code faster than ever, which makes technical debt cheaper to take on and cheaper to pay down. Point an agent at a tangled module and it’ll refactor it.</p>



<p class="wp-block-paragraph">Cognitive debt recovers too, more easily than most engineers expect. When you don’t understand a chunk of the system, you ask the agent to explain it. You rebuild part of the lost mental model on demand, because the code still exists and the model can read it back to you.</p>



<p class="wp-block-paragraph">Intent is different. <strong>An agent can’t generate intent, because intent is the one input that has to come from you.</strong> A model can infer a plausible rationale from the code, the same way you can guess why a previous engineer did something. A guess about intent isn’t the intent. The model doesn’t know whether that 300ms debounce was a deliberate UX decision, a benchmark result, or a number someone typed once and never revisited. It will invent a confident-sounding reason, which is worse than admitting it doesn’t know.</p>



<p class="wp-block-paragraph">Of the three debts, intent debt is the only one where the agent can’t bail you out. It can write the code and restore your comprehension. The <em>why</em> is the one thing it can only fabricate.</p>



<h2 class="wp-block-heading">Agents make the unwritten cost compound much faster</h2>



<p class="wp-block-paragraph">Teams got away with high intent debt for years because we carried it in our head and old docs.</p>



<p class="wp-block-paragraph">When a new human joined a team, you didn’t write everything down, because they picked up intent over time: hallway conversations, code review comments, “Oh, we don’t do it that way because of an incident in 2023.” Knowledge moved person to person and built up. The engineer who’d been there four years was the intent documentation, expensive and lossy, but it worked.</p>



<p class="wp-block-paragraph">Agents break that model. Bringing agents onto a team doubles its size overnight with junior people who have no long-term memory. An agent starts most sessions cold. It carries none of the tacit intent humans built up over years. Whatever you haven’t externalized into an artifact it can read, it doesn’t have.</p>



<p class="wp-block-paragraph">That changes the economics of <em>not writing things down</em>. Unexternalized intent used to cost you once in a while, at onboarding or after someone left. Now you pay it every session, multiplied by every agent you run.</p>



<p class="wp-block-paragraph">Picture the 20 agents you’re so excited to parallelize. Each one is a teammate who has never met you, can’t read your mind, and will fill any gap in your intent with a plausible guess. The orchestration tax I <a href="https://addyosmani.com/blog/orchestration-tax/" target="_blank" rel="noreferrer noopener">wrote about</a> is partly an intent-debt tax. Much of what makes managing many agents exhausting is resupplying the intent you never wrote down.</p>



<h2 class="wp-block-heading">The other half of the comprehension debt argument</h2>



<p class="wp-block-paragraph">When I wrote about <a href="https://addyosmani.com/blog/comprehension-debt/" target="_blank" rel="noreferrer noopener">comprehension debt</a>, I made a point I want to revisit, because intent debt sharpens it.</p>



<p class="wp-block-paragraph">I argued that detailed specs aren’t a complete answer. Translating a spec into working code involves a huge number of implicit decisions no spec ever captures, and a spec detailed enough to <em>be</em> the program is the program in a slower language. I still believe that.</p>



<p class="wp-block-paragraph">Intent debt is the complementary truth.</p>



<p class="wp-block-paragraph">Being unable to capture <em>all</em> intent is no license to capture <em>none</em> of it. The implicit decisions an agent now makes on your behalf, the ones a spec will never enumerate, are the decisions whose rationale evaporates if you don’t record at least the load-bearing ones. You can’t write down everything.</p>



<p class="wp-block-paragraph">You do have to write down the <em>why</em> behind the choices that would be expensive to get wrong, because nobody will reconstruct those later.</p>



<p class="wp-block-paragraph">Comprehension debt warns you not to trust that code is correct because it exists.</p>



<p class="wp-block-paragraph">Intent debt warns you not to trust that the <em>reason</em> survives because the code does. Code is the answer; the intent was the question it was meant to solve. AI is brilliant at producing answers to questions you forgot to write down.</p>



<h2 class="wp-block-heading">What high intent debt looks like</h2>



<p class="wp-block-paragraph">Intent debt rarely shows up as friction. It shows up as a particular kind of helplessness.</p>



<ul class="wp-block-list">
<li>An agent “fixes” a bug by deleting a guard clause, and nobody can say whether that guard was load-bearing or leftover, because no doc or commit message ever recorded why it was there.</li>



<li>A refactor changes a behavior users depend on. The review passed because the diff looked clean and the tests were green, but the tests only encoded the previous behavior, never the intent.</li>



<li>You ask why two services talk over a queue instead of a direct call, and the honest answer is “An agent suggested it and it seemed fine.” That answer is intent debt, already accruing interest.</li>
</ul>



<p class="wp-block-paragraph">If you’ve felt the <a href="https://addyosmani.com/blog/cognitive-surrender/" target="_blank" rel="noreferrer noopener">cognitive surrender</a> version of this, defending a design choice you can’t reconstruct, intent debt is the team-scale, written-down version of the same hole.</p>



<p class="wp-block-paragraph">Surrender is about your own posture in the moment. Intent debt is what a hundred of those moments leave in the repo for the next person and the next agent to inherit.</p>



<h2 class="wp-block-heading">Paying it down: externalize intent as a first-class artifact</h2>



<p class="wp-block-paragraph">Almost everything I’ve been writing about for the last few months turns out to be intent-debt management. I didn’t have the word for it. The move is the same each time: <strong>Take the intent out of your head and put it somewhere an agent can read</strong>.</p>



<p class="wp-block-paragraph"><strong>Write the spec for the intent, not the implementation.</strong> A <a href="https://addyosmani.com/blog/good-spec/" target="_blank" rel="noreferrer noopener">good spec</a> captures the goals, the constraints, the nonnegotiables, and an explicit definition of <em>done</em> (fast, accessible, secure, delightful, beyond “functionally correct”). The spec carries the intent the code can’t carry on its own.</p>



<p class="wp-block-paragraph"><strong>Treat AGENTS.md as your intent ledger, not your config.</strong> It’s why I keep saying <a href="https://addyosmani.com/blog/agents-md/" target="_blank" rel="noreferrer noopener">stop using /init</a>. An auto-generated file describes what the code is. An intent file describes what the team means: the conventions, the “we don’t do it this way because,” the constraints invisible in any single file. Agents can’t infer that, and they need it most.</p>



<p class="wp-block-paragraph"><strong>Capture decisions where they happen.</strong> Lightweight <a href="https://addyosmani.com/blog/automated-decision-logs/" target="_blank" rel="noreferrer noopener">decision logs</a> (ADRs) are pure intent-debt paydown. Recording <em>why</em> at the moment you decide costs almost nothing. Reconstructing it eight months later, after the person who knew why has moved teams, costs a fortune. Agents have made logging cheaper than ever, so the old excuse is gone.</p>



<p class="wp-block-paragraph"><strong>Make the learning loop write intent back down.</strong> I’ve argued for <a href="https://addyosmani.com/blog/self-improving-agents/" target="_blank" rel="noreferrer noopener">self-improving agents</a> that update a learnings file at the end of a session. The same loop is an intent-debt pump running in reverse: every mistake whose root cause you’ve recorded, every “We tried X and it didn’t work because Y” is intent that would otherwise have lived only in your memory of a bad afternoon.</p>



<p class="wp-block-paragraph">None of these are new tools. They’re the discipline of refusing to let the <em>why</em> exist only in your head, in an era where your head is no longer where most of the work happens.</p>



<h2 class="wp-block-heading">Where the value moved</h2>



<p class="wp-block-paragraph">For a long time, the scarce, valuable thing in software was the ability to produce a correct implementation. Code was expensive, so we optimized for writing it.</p>



<p class="wp-block-paragraph">AI made code cheap, and comprehension is recoverable. Intent, the goals and constraints and reasons, is the one input that still has to originate with a human. It’s also the one we’re worst at externalizing, because for decades we got away with carrying it in our heads.</p>



<p class="wp-block-paragraph">That worked when the team was a handful of people who could absorb intent over years of shared context. It does not work when half the team is agents that start every session as strangers.</p>



<p class="wp-block-paragraph">Technical debt makes your system hard to change. Cognitive debt makes it hard to understand. Intent debt makes it hard to know whether the system still does what you wanted, and it’s the only one of the three your agents can’t pay back for you. That part stays with you. Write down the why, because it’s becoming the most valuable thing you can leave in the repo.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-intent-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Prompt Debt and “Fighting the Weights”</title>
		<link>https://www.oreilly.com/radar/prompt-debt-and-fighting-the-weights/</link>
				<comments>https://www.oreilly.com/radar/prompt-debt-and-fighting-the-weights/#respond</comments>
				<pubDate>Thu, 13 Aug 2026 16:08:12 +0000</pubDate>
					<dc:creator><![CDATA[Tim O’Reilly]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19325</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Prompt-debt-and-fighting-the-weights.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Prompt-debt-and-fighting-the-weights-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[Drew Breunig is one of the smartest voices writing about AI today. He&#8217;s the CEO and co-founder of cmpnd.ai, and a long-time hacker with a depth of experience from several eras, which is a surprisingly valuable asset these days. He&#8217;s also got a book on the way, The Context Engineering Handbook, already in early release [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Drew Breunig is one of the smartest voices writing about AI today. He&#8217;s the CEO and co-founder of <a href="http://cmpnd.ai" target="_blank" rel="noreferrer noopener">cmpnd.ai</a>, and a long-time hacker with a depth of experience from several eras, which is a surprisingly valuable asset these days. He&#8217;s also got a book on the way, <em><a href="https://learning.oreilly.com/library/view/the-context-engineering/0642572260705/" target="_blank" rel="noreferrer noopener">The Context Engineering Handbook</a></em>, already in early release from O&#8217;Reilly.</p>



<p class="wp-block-paragraph">I like to say that context engineering is the art of shaping what a model sees so that it actually does what you want. (I just realized that in saying that I’m channeling a comment that Andrew Singer made to me over forty years ago, when he was teaching me about debugging. He called it&nbsp; “the art of figuring out what you really told the computer to do instead of what you thought you told it to do.” But that’s another whole story.)</p>



<p class="wp-block-paragraph">Drew gave a talk at the recent Friends of O&#8217;Reilly camp, <a href="https://en.wikipedia.org/wiki/Foo_Camp" target="_blank" rel="noreferrer noopener">Foo Camp</a> for short, about what he calls prompt debt, which he describes as “the hidden costs that teams rack up when they fight a model&#8217;s training instead of working with it.”</p>



<p class="wp-block-paragraph">That was a novel and useful framing to me, that you end up with a bunch of stuff in your prompts to compensate for default behavior of the models, that those prompts no longer work as the models upgrade, and so it becomes a kind of technical debt. He&#8217;s thinking a lot about what the best developers are doing differently as a result.</p>



<p class="wp-block-paragraph">So I invited Drew to reprise his short talk on <a href="https://learning.oreilly.com/videos/escaping-the-prompt/0642572421823/" target="_blank" rel="noreferrer noopener">Live with Tim O’Reilly</a>, and then we talked about it with the folks attending the live event. They had a lot of good questions, so it was an interview not just by me but by a crowd of O’Reilly customers.</p>



<h2 class="wp-block-heading">Prompt debt in practice</h2>



<p class="wp-block-paragraph">Drew opened his talk with two slides. The first was a prompt anyone could write in ten seconds: “You are a customer support assistant. Read the ticket, classify it as billing, technical, account, refunds, or other, return only the category name.” The second slide was the same prompt a few weeks later, after it had met the real world. It now said “REFUND REQUESTS ARE NOT BILLING” in capitals, then said the same thing again in different words, then closed with &#8220;This is a common mistake. Please do not make this mistake.&#8221;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1250" height="650" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image.png" alt="You are a customer support assistant" class="wp-image-19326" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image.png 1250w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-300x156.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-768x399.png 768w" sizes="auto, (max-width: 1250px) 100vw, 1250px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1246" height="656" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-1.png" alt="Customer assistant refund request rules" class="wp-image-19327" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-1.png 1246w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-1-300x158.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-1-768x404.png 768w" sizes="auto, (max-width: 1246px) 100vw, 1246px" /></figure>



<p class="wp-block-paragraph">Everyone who has shipped any application with a prompt recognizes the second slide. It is a simple but vivid illustration of prompt debt, which, like technical debt, has a bill that eventually comes due.</p>



<p class="wp-block-paragraph">Note: Those aren’t real prompts. Drew just made them up to demonstrate his point. But what is real is that the instruction “Don&#8217;t quote directly more than 15 words from a source&#8221; occurs at least 7 times, in several variants, <a href="https://github.com/asgeirtj/system_prompts_leaks/blob/main/Anthropic/claude-fable-5.md" target="_blank" rel="noreferrer noopener">in Fable&#8217;s system prompt</a>. So even Anthropic is incurring prompt debt! And what that repetition might tell us about the innate capability of Fable to quote directly from sources it has ingested is left as an exercise for the reader.</p>



<p class="wp-block-paragraph">Drew itemized three costs of prompt debt:</p>



<ol class="wp-block-list">
<li><strong>It slows iteration.</strong> “You have so many little rules and call outs and washouts, many of them repeating to try to get rid of stubborn behaviors, that if you add a new instruction, you might sometimes have a small regression, and so you&#8217;re afraid to touch the prompt.”</li>



<li><strong>It blocks collaboration</strong>. &#8220;If Tim has a prompt that he&#8217;s been working on that he has lots of rules for, I might open that up and it may look completely random. I don&#8217;t know why he&#8217;s added these rules, and why he&#8217;s threatening the mother of the model. But it works, so I don&#8217;t want to touch it.&#8221;&nbsp;</li>



<li><strong>It locks you to a model</strong>, because every hack you developed was tuned to fight one specific set of weights. Datadog&#8217;s <a href="https://www.datadoghq.com/state-of-ai-engineering/" target="_blank" rel="noreferrer noopener">State of AI Engineering</a> report noted that GPT-4o was still the most common model in Datadog customer request traces in March 2026, even though OpenAI had already retired it in the ChatGPT UI. Drew thinks people are still running eighteen-month-old and two-year-old models in production rather than upgrading to far better models because they can’t face rebuilding their prompts.</li>
</ol>



<p class="wp-block-paragraph">That same Datadog report notes that 69% of all input tokens in customer traces were system prompts rather than user content. I’m not quite sure what to make of that. It does make clear that for all the ways that AI models are extraordinarily powerful, they are also extraordinarily unruly.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Treat Prompts as Perishable with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/jW9i8oPihHc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Why prompt debt is incurred</h2>



<p class="wp-block-paragraph">There are two reasons why prompt debt is incurred, according to Drew. The first is that natural language is imprecise, so the same intent phrased two ways produces different responses. Drew showed a study where someone framing the query as a patient asking how to taper off a drug called alprazolam gets refused by every AI assistant, while a psychiatrist asking about the same patient with the same clinical facts but with the right <a href="https://www.oreilly.com/radar/magic-words-programming-the-next-generation-of-ai-applications/" target="_blank" rel="noreferrer noopener">magic words</a> to signify his professional status gets the protocol. Figuring out how to get the right response out of a model is a kind of spellcraft.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1446" height="816" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-2.png" alt="Good vs bad AI assistant" class="wp-image-19328" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-2.png 1446w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-2-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-2-768x433.png 768w" sizes="auto, (max-width: 1446px) 100vw, 1446px" /></figure>



<p class="wp-block-paragraph">Drew also showed a more bizarre interaction, from <a href="https://arxiv.org/abs/2407.06866" target="_blank" rel="noreferrer noopener">Victoria R. Li, Yida Chen, and Naomi Saphra&#8217;s paper on guardrail sensitivity</a>, which uncovered the perplexing fact that stating an allegiance to the Philadelphia Eagles made a model more willing to explain how to import a plant illegally. Go figure. Drew has <a href="https://www.dbreunig.com/2025/05/21/chatgpt-heard-about-eagles-fans.html" target="_blank" rel="noreferrer noopener">written about that paper</a>, and he has also used it in his own attempts to get a model to do what he wanted:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I once used this to get around alignment to generate a likeness that ChatGPT didn&#8217;t want to generate for me, and it refused. I said I was a Philadelphia Eagles fan. It said okay, and it rendered that image with the person holding a Philadelphia Eagles mug.</p>
</blockquote>



<p class="wp-block-paragraph">The second reason is that each model has its developers’ own preferences trained-in, and yours may be at odds with them. This is what Drew calls fighting the weights. He and Srihari Sriraman <a href="https://blog.nilenso.com/blog/2026/02/10/how-system-prompts-define-agent-behaviiour/" target="_blank" rel="noreferrer noopener">analyzed the system prompts of six major coding agents</a> and found the same instructions repeated five and seven times in a single prompt, escalating through IMPORTANT to CRITICAL to MANDATORY to a threatened hundred-million-dollar penalty. He described what the author of such a prompt was doing as “war-driving the thesaurus,” hunting for wording that finally works.</p>



<p class="wp-block-paragraph">Note: We didn’t talk more about Drew and Srihari’s paper, but we should have. It’s got some amazing insights in it. I highly recommend that you follow the link above and read it.</p>



<h2 class="wp-block-heading">The harness is moving into the model</h2>



<p class="wp-block-paragraph">Drew has been tracking the published system prompts for Claude Code over time, and noted that they get shorter after each model release and then grow again. The reason, he suggested, is that Anthropic fixes unreliable behavior with a prompt patch, and then trains that patch into the next model. He said “That&#8217;s great for Claude Code, great for Anthropic. It&#8217;s a problem if you&#8217;re building a custom harness and your API calls look different than what Claude Code&#8217;s look like.” The developer of <a href="https://pi.dev/" target="_blank" rel="noreferrer noopener">Pi</a>, an open-source harness, kept finding that the models he worked with believed they were inside Claude Code and so they made Claude Code&#8217;s tool calls. He had to keep telling the model that no, they were working inside Pi. Fighting the weights over something like that is a real tax on developers. The point made above about Fable’s system prompt injunction against quotation shows how even the labs themselves are fighting the weights.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Fighting the Weights with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/ZG2DbGIg_hg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">If you are fighting the weights, Drew says you have three options: solve it in your own prompt, catch and retry in the harness, or give up and make your API look like what the model expects. Steve Yegge came up with the last hack. Steve just added aliases for whatever the model calls in addition to his original method name. It works, but it means the expectations of the models now dictate the shape of everyone else&#8217;s software.</p>



<p class="wp-block-paragraph">When Drew told me that more and more of the system prompt and the harness is being trained into the weights, that sent up a flare and my long history in the industry clicked into gear. It immediately got me thinking about lessons from the open source and web era. In particular, it made me think of the time in the mid-nineties when Netscape and Microsoft were both racing to build every feature up the stack directly into their web servers. And there was Apache, which stayed a web server with a clean extension layer that let other people build new features on top. Everything interesting got built on Apache. What I call an architecture of participation, modularity plus a clean separation between platform and application, beat integration every time.</p>



<p class="wp-block-paragraph">I think Amazon got this right with web services too. Steve Yegge&#8217;s <a href="https://gist.github.com/chitchcock/1281611" target="_blank" rel="noreferrer noopener">famous Amazon memo</a> described how Jeff Bezos made every team expose its functionality through service interfaces or be fired, so Amazon&#8217;s own applications had to work on Amazon&#8217;s own platform. That way they had the same experience as their customers. That was very different from what Microsoft had done, famously having <a href="https://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp." target="_blank" rel="noreferrer noopener">private APIs</a> that were only available to its own developers.</p>



<p class="wp-block-paragraph">So my prediction is that the big labs are making a strategic mistake. Training the harness into the model does make them better for predictable tasks and for less talented people, and it looks like a moat, but it risks foreclosing the innovation you would otherwise get for free from everyone else. As Bill Joy used to say, all the smart people don&#8217;t work for you.</p>



<p class="wp-block-paragraph">Drew, to his credit, observed that “the labs are cornered rather than greedy.” Their interface is an empty text box that has to work for someone building a hundred-page harness but also for his neighbor who wants a website and knows nothing about code. Making the empty prompt box produce acceptable output requires baking in strong defaults.</p>



<h2 class="wp-block-heading">The cost of trading diversity for reliability</h2>



<p class="wp-block-paragraph">That tradeoff has a serious cost, though. Drew quoted a line from <a href="https://x.com/trq212" target="_blank" rel="noreferrer noopener">Thariq</a> at the recent CAIS conference: if you aren&#8217;t giving the model detailed instructions about what you want, what you get back is the average of everything in the model. That means that there is a real risk that AI is leading us ever further down the path to a monoculture.</p>



<p class="wp-block-paragraph">Drew gave an example early in the conversation about image generation. You can now walk into any cafe in New York or Mumbai, he said, and see the same AI-generated art on its flyer. The earliest AI art out of DALL-E was strange and surprising, but what you get now is shiny and identical. When you optimize for reliability, you lose surprise. Which reminded me a bit of something Larry Wall used to say about Perl, that if it didn&#8217;t let you do stupid things, it wouldn&#8217;t let you do smart things either.</p>



<p class="wp-block-paragraph">Drew made the same point about AI writing. He argues that post-training aimed at verifiable problems like coding and math and agentic tool use drowns out the human signal from pre-training, and so the more post training the models get, the worse they get at creative tasks. AI writing gets more and more predictable, people notice, and they don’t like it. Fable and GPT-5 write worse than Sonnet 3.5 and GPT-4o did. Drew thinks getting both good code and good prose from one model is likely impossible.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">If you&#8217;re building a model that can solve coding challenges, you want reliability. But if you&#8217;re writing, where you want diverse rhythm and emotion and connection and engagement, I don&#8217;t think those two goals are mutually compatible.</p>
</blockquote>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Can the Best Coding Model Also be the Best Writing Model? with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/3PdA64MsSBI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">What to do about prompt debt</h2>



<p class="wp-block-paragraph">We got into audience questions, and there were some great ones.</p>



<p class="wp-block-paragraph">One audience member asked whether there are ways to set a time frame for prompt retention to avoid prompt debt?<strong> </strong>Drew answered that there isn’t a fixed time limit. Instead, teams should learn to recognize <strong>“</strong>prompt debt smell<strong>”</strong>: repeated instructions, one-off edge-case patches, or increasingly desperate wording. Those are signals to <a href="https://learning.oreilly.com/library/view/evals-for-ai/9798341660717/" target="_blank" rel="noreferrer noopener">move logic into evals</a> and automation.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Prompt Smell with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/2EkHmh_be_0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Another asked how organizations can measure prompt debt quantitatively. Drew’s answer was to<strong> </strong>look at how often each prompt in your organization changes, how many people have edited it, and which ones have gone untouched for a year. Look for prompts only one person is allowed to touch. Then look at what models you are actually calling. &#8220;Having to run on old models and not being able to migrate is a good smell that you&#8217;ve got prompt debt in your organization.&#8221;</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="How to Measure Prompt Debt in Your Organization with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/zMzGTDpPY0k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Some other good questions:</p>



<ul class="wp-block-list">
<li><strong>What habits compound prompt debt the fastest? </strong>Drew’s answer was essentially “vibe shipping.<strong>”</strong> That is, prototyping quickly, patching outputs with more and more tweaks, then shipping without building a true maintainable system. Each of those patches is an eval you are writing inside the prompt instead of outside it, he said, which means you lose it the moment you change models.&nbsp;<br><br>Drew reminded us that Malte Ubl, the CTO of Vercel, said vibe coding makes code “free as in puppies.” We had free as in speech, we had free as in beer, and now we have free as something that arrives at no cost but has to be fed every day for years.</li>
</ul>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Free as in Puppies with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/E27s4x9dOpk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<ul class="wp-block-list">
<li><strong>Do people use pseudocode instead of natural language prompts, and does it work? </strong>Drew said yes, sometimes models optimize toward pseudocode. He used this to explain why <a href="https://dspy.ai/">DSPy</a> and its new <a href="https://dspy.ai/diving-deeper/flex/">Flex optimizer</a> matter. Instead of forcing logic into prompts, they let the system push simple cases into code and only call the LLM when needed. He gave some further advice: Treat prompts as perishable and invest only what you must. Define the task with measurements rather than paragraphs, and automate the discovery of the prompt for whichever model you&#8217;re on. That’s what <a href="https://dspy.ai">DSPy</a> is good at. Drew is one of its maintainers, so he is fond of it, but he makes a good argument: if you have written down what good output looks like, you can let a model find the wording, and that makes it easy to swap in a cheaper or faster or newer model without starting over.</li>



<li><strong>Can multi-agent workflows help work around prompt debt? </strong>Drew thought yes, especially through decomposition. He suggested splitting the task into smaller, evaluable steps rather than relying on one giant prompt and one giant model call. This is better for cost, reliability, governance, and speed.</li>



<li><strong>How do you balance prompt-debt guidance with context engineering, memories, and shared product context? </strong>Drew believes shared context is often necessary, but that teams should treat those instructions as perishable and keep iterating on them unless they’re worth formalizing into systems and evals.</li>



<li><strong>In compliance, where consistency is critical, what should teams do? </strong>Drew’s answer was decomposition, decomposition, decomposition. Break tasks into stages with checkpoints so you can inspect how the model got to its result, rather than trusting one opaque end-to-end answer.</li>



<li><strong>Does DSPy hide too much and make troubleshooting harder? </strong>Drew acknowledged that there is a tradeoff. Any framework gives up some flexibility, but DSPy tries to keep the task-spec layer stable while allowing the implementation underneath to evolve.</li>
</ul>



<p class="wp-block-paragraph">Another great audience question, and a good one to end this section on, was <strong>“There was prompt engineering, now context engineering, loop engineering, fleet engineering, graph engineering, harness engineering, goal engineering. What&#8217;s your take on how to navigate these many engineering disciplines?”</strong> I’ll let Drew answer that himself, in the video below.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Software Engineering by Another Name with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/nZkRVJ5OpPE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">It’s our job to make it weird</h2>



<p class="wp-block-paragraph">Drew is more optimistic than his worries that LLMs are encouraging a monoculture suggests. If the default output of a model is the average of everything it has seen, “It tells us that there&#8217;s still a job for us humans,” he said, “which is that it&#8217;s our job to push the model out of distribution. We&#8217;re the ones that need to make it weird.”</p>



<p class="wp-block-paragraph">Weird is a strong word, so don’t take it too seriously. (Though I find it interesting that <a href="https://www.oreilly.com/live-events/your-next-product-is-a-process-harper-reed-live-with-tim-oreilly/0642572376062/" target="_blank" rel="noreferrer noopener">Harper Reed also used it</a>.) The way I make this point is to say that AI is a medium, like painting or writing or music. Everyone gets the same paints and brushes, the same words, the same notes, but some people draw more out of them than others, or do it better. Our job is to draw something more, something better, out of the ocean of possibilities in the collected knowledge hidden inside an LLM.</p>



<p class="wp-block-paragraph">But there’s a more prosaic way to push the model out of its normal distribution. Be aware of its training, which is another way of saying “its biases,” and compensate for them. As an example of how to do this, Drew said his team deliberately chose not to use React for a new front end, because the models are trained so heavily on React that using it makes your site look like everyone else&#8217;s. He has also started using GLM and Kimi not to save money but because they are more malleable and take direction better inside a custom harness.</p>



<p class="wp-block-paragraph">That led us into a bit of discussion about open source AI, which is the subject of my next <a href="https://www.oreilly.com/AI-Codecon/" target="_blank" rel="noreferrer noopener">AI Codecon</a>. Drew’s ideas fit right in. He wants the open-weight ecosystem to survive precisely so that models stay infrastructure rather than, as he put it, becoming appliances.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="It&amp;apos;s Our Job to Make it Weird with Drew Breunig" width="500" height="281" src="https://www.youtube.com/embed/1mReDbsvrzQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/prompt-debt-and-fighting-the-weights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Generative AI in the Real World: AI for Real Estate with Ben Miller</title>
		<link>https://www.oreilly.com/radar/podcast/generative-ai-in-the-real-world-ai-for-real-estate-with-ben-miller/</link>
				<comments>https://www.oreilly.com/radar/podcast/generative-ai-in-the-real-world-ai-for-real-estate-with-ben-miller/#respond</comments>
				<pubDate>Thu, 13 Aug 2026 13:06:23 +0000</pubDate>
					<dc:creator><![CDATA[Ben Lorica and Ben Miller]]></dc:creator>
						<category><![CDATA[Generative AI in the Real World]]></category>
		<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?post_type=podcast&#038;p=19364</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2024/01/Podcast_Cover_GenAI_in_the_Real_World-scaled.png" 
				medium="image" 
				type="image/png" 
				width="2560" 
				height="2560" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2024/01/Podcast_Cover_GenAI_in_the_Real_World-160x160.png" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[A typical apartment building generates data on everything from leaking toilet flappers to tenant demographics, yet most of the real estate industry still runs its analysis by hand in spreadsheets. Fundrise co-founder and RealAI CEO Ben Miller argues the missing piece isn&#8217;t a better AI model but a proprietary data layer that general-purpose tools can&#8217;t [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">A typical apartment building generates data on everything from leaking toilet flappers to tenant demographics, yet most of the real estate industry still runs its analysis by hand in spreadsheets. Fundrise co-founder and RealAI CEO Ben Miller argues the missing piece isn&#8217;t a better AI model but a proprietary data layer that general-purpose tools can&#8217;t replicate. Miller joined Ben Lorica on <em>Generative AI in the Real World</em> to cover how RealAI evolved from a data project into an AI-powered analyst tool, why the AI acts as an orchestrator rather than a financial calculator, which investment trends aren&#8217;t yet pricing in AI&#8217;s economic impact on real estate markets, and why he believes the trillion-dollar AI CapEx build is temporarily masking what will eventually be a deep trough in white-collar hiring.</p>



<p class="wp-block-paragraph">About the <em>Generative AI in the Real World</em> podcast: In 2023, ChatGPT put AI on everyone’s agenda. In 2026, the challenge will be turning those agendas into reality. In <em>Generative AI in the Real World</em>, Ben Lorica interviews leaders who are building with AI. Learn from their experience to help put AI to work in your enterprise.</p>



<p class="wp-block-paragraph">Check out other episodes of this podcast on the <a href="https://www.oreilly.com/radar/podcast/generative-ai-in-the-real-world-chang-she-on-data-infrastructure-for-ai/#:~:text=on%20the%20O%E2%80%99Reilly%20learning%20platform" target="_blank" rel="noreferrer noopener">O’Reilly learning platform</a> or follow us on <a href="https://www.youtube.com/playlist?list=PL055Epbe6d5YcJUhZbsVW9dlMueIuOxK_" target="_blank" rel="noreferrer noopener">YouTube</a>, <a href="https://open.spotify.com/show/5C9oof8TFkP65lDUcEy5jT" target="_blank" rel="noreferrer noopener">Spotify</a>, <a href="https://podcasts.apple.com/us/podcast/generative-ai-in-the-real-world/id1835476293" target="_blank" rel="noreferrer noopener">Apple</a>, or wherever you get your podcasts.</p>



<h2 class="wp-block-heading">Transcript</h2>



<p class="wp-block-paragraph"><em>This transcript was created with the help of AI and has been lightly edited for clarity.</em></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=20" target="_blank" rel="noreferrer noopener">00.20</a><br><strong>Ben Lorica</strong></p>



<p class="wp-block-paragraph"><strong>All right. So today we have Ben Miller. He is the co-founder and CEO of Fundrise. And today, we&#8217;ll talk about their interesting AI application called RealAI, which you can find at RealAI.com. Their tagline is “Answer any real estate question in seconds.” And we&#8217;ll also talk to Ben about broader trends in the AI industry. And with that, Ben, welcome to the podcast.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=48" target="_blank" rel="noreferrer noopener">00.48</a><br><strong>Ben Miller</strong></p>



<p class="wp-block-paragraph">Thanks for having me.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=50" target="_blank" rel="noreferrer noopener">00.50</a><br><strong>So, I definitely want to talk to you about RealAI in more detail, but I think to take a step back. . . so broadly speaking, as I understand it RealAI does the job of a real estate analyst, but I think, Ben, for our audience, they don&#8217;t actually know what a real estate analyst does. So maybe if you can briefly describe what does a real estate analyst do?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=76" target="_blank" rel="noreferrer noopener">01.16</a><br>Yeah. So our product’s designed for a professional real estate investor, an institutional real estate investor will typically buy large scale properties that are worth tens of millions of dollars. And then analysts, like any financial analyst, would [do due] diligence [of the] property, make a lot of financial pro forma, do different sorts of investment memos and then make a recommendation to buy or sell. And they also then manage the investment after you acquire it. And asset management is actually where most of the activity happens in terms of how you optimize for rents and occupancy and different financing. And so the real estate analyst’s job is to be the financial brains of the owner of the property.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=127" target="_blank" rel="noreferrer noopener">02.07</a><br><strong>And typically this person, when they go about doing their job, they have access to different data sources, they pull it together, they run some financial models, and then they write up recommendations, right?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=144" target="_blank" rel="noreferrer noopener">02.24</a><br>Yes, exactly. That&#8217;s what the white collar worker today is like. . . manual CRUD operation. Right? So they gather data points from different reports and different online services they might have. They usually populate a spreadsheet cell by cell that way, and then they also will write up a memo. And that is all done by hand, so it&#8217;s sort of like handcrafted. And all of that work, at least the first draft, can be done by AI. And then the question becomes, “why our AI versus Claude or ChatGPT?”</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=185" target="_blank" rel="noreferrer noopener">03.05</a><br><strong>As I understand it too, Ben, RealAI actually didn&#8217;t start out as an AI project. It started out as a data project because back in 2023, as I recall, you were starting to talk to me about wanting to start a data business of some sort for real estate. Right? So I guess, for our listeners, Ben, why does real estate generate so much data? I think I remember you telling me that actually, most people don&#8217;t know a typical apartment building throws off so much data, right?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=220" target="_blank" rel="noreferrer noopener">03.40</a><br>So Fundrise is a fintech platform that democratizes investing into private assets. And one of our original investment classes was real estate, where we would have a fintech website and an iOS app, an Android app, and we would have millions of users and they invest through our platform, and we have a sort of Robinhood-type platform. So we have payment processing and a system of record for ownership, and all of the API services you need and microservices for that company. And then over time we started eating the value chain, and so we started heading from the investor towards the asset. And eventually we ended up where when we acquire the asset, we run the asset. We vertically integrated, so we&#8217;re the real estate company and the tech platform, and the fund manager. And as we acquired the asset, we discovered the underlying infrastructure for that asset had a lot of data in it. And the way that people in real estate do their work is sort of how we started. It&#8217;s all very manual.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=293" target="_blank" rel="noreferrer noopener">04.53</a><br><strong>Can you describe what this data is?</strong></p>



<p class="wp-block-paragraph">Yeah. So there&#8217;s a bunch of different kinds of data sets you care about. At the property there&#8217;s a lot of activity happening. So, a toilet might be running and that&#8217;s the water bill. You have all sorts of leasing activity. You have marketing funnels of ‘where does the tenant come from’? You have lots of activity around the building in terms of like, who lives there, who&#8217;s moving there, who&#8217;s leaving, what&#8217;s the rent of the property across the street, what&#8217;s being built? So there&#8217;s endless amounts of data that’s happening at any point in the real world. And that real-world data matters to the person who owns real assets in that location.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=346" target="_blank" rel="noreferrer noopener">05.46</a><br><strong>And so then, it seems like the traditional approach was to ignore all of this data? Is that right?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=356" target="_blank" rel="noreferrer noopener">05.56</a><br>It had to be distilled so that a human being can pretty much only consume a certain amount of tokens per second, and that usually ends up in a spreadsheet. So what happens is, people at the property or property managers, or maybe there&#8217;s our market company, CBRE, will produce market reports and they turn all that data into a spreadsheet so that you might get a 12-month reporting or rent roll or a market report. And so they take a lot of data and they distill it or transform or aggregate it into very few metrics. And that was necessary. And then once a month you get emailed six reports or 12 reports, and those reports are in a sort of dashboard for how real estate people make decisions. And I appreciate this and this is so obvious that there&#8217;s just you know, those reports are both a distillation and there&#8217;s a lot of meaning lost in the transformations, and a lot of data just left behind because the system of record for real estate and for a lot of industries, really the accounting system. . . income statements and, you know, get operational data like a toilet flapper that&#8217;s leaking, and that&#8217;s not coming into the report. And how could it?</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=456" target="_blank" rel="noreferrer noopener">07.36</a><br><strong>So basically, it sounds like what you&#8217;ve done is the classic digital transformation of this industry. If you look back to the data in 2023 to today, what is the evolution of this data set? What was in the original data set, and what have you added since then?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=482" target="_blank" rel="noreferrer noopener">08.02</a><br>So we originally were thinking about how all this data could be really useful for the real estate industry, the original business we called Basis, and we were originally using it just for our own company. And, there’s sort of property data. If you&#8217;re going to make decisions in real estate, you care about change over time. So time series, and you care about comparative analysis. How is my property versus another property? How&#8217;s my neighborhood versus another neighborhood? My city versus another city? And so you need to have not just your own data, but you need to have the context.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=522" target="_blank" rel="noreferrer noopener">08.42</a><br>You need to have the data of other properties that are in other places. And the entities in real estate are places, properties, and then people, which was that we had this sort of insight when we were in the data gathering property data and place data, is that there&#8217;s a data model in real estate which essentially is the property management system, which is basic accounting systems. That&#8217;s Yardi and Tratta, RealPage. . . And those accounting systems have an implied data model that is a property address and the unit, but inside the unit is a person that&#8217;s not in their data model. And a really big gap in their thinking. It&#8217;s sort of like digital marketing. Kind of like TV. . . you&#8217;re going to do it on CNBC, you can do it at 3 p.m., but you don&#8217;t know who is watching. And then the internet showed up, and you can actually then target with Facebook or, you know, Google. You can target people who have eggs for breakfast and like Mozart. So all of a sudden the people data becomes really critical. And the real estate industry didn&#8217;t have any people data. It wasn&#8217;t even part of their thinking. It&#8217;s not currently part of their thinking. So we started realizing, “Hey, we get the kind of granular people data you have in the marketing industry.” We bring that into the real estate industry because you care about who lives in a building and who&#8217;s leaving, who&#8217;s moving in, who moving in the neighborhood? Who’s moving into the city. Are they rich or are they poor? How old are they? What&#8217;s their gender? All this stuff. Do they have iPhones? Do they have Androids? So we started gathering up huge data sets of people data and then putting that in the same databases you have with real estate data and building out, and you can actually see that people matter to real estate and you can actually make really good insights, new kinds of data, correlations and stuff like that for the sector.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=643" target="_blank" rel="noreferrer noopener">10.43</a><br><strong>By the way, this is the kind of thing that the hedge funds have been doing for years. Right?</strong></p>



<p class="wp-block-paragraph">Right. Yeah. I was actually talking to a famous data tech guy, and we were on the phone, they&#8217;re like, you know, we sell our data to all these hedge funds, for like 50 big hedge funds in the world, which probably be Renaissance, and Jane Street, and Citadel, we&#8217;ve only ever had one real estate company by our data. I said, “Who&#8217;s that? Who&#8217;s that?” They said, “Blackstone.”</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=678" target="_blank" rel="noreferrer noopener">11.18</a><br><strong>Oh, that makes sense.</strong></p>



<p class="wp-block-paragraph">So yeah, high-frequency traders are data hogs and they put their data into these massive data models, and they do a lot of data engineering and data transformation. And real estate people do it with Excel spreadsheets and do it by hand. And so there&#8217;s this journey that every industry goes through. . . real estate’s way back in the stone ages, where they still do everything by hand with people.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=705" target="_blank" rel="noreferrer noopener">11.45</a><br><strong>So the end result for RealAI. . . the back end data. . . most of it is structured, probably sitting in some sort of data lakehouse or warehouse, right?</strong></p>



<p class="wp-block-paragraph">We have two different kinds of data. We have a transactional database and we have one for rows and one for columns. Because we have a lot of data and we do a lot of compute. . . And because mostly people when they&#8217;re using AI are doing computations on the fly, we had to pre-compute a lot of stuff so that when people are asking questions about what&#8217;s happening, how much growth there is in the market or what&#8217;s happening with like rents or whatever the things are, a lot of that stuff has to be pre-computed every night. And that gets pre-computed in a Snowflake database. And we also do clustering algorithms, we clustered people by city and by block and by lots of different things so when people want insights it&#8217;s all pre-computed. And then that sits in Snowflake migrating to a Databricks-type database. And then there&#8217;s a separate database which is the transactional store that&#8217;s on the fly, that&#8217;s fast when people are asking questions and hitting our API.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=780" target="_blank" rel="noreferrer noopener">13.00</a><br><strong>So, let&#8217;s set aside the AI model and whatnot. For listeners who haven&#8217;t tried it, I recommend you go to RealAI.com. I use it once a month to monitor my properties. But basically then what happens is you have this chat interface and then I presume the AI model acts as some sort of reasoning layer and also obviously parses your intention and what you&#8217;re interested in, but then the heavy lifting is done by the data back end, correct?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=818" target="_blank" rel="noreferrer noopener">13.38</a><br>Yeah. I mean, I think most people have gotten here where you do deterministic analysis, real and where you&#8217;re writing Python and doing SQL. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=829" target="_blank" rel="noreferrer noopener">13.49</a><br><strong>Yeah. Okay. So in your case, if you hallucinate there&#8217;s consequences, right?</strong></p>



<p class="wp-block-paragraph">Yeah. So the way we structured our application is that where there&#8217;s facts, there&#8217;s essentially a&nbsp; field that goes and pulls it from the database. So it&#8217;s not coming out. It essentially says, “What was the rent for the last 12 months in this property or in this neighborhood?”</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=856" target="_blank" rel="noreferrer noopener">14.16</a><br><strong>But the AI model is the one that translates that prompt into some sort of SQL query?</strong></p>



<p class="wp-block-paragraph">Yeah, but I mean, we used to use Claude and we moved to Vercel, but we have basically a software sandbox and it opens it up and does all that sort of. . . This is for real estate, for most people you say, well, you probably know how to do this, but if you&#8217;re going to do an analysis about your home or your property, you know, most people can&#8217;t write Python, most people aren&#8217;t good at doing SQL queries, plus they don&#8217;t have a good understanding of the the database schema. And so we built a semantic layer on top of it. And it really democratizes data science. Originally you said we were a data company, and then AI showed up and the AI sits on top of our data, and that made it a lot easier for people because to do the type of insights or analysis that otherwise they would have no idea how to do before.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=928" target="_blank" rel="noreferrer noopener">15.28</a><br><strong>But just to clarify, the AI is not doing any kind of financial modeling or calculation, right?</strong></p>



<p class="wp-block-paragraph">No.</p>



<p class="wp-block-paragraph"><strong>There&#8217;s some sort of forecasting or financial model or some sort of financial computation involved, and that&#8217;s not being done by the AI?</strong></p>



<p class="wp-block-paragraph">Right. The AI is like an orchestrator, and has the tools, right? And the different tools it uses and the tools are the web search or the calculator. I think everybody&#8217;s gone here, where I think a year ago or something, people were using vector databases and RAG and we moved away from that because you just want to be where it&#8217;s deterministic analysis. You want to just use regular software, to put that tool in the hands of the AI.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=981" target="_blank" rel="noreferrer noopener">16.21</a><br><strong>So the hard thing here is really maintaining these data sets in many ways, right? So that is the key, because you have to gather or you have to have domain knowledge to understand what data you need and what data really matters. And, now you have a year or so of history of people using the app and you&#8217;re understanding, really what&#8217;s valuable.</strong></p>



<p class="wp-block-paragraph">What&#8217;s the hard thing? I mean, it just depends on who you are. We didn&#8217;t mean to do this, but luckily we have a lot of data. The data is proprietary. The data is really valuable. And so that gives us a reason to exist because what happened is that we built RealAI and we rolled it out, and Claude arguably made it obsolete. And this is a strategy question. I think the hard thing is trying to build the software business.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1038" target="_blank" rel="noreferrer noopener">17.18</a><br><strong>How can it be obsolete if it doesn&#8217;t have access to your data?</strong></p>



<p class="wp-block-paragraph">Well, because people have. . . it&#8217;s really hard to get them out of their. . . they&#8217;re sitting in Claude. Trying to get it. And the reality is that. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1058" target="_blank" rel="noreferrer noopener">17.38</a><br><strong>There&#8217;s no A/B test. They can&#8217;t tell that they can get better results if they. . . </strong></p>



<p class="wp-block-paragraph">So, our product is really good at, let&#8217;s say seven of the 15 things a real estate person needs to do. But there&#8217;s other things they need to do that they know our products are not designed to do, and so they need to have a general purpose tool that&#8217;s doing all their stuff. And so the day before yesterday, we got approved to be in the Claude marketplace. So we built a connector, we&#8217;re building a plugin, and now we&#8217;ll go to where the customer is, which is Claude. That&#8217;s our current strategy. And you can see it&#8217;s getting better. Claude is not as good as ChatGPT at making it developer-friendly. But we can build what’s almost the same as RealAI.com in Claude. And that&#8217;s where we&#8217;re currently headed. And you and I talk about strategy. I think that&#8217;s actually a temporary strategy. I don&#8217;t think that&#8217;s where the market ends up. But, yes.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1130" target="_blank" rel="noreferrer noopener">18.50</a><br><strong>But obviously, as users interact with your app, there&#8217;s a lot of learnings there that you can leverage to improve the app itself or even maybe the model powering the app. But in other words, there&#8217;s a compounding loop. So the question is will Claude cut you out of that at some point?</strong></p>



<p class="wp-block-paragraph">I think the hard thing is always the people. I think the technology is actually at least. . . You know, I&#8217;m not an AI researcher at the frontier. The hard thing is really building a software product that people become addicted to, and the data engineering and data science and stuff, that&#8217;s just a grind, this is work. In the short term, we&#8217;re sort of conceding. . . I believe we should concede that the customer wants to be in Claude today, and they don&#8217;t want to be in a different application. Claude’s like the hot new hotness. But I think they&#8217;re going to get Claude fatigue within a year. I think that the real estate people are lagging the rest of the industry. Most people who&#8217;ve been using Claude for the last six, 12 months hit a lot of limitations for enterprise. And I think they&#8217;re going to want a harness that&#8217;s designed for real estate. But, in the meantime, we&#8217;re going to sacrifice some of the things we don&#8217;t get by having them in our app. And I actually think they&#8217;ll end up going back and forth between Claude and our app, because our app is better for real estate than Claude, but Claude is better for everything else. And the way that the Claude plugin and, and I think it ultimately ends up being a RealAI app in Claude. It wants to go back and forth between our app and their app and wants to be seamless to the user. But after that—and this is really a strategy question—after that, do we end up with an open source real estate fine-tuned, trained model instead of Claude in a year or two? I don&#8217;t know, but it seems that would be a good expectation.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1283" target="_blank" rel="noreferrer noopener">21.23</a><br><strong>At the end of the day, even if you open up that model, that model still needs the data, right?</strong></p>



<p class="wp-block-paragraph">At the end of the day, that open source model a year from now. . . when we rolled out Sonnet 5, it didn&#8217;t change. It didn&#8217;t get better for the customer. Like we just don&#8217;t need the Fable. . . it’s actually worse for the customer. So I think that once the open source models are comparable to—I&#8217;m just gonna say Sonnet 5 or whatever that generation is—the customer is not getting the premium they&#8217;re paying for. They just don&#8217;t need it.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1325" target="_blank" rel="noreferrer noopener">22.05</a><br><strong>By the way, there&#8217;s tons of companies now that focus on helping enterprises get to specialized AI. And basically there&#8217;s two branches, right? So there&#8217;s the post training branch which comes down to fine tuning and reinforcement, fine tuning, tons of startups there that are coming online. And then, there&#8217;s even companies that will help you pre-train models from scratch. I think the trend is toward the inevitable simplification of both things. Which will mean that a lot more of the compute will go towards specialized models like yours. And then less of the compute going to the. . .</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1372" target="_blank" rel="noreferrer noopener">22.52</a><br>I&#8217;m not as confident in that. . . I mean, I&#8217;m agnostic. I think we could end up in a world where Claude replaces Microsoft and everything&#8217;s inside Claude.</p>



<p class="wp-block-paragraph"><strong>Yeah, it&#8217;s possible. But then, I think that the general purpose models increasingly are going to be perceived as too overkill for a lot of things.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1395" target="_blank" rel="noreferrer noopener">23.15</a><br>Yeah, I think that&#8217;s true in theory, but the consumer is so sticky and it’s hard to get them to change their behavior.</p>



<p class="wp-block-paragraph"><strong>Yeah. If it&#8217;s a consumer app. But most enterprise work is just back end. . .</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1411" target="_blank" rel="noreferrer noopener">23.31</a><br>But I&#8217;m dealing with an SMB not like a Fortune 500, generally. And the SMB, in a lot of ways, acts more like a consumer than like an enterprise. And so I hear what you&#8217;re saying, though.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1426" target="_blank" rel="noreferrer noopener">23.46</a><br><strong>Hey, I have a question for you as far as UX. You have an application where someone is asking a question. It could be an important question for the user. How do you communicate uncertainty or how do you say, “Hey, here&#8217;s an answer, but there&#8217;s a lot of caveats behind this answer” How do you do that in your case?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1463" target="_blank" rel="noreferrer noopener">24.23</a><br>That&#8217;s very hard to do. I was just getting that feedback yesterday because even facts in the data world are not 100% facts usually.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1473" target="_blank" rel="noreferrer noopener">24.33</a><br><strong>There&#8217;s alternative facts.</strong></p>



<p class="wp-block-paragraph">Yeah. I mean there&#8217;s just methodologies that change the information. Is the rent growth a point to point 12 months ago? Is it a median? There&#8217;s just a lot of ways you can get to something that&#8217;s true, but not the same answer as someone else. But my actual experience with consumers is that they actually don&#8217;t care about that. It&#8217;s all really about perceived credibility. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1516" target="_blank" rel="noreferrer noopener">25.16</a><br><strong>So I guess in the UX then, the question is if there&#8217;s some sort of uncertainty or disagreement, do you surface that?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1528" target="_blank" rel="noreferrer noopener">25.28</a><br>Yeah, we surface data coverage. We have a whole section in the response that&#8217;s about a meta analysis about the data and about where we made decisions. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1539" target="_blank" rel="noreferrer noopener">25.39</a><br><strong>Or do you say, “This property, we think the rent you can charge is this?” But it&#8217;s really more likely in this interval. It&#8217;s not a specific value. And here&#8217;s the reason why there&#8217;s an interval instead of a value.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1560" target="_blank" rel="noreferrer noopener">26.00</a><br>AI is really good at that kind of caveats and adding context in and again like there&#8217;s. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1572" target="_blank" rel="noreferrer noopener">26.12</a><br><strong>But it&#8217;s a UX problem, though. You have to decide to surface it, right?</strong></p>



<p class="wp-block-paragraph">We definitely surface it. But I find that the user ends up like it&#8217;s really a journey. In the first phase, they&#8217;re trying to determine if the data is good, and then once they&#8217;ve decided the data is good, they don&#8217;t really care about the caveats. They’ve sort of internalized to them how to think about the data. And it&#8217;s really a problem in the beginning of a user’s use of it. It&#8217;s not really a problem once they become a power user.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1610" target="_blank" rel="noreferrer noopener">26.50</a><br><strong>So I think that that&#8217;s a UX debate that people will have, moving forward. Because I think basically, like I said, in terms of actual studies around decision-making, it does make a material improvement. Since we have you, we&#8217;ll close the discussion. And before I ask a question, listeners, this is not we&#8217;re not about to give you financial advice; we&#8217;re not financial advisors. So there you go. That&#8217;s the discussion. First, first thing then, you have access to all this data in real estate, right? So you have all the patterns, but you&#8217;re also obviously an investor in AI and AI startups. Right? So, obviously you&#8217;re seeing trends in AI that you think aren’t being reflected yet in the real estate market.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1673" target="_blank" rel="noreferrer noopener">27.53</a><br><strong>I know I think you&#8217;ve mentioned to me in the past, I think so, as an example, to make this concrete, I think you mentioned to me in the past that maybe if you&#8217;re buying property with the assumption that there&#8217;s a lot of back office workers moving forward and those back office workers are located in, I don&#8217;t know where.  . . Phoenix, Arizona. . . Maybe you should have second thoughts. Right? So what are some of the AI trends that you think are not yet being priced into real estate investing?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1708" target="_blank" rel="noreferrer noopener">28.28</a><br>What&#8217;s good about the trends I&#8217;m seeing in the data I&#8217;m seeing is I think they&#8217;re consonant or consistent with what people would intuitively think. So, AI is causing—in the data—a lot more disparity in outcomes. And so in real estate something used to be a truism. I mean, people will say people always need a place to live. And so you would buy workforce housing, affordable housing, things where if you have housing that&#8217;s affordable. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1744" target="_blank" rel="noreferrer noopener">29.04</a><br><strong>Or always buying is better than renting.</strong></p>



<p class="wp-block-paragraph">It&#8217;s just like cheaper is better than expensive, right? If you can offer housing that&#8217;s less expensive, less expensive to file, it&#8217;s less expensive to rent. That&#8217;s good business. And that actually I think is breaking down, which is maybe unintuitive but also maybe intuitive. Is that where the marginal dollars are ending up in the hands of people who have a lot of money and the people who don&#8217;t have a lot of money, which is basically the bottom half of the country, or even maybe the bottom 90% of the country. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1785" target="_blank" rel="noreferrer noopener">29.45</a><br><strong>95%.</strong></p>



<p class="wp-block-paragraph">Maybe. You can break a lot of different ways. But the point is that, this K-shaped economy where the normal person is doing worse and the best are doing better is. . . AI is accelerating that trend. And that way that affects real estate is if you&#8217;re an investor, you want to actually focus on the high end. If you&#8217;re going to be building, you can be investing. . . high end essentially is price-insensitive and the low end. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1815" target="_blank" rel="noreferrer noopener">30.15</a><br><strong>Because the low end people have no disposable income.</strong></p>



<p class="wp-block-paragraph">The low end is under strain. And then what is happening in real estate is that strain is showing up as a political manifestation of controlling pricing. And so you can&#8217;t make money providing affordably priced housing because the government won&#8217;t let you. So the government will let you take essentially excess profits from the rich, but it&#8217;s becoming more and more challenging to invest in and build for the normal person, because the government&#8217;s intervening in all sorts of small ways that people don&#8217;t see around how permits are pulled and lots of impact fees and things like that. I mean, in San Francisco and LA and New York, you see obvious examples of that. But it&#8217;s happening everywhere. And in real estate, you usually make an investment over a five year period, maybe even ten years. And so the long term trend is the most important thing. And I think then you essentially say. . . this is terrible by the way, from a social point of view, the societal point of view is very negative. I&#8217;m not commending this trend,&nbsp; I&#8217;m just saying that&#8217;s what&#8217;s happening on the ground.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1900" target="_blank" rel="noreferrer noopener">31.40</a><br><strong>What about this notion that certain hubs are optimized for a certain type of work? Is that something you think about?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1914" target="_blank" rel="noreferrer noopener">31.54</a><br>Yeah. That&#8217;s the thing you were I talked about last time. San Francisco is obvious, and then you look at Charlotte. But certain types of people move to certain places to get certain types of jobs and work from home drove that middle income white collar worker to work remotely, or they moved to more affordable places like Charlotte, Tampa, and Orlando, all these places where it&#8217;s affordable to live, and they do middle office work, back office work, and that job is getting decimated by AI. In particular, a lot of cities where young people would move there. They&#8217;d move to an apartment building, they’d move to downtown. They&#8217;d have a new job in a middle office of a medium to big size company. Those jobs don&#8217;t exist today. And so they&#8217;re struggling with where to live and they have roommates or living at home. And so the real estate that used to be where young people moved to is struggling as a result.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1988" target="_blank" rel="noreferrer noopener">33.08</a><br><strong>So I took you on your first Waymo ride. And how about things like that? I mean, now I can Waymo from anywhere.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=1999" target="_blank" rel="noreferrer noopener">33.19</a><br>I tried to invest in Waymo and I was not yet successful okay. I reached out to the CEO I had 37 connections to and I got no love. But yeah, the Waymo thing is such a good example of diffusion, a diffusion problem because the technology is completely mature and you can&#8217;t get it rolled out in any of the. . . DC’s fighting it and Boston&#8217;s fighting it. And for it to really affect real estate, it needs to become as seamless as Uber and Uber rolled out way faster, way more aggressively. They obviously took more risk on the rollout. So, you know, if you said ten years from now, how does that affect the patterns of living? I think you&#8217;re going to see. . . I’ve looked at this a number of times, but I think it&#8217;s premature to make these investments. You want to be investing in the wealthy satellite towns of. . . if you&#8217;re doing San Francisco, which is a little bit challenging to the Athertons. But in Atlanta, it&#8217;s the Greenvilles. There&#8217;s a lot of great wealthy exurbs that have many miniature downtowns that are cute. And so I think you&#8217;re going to see these satellite cities become very, very successful as a result. But those satellite cities are going to be mostly for the wealthy. So again, it&#8217;s all about wealth, not about affordability.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2090" target="_blank" rel="noreferrer noopener">34.50</a><br><strong>All right. Closing question. You&#8217;re a CEO. I know you&#8217;ve talked about the impact of AI and automation on hiring. And you talk to other CEOs. So as best you can tell, set aside the headlines and the news accounts. What are you hearing from CEOs about AI&#8217;s impact on the workforce and hiring? Hiring in particular.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2120" target="_blank" rel="noreferrer noopener">35.20</a><br>It&#8217;s more mixed than the headlines. I think I’d say it&#8217;s both true that we have needed less people, haven’t hired as many people and also have needed to expand as a result of AI. And so I think I&#8217;m hearing a “both” situation. So it&#8217;s really a question of what&#8217;s the net impact? And I feel like it&#8217;s too soon to call. I think on net it’s still net negative on hiring, but it&#8217;s too fuzzy for me to have a good call on it.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2158" target="_blank" rel="noreferrer noopener">35.58</a><br><strong>Do you have any sense whether or not all the stories we&#8217;re reading about. . . if it&#8217;s particularly challenging for new college grads and people looking for that entry level job?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2177" target="_blank" rel="noreferrer noopener">36.17</a><br>We don&#8217;t hire those people, and we rarely ever did.</p>



<p class="wp-block-paragraph"><strong>Because the stereotype is those jobs I can just use AI.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2188" target="_blank" rel="noreferrer noopener">36.28</a><br>I think of it as this cascade effect. Where we hired hundreds of people over the years, and what happened was there&#8217;s this elevator dynamic or escalator dynamic, where the person who was an early grad becomes middle and then they make space for the next person.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2212" target="_blank" rel="noreferrer noopener">36.52</a><br><strong>The talent pipeline, right?</strong></p>



<p class="wp-block-paragraph">Right. And that dynamic. . . AI’s changed it so much because you just don&#8217;t need. . . the people who are at the upper middle are so effective. . . And actually, this is something everybody learned in 2020-2021—more people means less work gets done because you have to manage people and you&#8217;re needing meetings and remote work is really brutal for information transfer. And so it&#8217;s actually way more effective just to do it yourself with AI than it is actually to have five people. And I think it&#8217;s actually more satisfying. And so I believe I’m net negative on jobs in the white collar work. And we&#8217;ve invested in some data centers that are like $50 billion data centers. And when you go there, there are thousands of people on site working. I mean, it looks like we&#8217;re in China. . .</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2270" target="_blank" rel="noreferrer noopener">37.50</a><br><strong>For now, while they&#8217;re building it.</strong></p>



<p class="wp-block-paragraph">So I think what&#8217;s happening is that the job market doesn&#8217;t seem as bad because of this trillion dollar a year AI CapEx build. But I think that&#8217;s a five-year build, not a 50-year build. And then I think that in the meantime, that&#8217;s coring out the white collar worker. And so I think on the other side of this, when the bubble finally bursts, it&#8217;s going to be a deep trough.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2302" target="_blank" rel="noreferrer noopener">38.22</a><br><strong>So then that talent pipeline . . . if you don&#8217;t have the entry level jobs who become the middle managers. . . and so on and so forth. . . So you have the entry level developer who gets more knowledgeable. . . then you don&#8217;t have that. Right? So you end up with what?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2322" target="_blank" rel="noreferrer noopener">38.42</a><br>Your talent pipeline, it&#8217;s a thing. I&#8217;ve one of the things I&#8217;ve said to the team and this is harsh, but I&#8217;m going to say it, but it&#8217;s a brutal thing. There&#8217;s a lot of people in an organization who are good but aren&#8217;t going to be the next great people. And I said, “If we don&#8217;t have a talent pipeline anymore, you need to turn those people over faster.” Essentially, unless you were bad. . . bad people managed out, but if you&#8217;re good, we kept you. But if you&#8217;re great, you get promoted. But now if you don&#8217;t have this talent pipeline, you have to change what you expect of the good. You have to turn over some of them, and look for people who are good with the prospect of building that. . . So you have to change the talent pipeline or talent escalator because you don&#8217;t have as many people coming through as you used to. So it&#8217;s more of an up-or-out dynamic than it used to be.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2382" target="_blank" rel="noreferrer noopener">39.42</a><br><strong>Oh, I forgot one last question on RealAI, which is, I think you still do seat based pricing, right?</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2392" target="_blank" rel="noreferrer noopener">39.52</a><br>We don&#8217;t know how to price it.</p>



<p class="wp-block-paragraph"><br><strong>So that&#8217;s it then? If I&#8217;m a real estate analyst, you&#8217;re charging me $50 a month, but I&#8217;m hammering this thing, costing you $1,000 a month.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2404" target="_blank" rel="noreferrer noopener">40.04</a><br>No. The seat buys a certain number of tokens. So it&#8217;s more like it&#8217;s more like usage tiers, is how it&#8217;s priced today, but I don&#8217;t know how to price it. We&#8217;re still early in this evolution. I mean, we&#8217;re real estate. . . so real estate is going to be lagging other sectors in terms of adoption. And so I don&#8217;t know what the right way to price it is because it doesn&#8217;t want to be only usage, either, I think that&#8217;s not right. But I don&#8217;t know the answer.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2441" target="_blank" rel="noreferrer noopener">40.41</a><br><strong>But even the tiered pricing, if I&#8217;m on a token matter, at some point I&#8217;m already at your top tier price and I&#8217;m still busting through it.</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2452" target="_blank" rel="noreferrer noopener">40.52</a><br>Yeah, that&#8217;s a great situation though, because tokens aren&#8217;t that expensive. I know everybody&#8217;s obsessed with them, but I think tokens are the smallest part of our cost.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2464" target="_blank" rel="noreferrer noopener">41.04</a><br><strong>But if you&#8217;re charging me $200 at the very top tier, I&#8217;m actually spending so much compute. . .</strong></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2475" target="_blank" rel="noreferrer noopener">41.15</a><br>I think that would be a great scenario to have in the future. . . for the few power users, that&#8217;s happening for us. Great. I hope they feel like they&#8217;re getting a good deal.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/watch?v=oqHqKE3fG_g#t=2486" target="_blank" rel="noreferrer noopener">41.26</a><br><strong>And with that, thank you, Ben.</strong></p>



<p class="wp-block-paragraph">Yeah. Thanks, Ben. Thanks for having me.</p>



<p class="wp-block-paragraph"><strong>Great name, by the way.</strong></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/podcast/generative-ai-in-the-real-world-ai-for-real-estate-with-ben-miller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Why “It Depends” Is the Most Future-Proof Phrase in Software</title>
		<link>https://www.oreilly.com/radar/why-it-depends-is-the-most-future-proof-phrase-in-software/</link>
				<comments>https://www.oreilly.com/radar/why-it-depends-is-the-most-future-proof-phrase-in-software/#respond</comments>
				<pubDate>Wed, 12 Aug 2026 15:54:26 +0000</pubDate>
					<dc:creator><![CDATA[Neal Ford and Mark Richards]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19360</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Why-it-depends-is-the-most-future-proof-phrase-in-software.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Why-it-depends-is-the-most-future-proof-phrase-in-software-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[You have to understand architecture in order to teach agents about it]]></custom:subtitle>
		
				<description><![CDATA[Ask an architect almost any question and you&#8217;ll get the same answer: It depends. For years this answer has been the punchline of jokes about architects, but in an era when AI can generate a working service faster than you can describe it, “it depends” is one of the most important phrases in software. It [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ask an architect almost any question and you&#8217;ll get the same answer: It depends. For years this answer has been the punchline of jokes about architects, but in an era when AI can generate a working service faster than you can describe it, “it depends” is one of the most important phrases in software. It marks the exact boundary of what these tools can and cannot do.</p>



<h2 class="wp-block-heading">The First Law still holds</h2>



<p class="wp-block-paragraph">We&#8217;ve said for a long time that the First Law of Software Architecture is: Everything is a trade-off. Nothing about generative AI repeals that law. If anything, it enforces it more brutally than ever.</p>



<p class="wp-block-paragraph">AI coding tools are extraordinary at answering “how” questions. How do I implement a saga pattern? How do I set up circuit breakers between these services? How do I paginate this API? These questions have answers that exist in the world in documentation, in open source code, in a decade of blog posts, and large language models have read all of it. Asking an LLM a “how” question is like asking a very fast librarian who has memorized the library.</p>



<p class="wp-block-paragraph">Architecture questions are not “how” questions. They&#8217;re “should” questions, and “should” questions have a different shape entirely. The honest answers require knowing things that appear in no training: that your ops team is three people, that the CFO just froze cloud spend, that the last reorg left the payments team demoralized. An AI can enumerate the generic trade-offs of distributed architectures beautifully. What it cannot do is weigh them, because the weights live in your organization, not on the internet.</p>



<p class="wp-block-paragraph">That&#8217;s the Second Law, incidentally: “<em>Why</em> is more important than <em>how</em>.” LLMs are “how” machines. Architects are “why” people.</p>



<h2 class="wp-block-heading">Cheap code makes decisions expensive</h2>



<p class="wp-block-paragraph">There&#8217;s a tempting inference floating around: If AI makes building software easier, surely it makes architecture matter less. Our experience so far suggests the opposite. When code was expensive to produce, the cost of construction acted as a natural brake on bad decisions. A questionable design took months to build, and somewhere in month two, someone usually noticed. Now a team can stand up a fleet of services in a week. The brake is gone. It has never been easier to build the wrong thing quickly, at scale, with tests.</p>



<p class="wp-block-paragraph">Think of AI as an amplifier. Point it at a sound structure and it accelerates you. Point it at a flawed one and it pours concrete over the flaw before anyone has time to object. The half-life of a bad architectural decision used to be measured in the time it took to implement; now the implementation arrives almost instantly, and you get to live with the decision for years.</p>



<p class="wp-block-paragraph">This shifts where the leverage sits. When implementation is abundant, judgment is the scarce resource. Someone still has to decide where the service boundaries go, what “good enough” availability means for this system, and which architectural characteristics actually matter.</p>



<h2 class="wp-block-heading">Judgment doesn&#8217;t come from reading</h2>



<p class="wp-block-paragraph">Here&#8217;s the uncomfortable part, and it applies to humans as much as machines: You cannot learn trade-off analysis by consuming content about it. We&#8217;ve written a fair amount of that content ourselves, so we say this with some authority. Books and talks give you the vocabulary. They don&#8217;t give you the judgment.</p>



<p class="wp-block-paragraph">Judgment comes from making decisions and living with the consequences or at least watching someone experienced make them, asking why, and arguing about the alternatives. Every working architect we know learned the craft this way: apprenticed to messy, real problems, with feedback loops. The pattern catalog was the easy part. Knowing which pattern <em>not</em> to use, and why, and being able to explain that to a skeptical VP that took years of reps.</p>



<p class="wp-block-paragraph">This is also, not coincidentally, exactly what today&#8217;s AI lacks. A model trained on the world&#8217;s code has seen millions of <em>decisions</em> but almost none of the <em>consequences</em>. The post mortem that traces an outage back to a boundary drawn wrong in 2019 rarely makes it into the training data, and even when it does, it isn&#8217;t connected to the pull request that caused it. Architecture&#8217;s feedback loops are measured in years. That&#8217;s precisely the kind of learning that can&#8217;t be scraped.</p>



<h2 class="wp-block-heading">Where this leaves engineers</h2>



<p class="wp-block-paragraph">If you&#8217;re a developer watching AI absorb more of the implementation work, the strategic question isn&#8217;t whether your current tasks will change but where to move on the value chain. Our answer is to move toward the decisions. Toward the trade-offs, the constraints, the “it depends.” That territory isn&#8217;t shrinking; it&#8217;s growing, because every AI-accelerated team needs someone who can tell the amplifier where to point.</p>



<p class="wp-block-paragraph">The good news is that this is learnable. Not from a book alone, and certainly not from an LLM, but the way it&#8217;s always been learned: by practicing architectural thinking on real problems, with experienced people looking over your shoulder and asking <em>why</em>. We&#8217;ve spent the last several years teaching it that way, most recently in a six-week cohort format that works less like a course and more like a short apprenticeship in making and defending architectural decisions. (Details are on the <a href="https://www.oreilly.com/live/become-a-software-architect.html" target="_blank" rel="noreferrer noopener">O&#8217;Reilly live events page</a>, if you&#8217;re curious.)</p>



<p class="wp-block-paragraph">However you pursue it, pursue it. The machines have gotten very good at “how.” The career-defining skill of the next decade is being the person in the room who can answer “should,” who knows that the real answer starts with “It depends,” and can finish the sentence using their brain alone.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/why-it-depends-is-the-most-future-proof-phrase-in-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Two Pillars of Post-training: Reinforcement Learning and Supervised Fine-Tuning</title>
		<link>https://www.oreilly.com/radar/the-two-pillars-of-post-training-reinforcement-learning-and-supervised-fine-tuning/</link>
				<comments>https://www.oreilly.com/radar/the-two-pillars-of-post-training-reinforcement-learning-and-supervised-fine-tuning/#respond</comments>
				<pubDate>Wed, 12 Aug 2026 10:57:13 +0000</pubDate>
					<dc:creator><![CDATA[Sharon Zhou]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19355</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-two-pillars-of-post-training.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-two-pillars-of-post-training-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[Nearly everything that happens in post-training is the result of some combination of these approaches.]]></custom:subtitle>
		
				<description><![CDATA[This is the second article in Sharon Zhou’s post-training series. Read part 1 here. In the first post of this series, you learned how post-training closed the fundamental gap in usability of LLMs by making them behave in a certain way. In this post, you’ll explore specific techniques you can use to change a model’s [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>This is the second article in Sharon Zhou’s post-training series. Read part 1 <a href="https://www.oreilly.com/radar/introduction-to-post-training/" target="_blank" rel="noreferrer noopener">here</a>.</em></p>
</blockquote>



<p class="wp-block-paragraph">In the first post of this series, you learned how post-training closed the fundamental gap in usability of LLMs by making them behave in a certain way. In this post, you’ll explore specific techniques you can use to change a model’s behavior: namely, reinforcement learning (RL) and supervised fine-tuning (SFT).</p>



<p class="wp-block-paragraph">Reinforcement learning teaches the model by letting it try things and telling it which attempts were better or worse—the model learns by experimentation and feedback. Supervised fine-tuning teaches the model by showing it examples of good behavior—the model learns by imitations. Both have deep roots in AI and machine learning literature historically, but their application to LLMs, and particularly to making LLMs behave well, is what makes modern post-training work. Nearly everything that happens in post-training is the result of some combination of these two approaches.</p>



<h2 class="wp-block-heading">Reinforcement learning (RL): Learning from feedback</h2>



<p class="wp-block-paragraph">The overall gist of reinforcement learning goes like this:</p>



<ol class="wp-block-list">
<li>The model gets a prompt.</li>



<li>The model generates a response.</li>



<li>The model&#8217;s response is graded. The grade is called a reward. A positive reward is good, and a negative reward is bad.</li>



<li>The model&#8217;s weights are updated to make high-reward responses more likely and low-reward responses less likely.</li>
</ol>



<p class="wp-block-paragraph">One of the most important questions is: Where does the reward come from?</p>



<h3 class="wp-block-heading">Verifiers</h3>



<p class="wp-block-paragraph">The easiest way to get a reward is a function that can output a reward, for example a checker for whether the generated code compiles or whether the generated math problem was solved correctly. This automated check is a verifier. The ideal verifiers are fast, cheap, and perfectly reliable within their domain. Think coding challenges, math problems, or factual questions. For tasks with objectively correct answers, you can just write a function that checks the output.</p>



<p class="wp-block-paragraph">The limitation is probably obvious: Verifiers only work when you can define &#8220;correct&#8221; programmatically or hit an API to return the right results. That covers a lot of useful territory, but it doesn&#8217;t help you train a model to be helpful, nuanced, or pleasant to talk to.</p>



<p class="wp-block-paragraph">There are subtler limitations too. Not all verifiers are fast. Your model might propose a novel drug combination, but verifying its validity could take years of lab work. Generated GPU code might need hours or days of performance benchmarking. When verification is expensive, you face a trade-off: Use the slow-but-accurate verifier sparingly, or substitute a faster proxy that&#8217;s slightly less reliable but keeps training moving.</p>



<h3 class="wp-block-heading">Human feedback, RLHF, and reward models</h3>



<p class="wp-block-paragraph">Humans can offer strong reward signals that, in aggregate, align with human preferences that might be more subtle and hard to encode programmatically. However, it&#8217;s prohibitively inefficient to have humans in the loop for every training datapoint, especially as the model is continuously updating its weights after it receives rewards as feedback, so the model&#8217;s responses would change over time. You can&#8217;t really prepare the data ahead of time. So instead, the <a href="https://arxiv.org/abs/2203.02155" target="_blank" rel="noreferrer noopener">InstructGPT paper</a>, which informed ChatGPT&#8217;s development, implements <a href="https://arxiv.org/abs/1706.03741" target="_blank" rel="noreferrer noopener">reinforcement learning from human feedback</a> (RLHF) by training a separate model to <a href="https://arxiv.org/abs/2009.01325" target="_blank" rel="noreferrer noopener">mimic human feedback</a>. This model is called a &#8220;reward model.&#8221;</p>



<p class="wp-block-paragraph">The input of the reward model is a prompt and model response and its output is a scalar reward (positive or negative) that mimics how a person would rate that response. You can train a reward model in multiple ways. The simplest is to have people grade the model outputs with a score, for example 1–5 stars or a number out of 100%. However, people are rarely consistent at these types of tasks: One person&#8217;s 2 is another&#8217;s 5, and even the same person drifts over time.</p>



<p class="wp-block-paragraph">Another simple way is to offer two model responses in comparison and ask, &#8220;Which one is better?&#8221; This is a much easier, more reliable judgment for people to make. Interannotator agreement is significantly higher for comparisons than for absolute ratings.</p>



<p class="wp-block-paragraph">Training a model using pairwise comparisons is also simple. You can then use cross-entropy loss over pairs, which pushes the reward of the preferred response higher than the unpreferred one. This works great because it means the reward model can learn from signals like &#8220;A is better than B&#8221; but can learn to output absolute scores for the reward.</p>



<p class="wp-block-paragraph">To make the process of collecting pairwise comparisons from people more efficient, the InstructGPT&#8217;s implementation of RLHF included showing labelers 4–9 different model outputs from a single prompt and asking them to rank those preferences. This would effectively result in 6–36 pairwise comparisons for a given ranking. Not bad; that&#8217;s efficient data labeling! They used ~33K prompts, so that would roughly translate to anywhere from 200K to 1.2M comparisons to train the reward model.</p>



<p class="wp-block-paragraph">After training, the reward model would be an automated judge during RL training, providing scalar rewards for responses. The language model then optimizes against this reward model&#8217;s scores. This means the better the reward model, the more aligned the resulting model would be.</p>



<h3 class="wp-block-heading">LLM as judge</h3>



<p class="wp-block-paragraph">So you need a reward: Why not use an LLM? LLM-as-judge, sometimes called RLAIF (<a href="https://arxiv.org/abs/2309.00267" target="_blank" rel="noreferrer noopener">reinforcement learning from AI feedback</a>), scales much better than human annotation while still being able to evaluate subjective qualities like helpfulness, clarity, and tone. But it inherits whatever biases or blind spots the judge model has, and can be more easily gamed. If the judge tends to prefer verbose answers, the trained model will learn to be verbose.</p>



<p class="wp-block-paragraph">One effective approach is to break the judgment into multiple LLM calls, each focused on a different aspect of the response, like a rubric. Instead of asking one LLM call &#8220;How good is this response?&#8221; you might have separate calls evaluating factual accuracy, clarity of explanation, appropriate tone, and completeness. Each dimension gets its own score, and you combine them into a final reward. This is more robust than a single holistic judgment because it&#8217;s harder for the model to game all dimensions at once, and it gives you fine-grained control over what you&#8217;re optimizing for. You can weigh the dimensions differently depending on what matters most for your use case, and adjust those weights over time as your priorities shift. For example, accuracy is worth 3x as much as tone.</p>



<p class="wp-block-paragraph">Combining human feedback with LLM-as-judge, Anthropic&#8217;s <a href="https://arxiv.org/abs/2212.08073" target="_blank" rel="noreferrer noopener">Constitutional AI</a> (CAI) is a method for training reward models from AI-generated comparisons, based on a human-written set of principles. What this means is that you can give an LLM a set of principles, which Anthropic calls a &#8220;constitution,&#8221; and have it critique and revise its own outputs based on those principles. For example, a principle might say &#8220;choose the response that is least likely to be harmful&#8221; or &#8220;prefer the answer that is most helpful while being honest.&#8221; The model generates pairs of responses, uses the constitution to decide which is better, and those AI preferences are used to train the reward model. This means you can encode your values explicitly as written principles in the Constitution rather than implicitly through thousands of human annotations, making it easier to audit, agree on, and update what the model is being trained to do.</p>



<h3 class="wp-block-heading">RL algorithms</h3>



<p class="wp-block-paragraph">Once you have a reward, it’s time to update the model&#8217;s weights. But you can&#8217;t just predict the next token, because there isn&#8217;t one. All you have is a value for the response the model gave. This is where RL algorithms come in. These algorithms are ways to take the reward and turn it into a meaningful, and ideally stable, training signal for the model to learn. There are several, and the field is moving fast, but a few fundamental ones are worth understanding.</p>



<h4 class="wp-block-heading">REINFORCE</h4>



<p class="wp-block-paragraph"><a href="https://people.cs.umass.edu/~barto/courses/cs687/williams92simple.pdf" target="_blank" rel="noreferrer noopener">REINFORCE</a> is the simplest starting point. The idea is to generate a response, score it, and if the reward was high, nudge the model to make that response more likely. If the reward was low, nudge it to make that response less likely. It&#8217;s conceptually easy to grok but noisy and difficult in practice because it turns out that the signal from a single response can point the optimization in unhelpful directions, and the variance in the gradients makes training slow and unstable. PPO was designed to fix these exact problems.</p>



<h4 class="wp-block-heading">PPO (proximal policy optimization)</h4>



<p class="wp-block-paragraph"><a href="https://arxiv.org/abs/1707.06347" target="_blank" rel="noreferrer noopener">PPO</a> is what OpenAI used in the original ChatGPT work and was for a while the default algorithm for RLHF. In RL terminology, the model is the &#8220;policy,&#8221; or the thing that takes actions by outputting tokens, in an environment which is simply the conversation context.</p>



<p class="wp-block-paragraph">PPO improves on REINFORCE by being more careful about how big each update is. Rather than taking whatever gradient the reward suggests, PPO clips the update so the model can&#8217;t change too much in a single step. This makes training significantly more stable. The clipping keeps updates &#8220;proximal.&#8221;</p>



<p class="wp-block-paragraph">PPO is also an online algorithm, meaning the model generates fresh responses during training, gets them graded, and updates from that feedback in a continuous loop. So the model keeps learning from its own current behavior rather than from a static dataset. It can explore and improve in ways that offline methods (that only collect data once beforehand) can&#8217;t.</p>



<p class="wp-block-paragraph">Notably, PPO uses a &#8220;critic,&#8221; or a separate model that predicts the expected total reward from any point during generation, and is trained with the policy. This helps reduce noise in training, because it gives you a baseline: Instead of just knowing &#8220;this response got a reward of 7&#8221; and having no idea if that&#8217;s good or bad, the critic might predict &#8220;you&#8217;d normally get a 5 here,&#8221; so the actual training signal (called an &#8220;advantage&#8221;) becomes &#8220;+2, better than expected.&#8221; This dramatically reduces noise compared to REINFORCE.</p>



<p class="wp-block-paragraph">The downside is complexity. Now you’re training two models (the main model and the critic), and the whole pipeline involves generating responses, grading them with a reward model, estimating how good the grades are relative to the critic, and updating both models. It works, but it&#8217;s a lot of moving parts. This makes it harder to tune or debug when something goes wrong, and harder to set up the infrastructure.</p>



<h4 class="wp-block-heading">DPO (direct preference optimization)</h4>



<p class="wp-block-paragraph"><a href="https://arxiv.org/abs/2305.18290" target="_blank" rel="noreferrer noopener">DPO</a> takes a different approach that avoids RL entirely but optimizes the same underlying objective as the standard RLHF formulation. Researchers found that there&#8217;s a mathematical relationship between the optimal reward model and the optimal main model (policy), and you can collapse the two-step process into one. This means that you can take the same pairwise comparison data (&#8220;model response A is better than model response B&#8221;) and use it to update the main model directly, without a reward model. Yes, this means good old supervised learning on that pairwise data.</p>



<p class="wp-block-paragraph">In theory, under ideal conditions, DPO and PPO-based RLHF converge to the same global optimum. Those ideal conditions include a perfect reward model, infinite preference data covering the full output distribution, and the reference policy matching the data-generating distribution. However, these rarely hold in practice, and several empirical studies have shown meaningful performance gaps between DPO and online RL methods on harder tasks, partly because DPO can’t explore beyond its fixed dataset. That said, it’s still a very promising technique.</p>



<p class="wp-block-paragraph">The simplicity of DPO is attractive: supervised fine-tuning on pairwise data with no reward model to train and no RL loop to stabilize. As a result, DPO has become very popular, especially among smaller teams, because it&#8217;s much easier to implement and debug. However, the trade-off is that DPO is less flexible, because it works directly from a fixed dataset of preferences. This means it can&#8217;t explore and discover novel behaviors the way online RL methods can. It only learns from the comparisons you already have.</p>



<p class="wp-block-paragraph">Newer online variants of DPO have addressed this by generating fresh responses during training, but at that point you&#8217;re reintroducing some of the infrastructure complexity that made DPO appealing to avoid in the first place.</p>



<h4 class="wp-block-heading">GRPO (group relative policy optimization)</h4>



<p class="wp-block-paragraph">Introduced by DeepSeek, <a href="https://arxiv.org/abs/2402.03300" target="_blank" rel="noreferrer noopener">GRPO</a> takes another stab at simplifying PPO. Instead of needing a separate critic model, GRPO generates a group of responses to the same prompt and uses the relative rewards within that group to figure out which responses were better or worse—basically normalizing within that group. If you generate eight responses and three of them score well, those three get reinforced and the others get pushed down, and the baseline (which the critic was in charge of previously) is just the group average. This eliminates the critic entirely while still getting a useful training signal. It&#8217;s simpler than PPO but still online (the model generates fresh responses during training), so it can explore in ways DPO can&#8217;t. GRPO got a lot of attention because of its role in training DeepSeek&#8217;s reasoning models.</p>



<p class="wp-block-paragraph">There are many more algorithms and variants, and new ones appear regularly. The field hasn&#8217;t converged on a method (and likely won&#8217;t for some time), and different algorithms suit different situations. DPO is great when you have good preference data and want simplicity. PPO remains strong when you need online exploration and have the engineering resources to manage the complexity. GRPO offers an appealing middle ground. In practice, teams often try multiple approaches and pick what works best for their specific use case and reward signal.</p>



<p class="wp-block-paragraph">RL post-training is also less stable than supervised learning, which we&#8217;ll cover next. The loss curves are noisier, the hyperparameters are more sensitive, and the training can diverge if not carefully managed. Practitioners typically constrain the RL updates with a penalty that prevents the model from drifting too far from its starting point. The most common approach is a <a href="https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence" target="_blank" rel="noreferrer noopener">KL divergence penalty</a> that keeps the fine-tuned model&#8217;s output distribution close to the base (or SFT) model&#8217;s distribution. This acts as a regularizer: It lets the model improve its behavior while preventing it from forgetting what it learned in pretraining or collapsing into degenerate patterns.</p>



<h2 class="wp-block-heading">Supervised fine-tuning (SFT): Teaching by demonstration</h2>



<p class="wp-block-paragraph">Supervised fine-tuning is more straightforward. You show the model examples of ideal responses, and train it to reproduce them. In practice, this means collecting a dataset of {prompt, ideal response} pairs and continuing to train the model&#8217;s weights using the same next-token prediction objective from pretraining, but now on this curated dataset instead of the broad pretraining dataset. The one difference is that the loss is computed only on the response tokens, not the prompt tokens, so the model learns to generate good responses given prompts, not to generate prompts.</p>



<p class="wp-block-paragraph">The simplicity is the point. There&#8217;s no reward model to train, no critic to stabilize, and no policy gradient variance to worry about. However, it’s also limited by the data you can collect. That can get expensive and difficult to scale.</p>



<p class="wp-block-paragraph">The quality of your SFT model is directly determined by the quality of your demonstrations. The model is learning to copy what you show it, so every quality issue in the data becomes a quality issue in the final model.</p>



<h3 class="wp-block-heading">Human demonstrations</h3>



<p class="wp-block-paragraph">The most direct approach is to hire skilled people to write high-quality responses to a diverse set of prompts. This is the gold standard. You can easily control your dataset here, and you can get exactly what you want, written to your specifications. The original InstructGPT paper from OpenAI contracted 40 labelers, writing demonstrations and ranking outputs.</p>



<p class="wp-block-paragraph">The disadvantage is, probably obviously, cost and scale. Good demonstrations are expensive, especially tasks requiring domain expertise like having doctors write an ideal prescription for a patient or a rocket scientist telling you how to put satellites on Mars. And even expert annotators are inconsistent. They have bad days, they get tired, and they interpret instructions differently from each other. At scale, this inconsistency can accumulate, though labeling companies manage and sell processes to make crowdwork more effective at scale.</p>



<h3 class="wp-block-heading">Synthetic data</h3>



<p class="wp-block-paragraph">Synthetic data scales far better than human annotation. You can generate millions of demonstrations cheaply and quickly. The <a href="https://crfm.stanford.edu/2023/03/13/alpaca.html" target="_blank" rel="noreferrer noopener">Stanford Alpaca project</a> famously fine-tuned Llama on only 52,000 demonstrations generated by text-davinci-003 (part of the GPT-3.5 model family, though not ChatGPT) and was able to get qualitatively similar behavior to text-davinci-003 with a much smaller budget (though it was on a narrow evaluation of only ~250 examples—still an exciting result for small open models for research).</p>



<p class="wp-block-paragraph">Many open source models have used variants of this approach. However, there&#8217;s also a practical consideration around terms of service. Some model providers restrict using their outputs to train competing models, and this has become an increasingly heated area of debate as models compete at the frontier. Know the rules before you build your pipeline.</p>



<h3 class="wp-block-heading">Curated data with synthetic transformations</h3>



<p class="wp-block-paragraph">Sometimes the best demonstrations already exist. Customer support logs, internal documentation, expert Q&amp;A forums, edited writing samples. If you have access to high-quality human-generated content that matches the behavior you want or is close to it, you can use LLMs to transform that data into prompt-response pairs. This has the advantage of being grounded in real use cases rather than fully synthetic scenarios.</p>



<p class="wp-block-paragraph">The work is in the curation, and sometimes it might be easier to generate from scratch based on a few few-shot examples. Raw data is messy: Support logs contain errors, forums contain misinformation, and real conversations meander. You need to filter, clean, and reformat aggressively, but you can build an LLM pipeline to do those steps. If you have a good source and invest in the LLM curation pipeline, this can be extremely effective, especially for domain-specific applications.</p>



<h3 class="wp-block-heading">Rejection sampling</h3>



<p class="wp-block-paragraph">Sometimes the best training signal is already inside the model and you just need to find it. Rejection sampling works by generating many possible responses to a prompt, scoring them with some quality metric, and keeping only the top performers. The quality metric can be a reward model, a rule-based check, or even a stronger model acting as a judge.</p>



<p class="wp-block-paragraph">Suppose you prompt your model &#8220;Write a Python function to merge two sorted lists&#8221; 64 times at temperature 0.8. You run each output through a test suite as your quality metric. Maybe 40 pass all tests. You take the 10 cleanest, most readable passing solutions and add them to your SFT dataset. You&#8217;ve just used the model&#8217;s own competence to build training data better than what most human annotators would produce for a coding task.</p>



<p class="wp-block-paragraph">It sounds like RL, but it&#8217;s just using the same pieces to filter the demonstrations that the model should see in SFT. The same graders like reward models, verifiers, or LLM-as-judges are used to curate SFT data.</p>



<p class="wp-block-paragraph">Rejection sampling is also surprisingly effective and therefore popular; for example it was described early on in Meta&#8217;s <a href="https://arxiv.org/abs/2307.09288" target="_blank" rel="noreferrer noopener">Llama 2 post-training pipeline</a>. The model already can produce great responses, but as you&#8217;ve probably noticed, it just doesn&#8217;t do so reliably. By filtering for its best outputs and training, you raise its average toward its ceiling. Instead of acting as the average developer, it’s nudged to act as an expert developer. Rejection sampling scales well because generation is cheap relative to human annotation. The main limitation is that you&#8217;re still bounded by what the model can produce at sample time. If it can&#8217;t generate a correct proof in any of 100 attempts, no amount of filtering will help.</p>



<p class="wp-block-paragraph">But SFT has limitations. It only teaches the model what to do. You&#8217;re presenting ideal behavior but never showing it what &#8220;bad&#8221; looks like. As a result, the model could still produce problematic outputs on prompts that weren&#8217;t well-represented during training.</p>



<p class="wp-block-paragraph">The SFT model is also prone to &#8220;mode averaging&#8221; when the training data sends mixed signals. For example, if half your golden retriever demonstrations sound like an encyclopedia (&#8220;The Golden Retriever (<em>Canis lupus familiaris</em>) is a large-sized breed of gun dog&#8230;&#8221;) and the other half sound really casual (&#8220;Golden retrievers? They&#8217;re basically furry happiness machines&#8221;), the model won&#8217;t learn to pick the right tone for each context. It&#8217;ll blend them into an awkward middle: &#8220;The Golden Retriever is basically a large-sized happiness machine of the gun dog variety.&#8221; Neither formal nor casual, which comes off as weird and not the right response style.</p>



<h2 class="wp-block-heading">Why frontier models use both</h2>



<p class="wp-block-paragraph">RL seems all-powerful. Why not use it alone? This was a research question pursued by DeepSeek&#8217;s team when training <a href="https://arxiv.org/abs/2501.12948" target="_blank" rel="noreferrer noopener">DeepSeek R1-Zero</a>. Up until then, the base models were so bad that doing RL was pointless on them and you needed to do SFT. This model demonstrated that RL applied directly to their relatively strong pretrained model can produce powerful reasoning ability without any SFT.</p>



<p class="wp-block-paragraph">However, the model still had serious usability problems. For example, it would mix languages (e.g., English with Mandarin), so it was difficult to use for most people. It could reason, but it wasn&#8217;t practical to use.</p>



<p class="wp-block-paragraph">RL&#8217;s main ceiling after the model has been trained is usability. During training, its ceiling is stability. Research on new methods are continually trying to find ways to do RL post-training more stably.</p>



<p class="wp-block-paragraph">SFT, on the other hand, has the opposite problem. It’s been used alone for many years and has reached maturity to some degree. InstructGPT made the model capable of instruction-following, and became the foundational approach for ChatGPT to handle multiturn dialogue and thus conversation. However, while SFT gets good, reliable results, it&#8217;s typically not enough to push performance at the frontier to reach superhuman performance on important tasks.</p>



<p class="wp-block-paragraph">Here’s what it means for you: If you&#8217;re doing post-training on your own, and you want your model to behave a certain way and you don&#8217;t care about novel frontier performance, SFT will get the job done.</p>



<p class="wp-block-paragraph">In contrast, RL can teach a model to reason through novel problems it hasn&#8217;t seen during training, because the reward signal evaluates the outcome rather than the exact token-by-token process like in SFT. RL can surface rare but important behaviors that might not appear frequently enough in any SFT dataset.</p>



<p class="wp-block-paragraph">On scaling data, RL can improve a model&#8217;s performance on a task as long as the reward signal is accurate, without needing to collect additional human-written examples. However, it’s important to note that on some tasks, it&#8217;s easier to scale SFT examples, and on others, it&#8217;s easier to scale via RL. For example, RL scales more easily on math problems. You can generate an unlimited number of math problems programmatically, and a verifier can check whether the answer is correct with certainty. You wouldn&#8217;t need to hire a mathematician to write out ideal solutions. The model attempts problems, gets told right or wrong, and improves.</p>



<p class="wp-block-paragraph">Safety is another area where RL stands out. It&#8217;s relatively easy to write a few hundred examples of a model declining harmful requests in your SFT dataset. But the space of ways a user might try to get harmful or inappropriate content is broad, creative, and ever-changing. RL allows the model to be trained against adversarial prompts, where it practices handling tricky edge cases and gets rewarded for handling them well. This is much harder to achieve with static demonstration data alone.</p>



<p class="wp-block-paragraph">Meanwhile, SFT scales more easily on writing in a specific brand voice. If you want the model to respond with your company&#8217;s brand voice. It might be hard to write a reward function that captures &#8220;sounds like our brand.&#8221; But the company could have tens of thousands of real support transcripts that already demonstrate the voice. You can curate these, transforming them into prompt-response pairs. The data already exists at a decent scale, while the reward signal would be hard to get right.</p>



<p class="wp-block-paragraph">When a frontier lab wants to add support for a new feature, for example calling MCPs or calling subagents, the first step is almost always to create a small amount of SFT data demonstrating that capability. The next step is creating a reward function and RL environment that can match it.</p>



<p class="wp-block-paragraph">Far more data and thus compute are dedicated to RL than SFT, but SFT offers good warm starts for the model and those examples are critical to getting the model into a stable place for subsequent RL.</p>



<p class="wp-block-paragraph">The combination of both is ultimately what makes modern frontier models as capable as they are. Neither alone is sufficient.</p>



<p class="wp-block-paragraph">A standard post-training pipeline uses SFT and RL as complementary stages that build on each other. It might look like this:</p>



<ol class="wp-block-list">
<li>Pretraining produces a foundation model with broad knowledge.</li>



<li>SFT takes that foundation model and teaches it basic behaviors: how to have a conversation, follow instructions, use a helpful tone on a range of different tasks, etc.</li>



<li>RL takes the SFT model checkpoint and refines it further. Using reward signals from human preferences, programmatic verifiers, or AI judges, RL gets the model to be more consistently helpful, less likely to produce harmful content, and better at complex tasks like reasoning.</li>
</ol>



<p class="wp-block-paragraph">Some teams also iterate between several stages of SFT and RL: SFT, then RL, then more SFT on new data, then more RL. The first couple stages could be on reasoning for verifiable tasks like math and code where the data and reward signals (verifiers) are constructed differently, whereas the second could be on messier general reasoning over all tasks, which would involve training reward models that encode human feedback as preferences.</p>



<p class="wp-block-paragraph">This iterative refinement can help with checkpointing quality at different stages and handing things off to different teams, though it adds complexity to the pipeline. Not surprisingly, the quality of each previous stage directly affects how well subsequent stages can go.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-two-pillars-of-post-training-reinforcement-learning-and-supervised-fine-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>A Home for Personal Context</title>
		<link>https://www.oreilly.com/radar/a-home-for-personal-context/</link>
				<comments>https://www.oreilly.com/radar/a-home-for-personal-context/#respond</comments>
				<pubDate>Tue, 11 Aug 2026 10:45:08 +0000</pubDate>
					<dc:creator><![CDATA[Duncan Davidson]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19342</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-4.png" 
				medium="image" 
				type="image/png" 
				width="1536" 
				height="1024" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-4-160x160.png" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[Every agent I use is building a model of me. Claude has learned how I like my prose. ChatGPT remembers what I’m working on. I don’t mind this—every person I have a relationship with carries a model of me in their head, and every company I do business with keeps a profile. Other people’s understandings [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">Every agent I use is building a model of me. Claude has learned how I like my prose. ChatGPT remembers what I’m working on. I don’t mind this—every person I have a relationship with carries a model of me in their head, and every company I do business with keeps a profile. Other people’s understandings of me have never been mine to control, after all.</p>



<p class="wp-block-paragraph">But an agent occupies a different role. It learns my writing style, my preferences, and the shape of my work and life, all to help me with what I do. Yet if I switch products, I have to start over. If I use three agents, each rebuilds from scratch what the others already know. Everything an agent learns lives with its vendor.</p>



<p class="wp-block-paragraph">It doesn’t need to be this way. What if every person had a canonical, user-controlled repository of context that any agent could request permission to use? What if my context lived not only with the company providing the agent but also in a home under my control? And what if an observation captured by one agent could be proposed to that repository and, once accepted, made available to every other agent I choose?</p>



<p class="wp-block-paragraph">By user-controlled, I don’t necessarily mean self-hosted. I mean that I can inspect what the repository contains, decide who can read or change it, understand where each piece came from, and export the whole thing in a form I can take elsewhere. Its storage, identity, and synchronization may all be provided by someone else. Control does not require me to operate the infrastructure; it requires that no agent or platform be the only way in—or the only way out.</p>



<p class="wp-block-paragraph">The repository wouldn’t be a portable copy of any agent’s internal model of me. It would be a legible record of things I have written, facts and preferences I have chosen to keep, as well as observations that agents have proposed and I have accepted, each with its provenance, scope, and history. Agents could consult or add to that record according to their permissions; their private inferences would remain their own.</p>



<p class="wp-block-paragraph">The dream is not a new one. Tim Berners-Lee’s <a href="https://solidproject.org" target="_blank" rel="noreferrer noopener">Solid</a> project has argued for years that personal data should live in pods that people control, and Doc Searls’s <a href="https://cyber.harvard.edu/projectvrm/Main_Page" target="_blank" rel="noreferrer noopener">VRM project</a> has been making the case for user-driven relationships with vendors for decades. What those efforts never had was mainstream demand. Agents are supplying it: An assistant needs rich personal context to be useful, and each vendor is building that context inside its own walls. Ordinary people now have a reason to want a personal data store, even if nobody will actually call it that.</p>



<p class="wp-block-paragraph">The hard problem in all this isn’t syncing or storing data. It’s negotiation. Who can read a given part of my context? Who can add to it, change it, or remove it? Which parts of my life can a particular instance of an agent see? How do I make those decisions in a policy-driven way? And how do I manage them from wherever I happen to be?</p>



<p class="wp-block-paragraph">But before I could work on negotiation, I had to figure out where my context should live. That’s the question I’ve spent the past year on, and I’ve tried three answers.</p>



<h2 class="wp-block-heading">First answer: The laptop</h2>



<p class="wp-block-paragraph">Immediately after getting access to Claude Code at the start of 2025, I pointed it at an Obsidian vault—a folder full of <a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noreferrer noopener">Markdown</a> files that can be used as a personal wiki. This wasn’t a particularly novel idea. Many of the geeks I know did the same, and the pattern has since spread in many forms. The best-known recent example is probably <a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" target="_blank" rel="noreferrer noopener">Karpathy’s LLM Wiki</a>, elegant not just as a design but as a document: You give the description to your agent, and the agent builds a version tailored to you.</p>



<p class="wp-block-paragraph">A year of using a pile of Markdown text files with agents has taught me five things about what a personal context system has to get right.</p>



<p class="wp-block-paragraph"><strong>Local-first foundations matter.</strong> Text files are remarkably legible, portable, and easy to store somewhere I control. Git moves them between computers and remembers every change. But the result is centered on a laptop or desktop and assumes a user comfortable with plain text and version control. Most annoyingly, my context in this form isn’t readily available on my phone, which is the computer that goes with me everywhere. Nor can agents running anywhere other than my laptop reach it.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="900" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5-1600x900.png" alt="Personal context repository" class="wp-image-19344" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5-1600x900.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5-768x432.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5-1536x864.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-5.png 1672w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph"><strong>Provenance matters, and so do proposals.</strong> Karpathy’s Wiki is almost entirely written (and rewritten) by the LLM. In my own system, I write most things myself and lean on agents to help me edit as well as contribute their observations. I want to know which thoughts are mine, which were captured by an agent, and which we arrived at together. That means an agent’s observation should not automatically enter the repository on the same footing as something I wrote. The default should be a proposal that I—or a policy I control—can accept, revise, or reject. Direct write access is something a trusted agent should earn.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="865" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6-1600x865.png" alt="Latest state only" class="wp-image-19345" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6-1600x865.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6-300x162.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6-768x415.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6-1536x830.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-6.png 1706w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph"><strong>Chronology matters.</strong> Wiki links aren’t the only structure in a life. Most of what I record—and much of what agents observe—is anchored in time. Thoughts build on thoughts. Observations about people accumulate meeting by meeting. Some facts fade as they age. Time should be a primary axis of the system, not something reconstructed afterward from file histories and metadata.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="843" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7-1600x843.png" alt="Different connections" class="wp-image-19346" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7-1600x843.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7-300x158.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7-768x404.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7-1536x809.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-7.png 1728w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph"><strong>Scopes matter.</strong> My context spans work, personal, family, and public life. I want one unified view; no agent should have one. An agent connected through my work account should see work and public context—and nothing about my family. Fully separate silos would protect those boundaries, but they would also shred the single history I want to keep building for decades.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="900" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8-1600x900.png" alt="A persistent identity" class="wp-image-19347" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8-1600x900.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8-300x169.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8-768x432.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8-1536x864.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-8.png 1672w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph"><strong>Identity and type matter. </strong>LLMs can extract all sorts of meaning from plain text, but some things, such as people, companies, and places, deserve to be typed records rather than mentions in prose. A persistent identity gives observations, relationships, and history an anchor to accumulate around; it can help resolve nicknames and follow changes in roles and titles. An agent can then act on who someone is without reconstructing them from prose every time.</p>



<p class="wp-block-paragraph">As I learned these lessons, I added tooling and conventions to my personal context repository. It’s surprising how far you can push a directory of Markdown files. Each new affordance, however, turned my simple folder into a more specialized system, and the result only works for geeks like me. It doesn’t work for my family, however. They use agents every day but they are never going to deal with a pile of Markdown files in a Git repo. They want their personal context to be with them, easy to use, and transparent to the rest of their life.</p>



<p class="wp-block-paragraph">More to the point, the five lessons above describe what a context system must do. They don’t answer where it should live if <code>/home/$USER</code> isn’t the center of your computing life.</p>



<h2 class="wp-block-heading">Second answer: The web</h2>



<p class="wp-block-paragraph">My next move was to sort out how to make my context available when I wasn’t at my laptop—to me and, just as importantly, to my agents. The obvious solution to me as someone who has been building on the web since the mid-1990s: put it on a server behind a URL. I deployed a Cloudflare Worker, uploaded my context, and stood up both a REST API and an MCP server. The improvement was immediate. My context was reachable from my phone and grantable to any agent I chose.</p>



<p class="wp-block-paragraph">New problems arrived just as fast. I had created a new trust boundary with its own access control mechanism and appointed myself its security team. I was now the operator of a small SaaS with exactly one customer, responsible for its uptime and its backups. And I had traded away local-first, offline editing to get there.</p>



<p class="wp-block-paragraph">These are solvable problems. Our industry has spent two decades learning to host services, and CRDTs could probably win back offline editing. But as agents gain access to more sensitive data and more power to act on our behalf, the price of getting a boundary wrong keeps rising.</p>



<p class="wp-block-paragraph">And even with those solved, a deeper problem remains: A stand-alone service sits outside my computing home, apart from the contacts, calendars, messages, files, and system-level agents already inside it. Apple’s Siri AI announcements made that separation vivid, and Gemini’s integration into Google’s ecosystem points the same way. An agent embedded in an ecosystem works with everything inside its trust boundary; my worker would have to rebuild every one of those connections from outside.</p>



<h2 class="wp-block-heading">Third answer: My pocket</h2>



<p class="wp-block-paragraph">As I tinkered, I kept returning to a simple mental image: my context living on the device in my pocket that goes with me everywhere. Not literally every byte, of course, but within the personal computing ecosystem that phone is the center of—the one that already establishes my identity, synchronizes my devices, stores much of my personal data, and mediates what applications can access. In this sense, a home is not a physical location. It is a trust boundary.</p>



<p class="wp-block-paragraph">Living inside the boundary doesn’t mean that every application inside gets my context, or that agents outside are shut out. The boundary supplies identity, secure storage, synchronization, and native integration; the context layer still decides what each connection may read, propose, change, or delete. Native agents participate through the platform’s own capabilities, while agents from other companies connect through explicit, revocable permissions.</p>



<p class="wp-block-paragraph">For me, that home in my pocket is Apple’s ecosystem, with iCloud at its center. For you, it may be Google or Microsoft. The point is not that any one ecosystem is the right home for everyone. It is that most people already have a primary digital home, and that home is the most practical default for their personal context. We shouldn’t need to create a separate service with its own identity. Instead, agents should have a common, permissioned interface to the context where it already lives.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1600" height="960" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9-1600x960.png" alt="Your ecosystem" class="wp-image-19348" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9-1600x960.png 1600w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9-300x180.png 300w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9-768x461.png 768w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9-1536x921.png 1536w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-9.png 1619w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></figure>



<p class="wp-block-paragraph">There’s an obvious risk here. A home rooted in a vendor’s ecosystem invites lock-in. The mitigation is straightforward: The whole repository—entities, provenance, and history included—must be exportable at any time as a directory of plain text files that can be taken anywhere. A pile of files in a folder may not be the right solution for live context, but it makes a perfect escape hatch.</p>



<p class="wp-block-paragraph">I’ve started testing this thesis in a SwiftUI app, and my early prototypes suggest that the architecture is workable: iCloud handles synchronization, and I can expose selected context to authenticated agents through MCP. It’s also shown that working in the Apple developer ecosystem is more annoying than deploying a web app.</p>



<p class="wp-block-paragraph">The remaining work is clear, however. Choosing a home for context is one problem; negotiation—permissions that remain understandable as a repository grows, proposals from multiple agents reviewed and reconciled—is another. That is the hard problem I mentioned before, and it deserves its own deep dive.</p>



<h2 class="wp-block-heading">One pattern, many homes</h2>



<p class="wp-block-paragraph">Others are converging on this pattern from different directions. The note-taking app <a href="https://bear.app" target="_blank" rel="noreferrer noopener">Bear</a>, which stores its notes locally on Apple devices and synchronizes them through iCloud, now exposes them to local agents through MCP; its latest release lets users include or exclude notes by tag when granting access, offering a practical approach to scopes. <a href="https://www.craft.do" target="_blank" rel="noreferrer noopener">Craft</a>’s MCP connections likewise let users choose which documents or spaces an agent can access and whether it can read or write them. Reflect has embarked on an <a href="https://github.com/team-reflect/reflect-open" target="_blank" rel="noreferrer noopener">open source client using Markdown files</a> that will have an iOS companion app.</p>



<p class="wp-block-paragraph">These are just a few examples, and there are a lot more out there. What I haven’t yet seen emerge however is the attribution and provenance of items that an agent contributes or edits that I think a durable personal context requires.</p>



<p class="wp-block-paragraph">Zooming out, here are the principles I think are needed in any system like this, wherever it makes its home:</p>



<ol class="wp-block-list">
<li><strong>Context shouldn’t be captive to any particular agent</strong>. A person should be able to change or combine agents without ever starting over.</li>



<li><strong>Context should be reachable by local and remote agents alike</strong>, with appropriate authentication and authorization.</li>



<li><strong>Permissions should be scoped and revocable</strong>. Access should be granted to a specific connection with an agent, limited to a defined subset of the context, and should distinguish between reading, proposing, changing, and deleting.</li>



<li><strong>Provenance should persist</strong>. Every item records where it came from, who or what created it, and how it has changed. The distinction between human-written, agent-captured, and collaborative work should outlive the conversation that produced it.&nbsp;</li>



<li><strong>Time should be part of the context</strong>. The system should preserve when something was observed, when it was true, and how it changed, rather than continually overwriting the past with the present. Database folks will recognize this as bitemporality: the distinction between transaction time and valid time.</li>



<li><strong>Entities should be first-class</strong>. People, companies, places, and other recurring concepts should remain recognizable as names, roles, and relationships change.&nbsp;</li>



<li><strong>Interoperability should not require uniformity</strong>.<strong> </strong>Different people and companies should be able to build different context systems for different ecosystems and trust boundaries. What they need is agreement on identity, permissions, provenance, and exchange, not one universal application. For the exchange, plain text files with structured metadata are a strong candidate.</li>
</ol>



<p class="wp-block-paragraph">Using these principles, personal context can be something a person owns: You can inspect it, grant and revoke access to it, trace where each piece came from, and take the whole of it elsewhere. Every agent may still develop its own understanding of you, but you’ll be able to bring a durable context of your own to the relationship, one that participates in the agentic ecosystem without being subordinate to any vendor in it.</p>



<p class="wp-block-paragraph">Karpathy’s LLM Wiki is a description, not a tool; it’s meant to be implemented by anyone, in whatever form fits. This essay is offered in the same spirit. The important part isn’t whether the app I’m tinkering with ever ships beyond my own devices. I’m more interested in the dialogue it will take for everyone to have personal context that works for them, in their ecosystem and with the agents they want to use. If we get the pattern right, changing agents won’t mean changing homes. The context they help us build will remain ours.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/a-home-for-personal-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Zero to Agent in 30 Minutes: Build a YouTube Analytics Agent with Vicki Reyzelman</title>
		<link>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-youtube-analytics-agent-with-vicki-reyzelman/</link>
				<comments>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-youtube-analytics-agent-with-vicki-reyzelman/#respond</comments>
				<pubDate>Mon, 10 Aug 2026 16:29:51 +0000</pubDate>
					<dc:creator><![CDATA[Michelle Smith]]></dc:creator>
						<category><![CDATA[Zero to Agent in 30 Minutes]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19335</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/zero-to-agent-cover-radar.png" 
				medium="image" 
				type="image/png" 
				width="504" 
				height="504" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/zero-to-agent-cover-radar-160x160.png" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[How clear goals, reliable data, and strong guardrails lead to a more useful agent]]></custom:subtitle>
		
				<description><![CDATA[On the most recent episode of Zero to Agent in 30 Minutes, Vicki Reyzelman, senior solutions engineer at Akamai Technologies, drew on more than 25 years in technology and a background in software engineering to build an agent for her Chat About AI YouTube channel. Vicki wanted the agent to monitor channel performance, identify bottlenecks, [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">On the most recent episode of <em>Zero to Agent in 30 Minutes</em>, Vicki Reyzelman, senior solutions engineer at Akamai Technologies, drew on more than 25 years in technology and a background in software engineering to build an agent for her <a href="https://www.youtube.com/@chataboutai" target="_blank" rel="noreferrer noopener">Chat About AI YouTube channel</a>.</p>



<p class="wp-block-paragraph">Vicki wanted the agent to monitor channel performance, identify bottlenecks, and recommend ways to grow subscribers and improve click-through rates. She defined the requirements, designed the workflow, built the agent, tested it, and revised the instructions following the same iterative process used in software development.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Zero to Agent in 30 Minutes: Build a YouTube Analytics Agent with Vicki Reyzelman" width="500" height="281" src="https://www.youtube.com/embed/LG9K0SfZznA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading"><strong>How to build a YouTube analytics agent, step by step</strong></h2>



<ol class="wp-block-list">
<li><strong>Define the goal.</strong><strong><br></strong>Start with the problem the agent should solve. Vicki wants to understand which videos perform well, where channel performance falls short, and what actions could help more viewers discover and subscribe to the channel.</li>



<li><strong>Review the available data.</strong><strong><br></strong>Examine each source before designing the workflow. YouTube Studio exports include metrics such as impressions and click-through rates. The YouTube Data API provides information about channels, subscriptions, comments, and activity, but it doesn’t include every metric available through YouTube Studio.</li>



<li><strong>Choose how the agent will receive the data.</strong><strong><br></strong>Vicki downloads her analytics as CSV files instead of connecting the agent directly to her account. This gives her more control while she tests the workflow. She notes that she could add an authenticated API connection later, after testing the agent’s permissions and guardrails.</li>



<li><strong>Write the skills file.</strong><strong><br></strong>The skills file defines the agent’s mission, capabilities, data sources, rules, and expected output. Vicki instructs the agent to audit channel metrics, identify bottlenecks, compare performance over time, and recommend actions tied to subscriber growth and click-through rates.</li>



<li><strong>Add guardrails and acceptance criteria.</strong><strong><br></strong>Tell the agent how to handle the data and what it must avoid. Vicki directs it to use only the supplied numbers, ignore bot activity, report silent failures, and stay within approved systems and data sources. These instructions help prevent unsupported conclusions and actions outside the agent’s assigned role.</li>



<li><strong>Build and test the agent.</strong><strong><br></strong>Vicki uses the console’s quick-start process to create the agent, add its instructions and sample analytics, select an environment, and start a session. Her first test encounters input problems, so she stops the session, adjusts the data, and runs it again.</li>



<li><strong>Monitor cost and performance.</strong><strong><br></strong>Observability tools show token consumption, errors, active time, and deployments. Vicki explains that more capable models may need less context but usually cost more to run. Teams can balance model capability against token cost by improving their instructions, selecting less expensive models for simpler work, or dividing a workflow among specialized agents.</li>
</ol>



<p class="wp-block-paragraph">Vicki recommends revisiting the skills file as new requirements emerge. Clearer instructions, stronger guardrails, and regular testing help the agent continue to produce useful results. Her process reinforces a practical software engineering lesson: Faster implementation doesn’t reduce the need for clear requirements, reliable data, security controls, and testing.</p>



<h2 class="wp-block-heading"><strong>Coming next week</strong></h2>



<p class="wp-block-paragraph">Join us for the next episode on August 12, when AI and machine learning leader Ofer Mendelevitch will explain how to design multi-agent systems that can keep work moving without constant human involvement. He’ll use <a href="https://jam.dev/" target="_blank" rel="noreferrer noopener">Jam</a> to build a team of agents that can plan, divide work, execute tasks, review progress, escalate problems, and repeat the process. He’ll show how an architect agent can take a project brief, recruit developer agents, assign work, and guide the project toward a clear definition of done.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/zero-to-agent-in-30-minutes-build-a-youtube-analytics-agent-with-vicki-reyzelman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>The Base Is Under Attack</title>
		<link>https://www.oreilly.com/radar/the-base-is-under-attack/</link>
				<comments>https://www.oreilly.com/radar/the-base-is-under-attack/#respond</comments>
				<pubDate>Mon, 10 Aug 2026 13:08:22 +0000</pubDate>
					<dc:creator><![CDATA[Tim O'Brien]]></dc:creator>
						<category><![CDATA[Security]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19331</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-base-is-under-attack.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/The-base-is-under-attack-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
				<custom:subtitle><![CDATA[AI didn’t break software security. It exposed a design problem.]]></custom:subtitle>
		
				<description><![CDATA[The following article originally appeared on Tim O’Brien’s Medium page and is being republished here with the author’s permission. At some point, the software “Security” industry stopped talking about stopping threats and started talking about detecting them: detection windows, response times, mean time to remediate. It’s not offense or prevention; it’s damage control. There’s a [&#8230;]]]></description>
								<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><em>The following article originally appeared on </em><a href="https://medium.com/@tobrien/the-base-is-under-attack-44b1864bf775" target="_blank" rel="noreferrer noopener"><em>Tim O’Brien’s</em> Medium <em>page</em></a><em> and is being republished here with the author’s permission.</em></td></tr></tbody></table></figure>
</blockquote>



<p class="wp-block-paragraph">At some point, the software “Security” industry stopped talking about stopping threats and started talking about detecting them: detection windows, response times, mean time to remediate. It’s not offense or prevention; it’s damage control. There’s a movie scene that captures what that sounds like, and you’re going to name the film before I finish describing it.</p>



<p class="wp-block-paragraph">An underground base on a frozen planet. The enemy knows exactly where it is. Massive mechanical walkers—walking tanks the size of buildings—are advancing across the ice. The defenses can’t stop them. The people inside aren’t trying to fight back. They’re frantically trying to get a broken ship working so they can just escape—not win, not hold the line, just get out before something catastrophic and unstoppable reaches the door.</p>



<p class="wp-block-paragraph">The whole opening is just people preparing. Rushing. Running checks on equipment that isn’t ready, coordinating defenses that won’t hold, buying time against something too large and too fast to stop. Nobody’s planning a counterattack.</p>



<p class="wp-block-paragraph"><em>The entire operation is: slow it down long enough to get out.</em></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="720" height="480" src="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-3.png" alt="Securing the Base (Image Assist from Anthropic)" class="wp-image-19332" srcset="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-3.png 720w, https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/image-3-300x200.png 300w" sizes="auto, (max-width: 720px) 100vw, 720px" /><figcaption class="wp-element-caption">Securing the Base (Image Assist from Anthropic)</figcaption></figure>



<h2 class="wp-block-heading">The Empire Strikes Back</h2>



<p class="wp-block-paragraph">That’s what the conversation around InfoSec sounds like right now. The base is under attack. The walkers are AI-generated vulnerabilities, automated exploit chains, and speed that no human team can match. The framing has shifted from defending the perimeter to just getting the ship started. Not winning, just getting out.</p>



<p class="wp-block-paragraph">Go back and watch that opening sequence carefully. There are hundreds of faceless Rebel troopers in that scene—no names, no lines worth remembering—scrambling to hold the perimeter, buy time, absorb the blow. Some of them continue to fight. But maybe some already understand that the base is lost.</p>



<p class="wp-block-paragraph">Han is out on the ice looking for Luke. Leia is already on the transport, making sure the mission survives. The main characters aren’t defending the base. They’ve concluded the only way to answer the threat is to move. Most of the conversation around AI right now sounds like those faceless troopers continuing to defend: fortify what’s there, slow the walkers down, hold long enough for something to change. A few people are thinking like Han. They’re not buying another vulnerability scanner from a vendor. They’re asking whether there’s a different way off the planet entirely.</p>



<p class="wp-block-paragraph">Here’s the disconnect: most people focused on “Security” have spent decades being handed a finished base and then being asked to defend it. They weren’t involved in the architecture or approach that application developers have been using.</p>



<ul class="wp-block-list">
<li>This new application uses Node.js—go defend it.</li>



<li>We’re using a new relational database because the architect wanted to—go defend it.</li>



<li>Our developers decided to start using an LLM. Can you secure it? Thanks.</li>
</ul>



<p class="wp-block-paragraph">In many cases, people responsible for security are not defining architectures as much as they are catching up. And as “developers” start to generate more code in a day than was possible in a month or a year, it’s becoming increasingly unrealistic to think of security as an afterthought.</p>



<p class="wp-block-paragraph">When security is just a support team for software engineers, that’s building a base that might be indefensible.</p>



<p class="wp-block-paragraph">The shift that actually matters isn’t a better scanner or a faster response team. It’s security people in the room when people are writing the prompts, when agents are assembling the dependency list, and when the basic system prompts are defining the authentication system—before any of those systems is in production. Not reviewing the finished base.</p>



<p class="wp-block-paragraph">Security needs to be involved before anyone even starts to prompt a system’s creation.</p>



<p class="wp-block-paragraph">“Machine speed” has become a conference catchphrase, which usually means it needs translation. Here’s what it actually looks like, pointed at you:</p>



<ul class="wp-block-list">
<li>A network of agents found a zero-day in FFmpeg and didn’t announce it anywhere, just filed it internally.</li>



<li>A second agent scraped your team’s LinkedIn and X and noted who’s in Cancun next week.</li>



<li>A third logged your nightly load balancer latency blip as a cover for an attack.</li>



<li>A fourth studied your last three incident reports and estimated a 30-minute detection window.</li>
</ul>



<p class="wp-block-paragraph">The whole operation, including reconnaissance, timing, and coordination, ran in seconds. What previously required a dedicated red team and weeks of planning is now background processing that runs continuously, waiting for the right moment.</p>



<p class="wp-block-paragraph">Five years ago, you would have tasked a room of scary-looking security people with profiling a target, capturing latency data, and maybe holding several meetings to discuss what they found. Today, the coordination I outlined in the previous paragraph might take a few minutes on a network of interconnected Nanobot, Picobot, Hermes, or OpenClaw agents that gather data and then update a shared memory system, and the decision on when and how to attack would be made by another agent that was granted permission to coordinate the attack across a distributed network of agents.</p>



<p class="wp-block-paragraph"><em>Quick note: If you have anything to do with running a website, stop posting about your vacation plans.</em></p>



<p class="wp-block-paragraph">Here’s what the conversation keeps missing: AI isn’t the real problem, and this problem isn’t necessarily new. The problem is that we’ve been building bases that were always going to need to be evacuated. The problem is that security is rarely involved in selecting a tech stack, and because that tech stack selection is frequently automated with AI, there’s no predicting the mess that’s being thrown over the wall.</p>



<p class="wp-block-paragraph">The response to AI-accelerated attacks is almost entirely defensive. Tighten npm’s signing requirements. Fund the Maven repository. Sign up to support Akrites with the Linux Foundation. Add another scanner to the pipeline. These aren’t wrong. They’re just not enough.</p>



<p class="wp-block-paragraph">These are important projects, and security groups should sign up to support them, but the real transformation that needs to happen is that more people in security need to get involved in software creation. What this looks like is having an opinion on React, Vite, Tomcat, Node.js, databases. It means jumping in and affecting some of the basic decisions that these agents are going to use before they deliver vulnerable software.</p>



<p class="wp-block-paragraph">Most of the industry is still shopping for scanners. Most people in security are still “reviewing” software in a process that assumes it takes weeks or months to write.</p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/the-base-is-under-attack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Why Open Source Matters for AI</title>
		<link>https://www.oreilly.com/radar/why-open-source-matters-for-ai/</link>
				<comments>https://www.oreilly.com/radar/why-open-source-matters-for-ai/#respond</comments>
				<pubDate>Mon, 10 Aug 2026 08:42:43 +0000</pubDate>
					<dc:creator><![CDATA[Tim O’Reilly]]></dc:creator>
						<category><![CDATA[AI & ML]]></category>
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">https://www.oreilly.com/radar/?p=19315</guid>

		
					<media:content 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Why-open-source-matters-for-AI.jpg" 
				medium="image" 
				type="image/jpeg" 
				width="2304" 
				height="1792" 
			/>

			<media:thumbnail 
				url="https://www.oreilly.com/radar/wp-content/uploads/sites/3/2026/08/Why-open-source-matters-for-AI-160x160.jpg" 
				width="160" 
				height="160" 
			/>
		
		
				<description><![CDATA[In 1995, the question in the media was whether Netscape or Microsoft would control the web. The answer, it turned out, was neither. Both Netscape and Microsoft aimed to dominate the web server and browser market, reasoning that whoever controlled both ends of the connection would have an internet “platform” to rival the deathgrip that [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p class="wp-block-paragraph">In 1995, the question in the media was whether Netscape or Microsoft would control the web. The answer, it turned out, was neither.</p>



<p class="wp-block-paragraph">Both Netscape and Microsoft aimed to dominate the web server and browser market, reasoning that whoever controlled both ends of the connection would have an internet “platform” to rival the deathgrip that Microsoft had enjoyed on the personal computer. The two companies raced to build every feature they could think of directly into the product, on the theory that whoever built the most integrated and full featured web server would win.</p>



<p class="wp-block-paragraph">The open source Apache web server took the opposite bet. It stayed a web server with a clean extension layer, so anyone could bolt something new onto it without asking permission or waiting for the next release cycle. Within a few years, Apache was far and away the most popular web server, and Netscape’s server and Microsoft’s Internet Information Server (IIS) were history. People started talking about <a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank" rel="noreferrer noopener">the LAMP stack</a>: Linux, Apache, MySQL, and (Perl | Python | PHP) as a legitimate platform. Modularity, not features, was the moat. The fact that major elements of that stack survive while others have been swapped out or extended is a testament to the power of composability and distributed innovation.</p>



<p class="wp-block-paragraph">I called that pattern <a href="https://www.oreilly.com/pub/a/tim/articles/architecture_of_participation.html" target="_blank" rel="noreferrer noopener">the architecture of participation</a> when I wrote about it in 2004. I was trying to explain an inconvenient fact that the licensing debates of that era ignored. I had started working with Unix in the System III days, and saw how it had succeeded as a collaborative project even though AT&amp;T offered Unix under a proprietary license. A few years later, I observed that nominally open source projects like OpenOffice with monolithic architectures never built much of a community. I realized that open source wasn’t just about licenses, but about architecture. A small kernel with standard interfaces that lets people extend your work without asking for permission is an important part of the secret sauce.</p>



<p class="wp-block-paragraph">Swap out Netscape and Microsoft for OpenAI and Anthropic in this story, and perhaps you can see the echoes.</p>



<p class="wp-block-paragraph">A model’s personality, its defaults, and its history used to live where you could, with a little effort, see them and edit them. Increasingly, they don’t. As <a href="https://learning.oreilly.com/live-events/escaping-the-prompt-debt-trap-drew-breunig-live-with-tim-oreilly/0642572421878/" target="_blank" rel="noreferrer noopener">Drew Breunig pointed out to me the other day</a>, each new version of the frontier models moves a little more of the product’s behavior out of an editable layer and into the weights themselves, where nobody outside the lab can see it, let alone change it. The model stops being a component you build with and can adjust to your liking and starts being an appliance you rent. Post-training is important but Drew points out that it is also “<a href="https://x.com/dbreunig/status/2083410286997131432" target="_blank" rel="noreferrer noopener">trading diversity for reliability</a>.” That’s a good trade for many people, but it is the same kind of trade that gives us highly processed foods when we know that “<a href="https://michaelpollan.com/books/in-defense-of-food/" target="_blank" rel="noreferrer noopener">real food</a>” is better.</p>



<h2 class="wp-block-heading">Open weights are just table stakes</h2>



<p class="wp-block-paragraph">The public debate about open source AI seems devoted far too much to model weights, their national security implications, and whether a lab releases weights and under what license.&nbsp; But that covers only a fraction of what actually makes open source matter. Apache was never competing with Netscape and Microsoft (and Linux was never competing with Windows) over whose source was more available. They were competing over something more important. I remember talking with Bob Young, the founder of Red Hat, about his business model, and he said “What we really sell to our customers is control.” Open source meant that the platform your application depended on was no longer a sealed box you licensed from one company but a layer you could extend and build a business on top of without asking anyone’s permission. It sparked an explosion of innovation. It enabled companies like Google and Amazon to grow up free from Microsoft’s dominant paradigm.</p>



<p class="wp-block-paragraph">Every wave of computing, from mainframes to PCs to the internet, has run through the same cycle: distributed innovation at the start, with the eventual winner gradually closing down its offerings to build a moat. What keeps a market open isn’t the license on any single component. It’s how easy it is to swap out one component for another when a better one appears.</p>



<p class="wp-block-paragraph">The protocols connecting the pieces are an important part of that picture. Unix utilities expected stdin and stdout, and the shell acted as a kind of harness to connect them, so it was easy to build a new tool that worked seamlessly with existing ones. A testament to the power of that approach is just how much the shell and Unix utilities are the lingua franca of agentic tooling today, more than 50 years after they were invented! TCP/IP, HTTP, and other internet protocols played a similar role in keeping the internet open and composable.</p>



<p class="wp-block-paragraph">Fortunately, so far, we are seeing some wins for composable, protocol-centric architectures in AI. Anthropic’s Model Context Protocol was a disruptive move in that direction, an open standard for letting any application reach any tool or data source without a custom integration for each pairing. Along with other open protocols, MCP also now has a home outside of Anthropic at the <a href="https://aaif.io/" target="_blank" rel="noreferrer noopener">Agentic AI Foundation</a> (a subproject of the Linux Foundation), which is at least a partial guarantee of its independence.</p>



<p class="wp-block-paragraph">Isobel Moure, Ilan Strauss, and I made the case earlier this year in <a href="https://www.oreilly.com/radar/protocols-and-power/" target="_blank" rel="noreferrer noopener">Protocols and Power</a> that as models commoditize, competition moves up the stack to context. Opening the means of accessing that context opens the market, regardless of whether open or closed weights sit underneath it. That’s an unbundling, model from harness from context, done the way Apache unbundled web server from web application.</p>



<p class="wp-block-paragraph">Agentic skills may also be a critical element of the open source AI future, though as the history of the LAMP stack shows, they may fall by the wayside in the same way that Perl and PHP did. And that’s just fine. Composability means that it’s easy to switch to something better when it comes along, or when more people agree on it.</p>



<p class="wp-block-paragraph">There’s also a lot of great work going on in portable memory from players like <a href="https://www.letta.com/" target="_blank" rel="noreferrer noopener">Letta</a>, <a href="https://nousresearch.com/" target="_blank" rel="noreferrer noopener">Nous Research</a>, and others. Open source agentic harnesses like <a href="https://goose.ai/" target="_blank" rel="noreferrer noopener">Goose</a> and  <a href="https://pi.dev/" target="_blank" rel="noreferrer noopener">Pi</a> are also a big part of giving power back to the people. Pi in particular is optimized to be modifiable. There’s a fun story told about Mario Zechner’s decision to give Pi a &#8220;/quit&#8221; command rather than an &#8220;/exit&#8221; command like Claude or Codex. Countless issues and PRs have been submitted to Pi’s repo, asking for or implementing &#8220;/exit&#8221;, but Zechner is stubborn. His retort is that you should just ask Pi to add it to your install.</p>



<p class="wp-block-paragraph">But the projects I listed above are just the tip of the iceberg when it comes to the scale and scope of open source AI.&nbsp; Current AI’s <a href="https://www.aipotluck.org/map" target="_blank" rel="noreferrer noopener">Open Source Gap Map</a> covers more than 24,600 open source AI projects!!, with 421 of them scored in depth across openness, capability, and adoption. The map organizes the stack into three layers: 1) models and associated elements including data sets, fine tuning tools, inference frameworks like <a href="https://vllm.ai/" target="_blank" rel="noreferrer noopener">VLLM</a>, and evals; 2) the product and UX layer, including harnesses and personal agents; and 3) the infrastructure underneath, including core ML frameworks like <a href="https://pytorch.org/" target="_blank" rel="noreferrer noopener">PyTorch</a>, deployment tools like <a href="https://ollama.com/" target="_blank" rel="noreferrer noopener">Ollama</a>, and edge hardware.</p>



<p class="wp-block-paragraph"><a href="https://www.currentai.org/" target="_blank" rel="noreferrer noopener">Current AI</a> itself is a public-private partnership that came out of the AI Action Summit in Paris last year. This summer they announced <a href="https://www.aipotluck.org/" target="_blank" rel="noreferrer noopener">AI Potluck</a>, which they describe as “a public project to build a vertically integrated AI product assembled entirely from open source components… a viable alternative to proprietary AI that isn’t owned by any one company or country.” It is backed so far by roughly $400 million of a five-year, $2.5 billion commitment from the French government, tech companies including DeepMind and Salesforce, and major philanthropies including Omidyar’s AI Collaborative, the Macarthur Foundation, and the Ford Foundation.</p>



<p class="wp-block-paragraph">The fact that this organization exists, along with others like the Agentic AI Foundation, is a testament to the rising tide of interest in open source AI. The coalition of interested parties also says a lot about the underlying motivations that are driving that interest: AI sovereignty, corporate independence from the overweening ambition of the major labs, and an interest in technology for the public good.</p>



<h2 class="wp-block-heading">Keeping it weird</h2>



<p class="wp-block-paragraph">There’s another element, which Drew Breunig put his finger on in our conversation the other day. The problem with having one or two big closed models dominating AI, and having those models increasingly locking their desired personality, business goals, and guardrails into the weights themselves, is that they will reduce the diversity that is at the heart of innovation.</p>



<p class="wp-block-paragraph">It’s our job, Drew said, to make it weird, to push a model deliberately out of distribution rather than to settle for whatever the labs have made the default outcome. He described how his team chose not to build in React for a recent project for exactly that reason: every model already knows React too well, so building in it means shipping the average of what everyone else was doing instead of something genuinely their own. He has started using GLM and Kimi not to save money but because they are more malleable and take direction better inside a custom harness. And he wants the open-weight ecosystem to survive precisely so that models stay infrastructure rather than becoming appliances.</p>



<p class="wp-block-paragraph">That’s what an architecture of participation is actually for. We need real separation between the model, the harness, and the application, so that someone who wants to build something weird can still do it without a lab’s roadmap and guardrails deciding whether they’re allowed to.</p>



<p class="wp-block-paragraph">“Weird” may make it sound like something that not all developers might want. But we’re really talking about something intensely practical. In his short essay on trading reliability for diversity, linked above, Drew Breunig put it this way:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Labs have to ship a product that delivers “good enough” results when a layperson gives a model a lazy prompt. Without direction, the model must return something decent. (If it’s a website it’ll use the Inter font, cards with a single colored border, gradients, implemented with ReAct and Tailwind). Anthropic named this default output “distribution convergent.” At CAIS, <a href="https://x.com/trq212" target="_blank" rel="noreferrer noopener">@trq212</a> put it well, roughly, “If it’s not in your prompt, you’re getting what’s in-distribution” …. Less diverse models make for more reliable coding agents, but they encourage a monoculture of output.</p>
</blockquote>



<p class="wp-block-paragraph">Addy Osmani, my co-chair of the <a href="https://www.oreilly.com/AI-Codecon/" target="_blank" rel="noreferrer noopener">O’Reilly AI Codecon</a>, took this point beyond model diversity after reading a draft of this piece: “Almost nobody I work with is tinkering with weights, but they’re rewriting the harness and what sits around it pretty constantly—skills, subagents, hooks, context files etc etc. That’s where participation is currently happening.” Addy went on to note that forking a skill instead of adopting the default, memory and constitution files that travel with the agent instead of living in a vendor account, or picking the unfashionable framework on purpose are all areas where ease of modifiability matters to everyone.</p>



<p class="wp-block-paragraph">I want to end by returning to the Apache story. I believe that the big labs are making the same strategic mistake that Netscape and Microsoft made in the mid 90s. Yes, make the models more reliable for ordinary users. But don’t shut down the options for developers who don’t work for you to push the state of the art forward. As Bill Joy put it decades ago, “<a href="https://en.wikipedia.org/wiki/Joy%27s_law_(management)" target="_blank" rel="noreferrer noopener">No matter who you are, most of the smartest people work for someone else</a>.” No one should have a monopoly on innovation, and no one should be building a moat to hold it back.</p>



<p class="wp-block-paragraph"><em>And be sure to join us at </em>AI Codecon: Building with Open Source AI<em> on August 31, a free half-day virtual conference. You’ll hear from leading developers and technical experts working with open-weight models, self-hosted infrastructure, and real-world AI workflows, and learn how building in the open gives teams more control over costs, data privacy, and what they ship. <a href="https://www.oreilly.com/AI-Codecon/" target="_blank" rel="noreferrer noopener">Register today</a> to save your spot.</em></p>
]]></content:encoded>
							<wfw:commentRss>https://www.oreilly.com/radar/why-open-source-matters-for-ai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 98/110 objects using Memcached
Page Caching using Disk: Enhanced (Page is feed) 
Minified using Memcached

Served from: www.oreilly.com @ 2026-08-19 12:30:02 by W3 Total Cache
-->