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

<channel>
	<title>Matt Collins</title>
	<atom:link href="https://www.mattcollins.net/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mattcollins.net</link>
	<description>Building Great Digital Products and Services</description>
	<lastBuildDate>Thu, 02 Apr 2026 13:41:57 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>

<image>
	<url>https://www.mattcollins.net/wp-content/uploads/2022/07/cropped-matt-collins-2022-transparent-512x512-1-1-32x32.png</url>
	<title>Matt Collins</title>
	<link>https://www.mattcollins.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>What to Look For in an AI Agent Orchestration Platform in 2026</title>
		<link>https://www.mattcollins.net/2026/04/what-to-look-for-in-an-ai-agent-orchestration-platform</link>
					<comments>https://www.mattcollins.net/2026/04/what-to-look-for-in-an-ai-agent-orchestration-platform#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 11:26:34 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3603</guid>

					<description><![CDATA[<p>We&#8217;re at an interesting but confusing point in time. AI agents are good enough to be useful but setting them up can be frustratingly hard. And setting them up to be both useful and secure? Good luck with that. I&#8217;ve been trying to figure out how best to set up my own AI agents and [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2026/04/what-to-look-for-in-an-ai-agent-orchestration-platform">What to Look For in an AI Agent Orchestration Platform in 2026</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>We&#8217;re at an interesting but confusing point in time.</p>



<p>AI agents are good enough to be useful but setting them up can be frustratingly hard.</p>



<p>And setting them up to be both useful and secure? Good luck with that.</p>



<p>I&#8217;ve been trying to figure out how best to set up my own AI agents and still haven&#8217;t found an approach that I&#8217;m entirely happy with.</p>



<p>A lot of what you need comes down to what we might call &#8216;agent orchestration&#8217; and &#8216;agent harnesses&#8217; (if we define that a little more broadly than is becoming common now).</p>



<p>The growing jumble of possibilities includes agent harnesses such as <a href="https://openclaw.ai/" title="">OpenClaw</a>, <a href="https://code.claude.com/docs/en/overview" title="">Claude Code</a>, <a href="https://www.anthropic.com/product/claude-cowork" title="">Claude Cowork</a> and <a href="https://hermes-agent.nousresearch.com/" title="">Hermes</a> as well as more orchestration-focussed products such as <a href="https://n8n.io/" title="">n8n</a>, <a href="https://crewai.com/" title="">CrewAI</a>, <a href="https://zapier.com/" title="">Zapier</a> and <a href="https://paperclip.ing/" title="">Paperclip</a>.</p>



<p>Here are some of the aspects I currently see as important in any agent orchestration / harness setup:</p>



<h2 class="wp-block-heading">1. Triggers</h2>



<p>Chat interfaces are great but I don&#8217;t want to have to trigger my agents manually every time I want them to do something. I want the platform to support, at least, the following different triggers:</p>



<ul class="wp-block-list">
<li><strong>Scheduled:</strong> I want some actions to happen on a regular basis, e.g. every day or every week.</li>



<li><strong>On receipt of an inbound event:</strong> e.g. receipt of an email or WhatsApp message (it should ideally be easy to hook up different inbound channels).</li>



<li><strong>Manually</strong>: Sometimes I&#8217;m doing something ad hoc or developing a new agent or workflow. In those cases, I do still want to be able to trigger things manually.</li>
</ul>



<h2 class="wp-block-heading">2. Availability and Responsiveness</h2>



<ul class="wp-block-list">
<li><strong>24&#215;7 availability: </strong>I want the agents to be able to respond to me and/or other triggers 24&#215;7 and to not be reliant on my laptop being on.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Fast responses: </strong>And when I&#8217;m interacting with it (e.g. via a chat interface) I want it to respond quickly.</li>
</ul>



<h2 class="wp-block-heading">3. Cost Effectiveness</h2>



<ul class="wp-block-list">
<li><strong>Low marginal cost per workflow: </strong>The cost overhead of each extra agentic workflow I set up should be little more than the extra tokens it uses.</li>



<li><strong>Subscription-friendly:</strong> Ideally, I should be able to take advantage of the cheap tokens available through subscriptions such as Claude Pro/Max and ChatGPT Plus/Pro.</li>



<li><strong>Cost visibility: </strong>It should be easy for me to see how much I&#8217;m spending.</li>



<li><strong>API cost efficiency:</strong> The platform should use LLM APIs effectively to avoid unnecessary costs. For example:
<ul class="wp-block-list">
<li><strong>Model choice</strong>: It should be possible to use cheaper models where they are good enough for a task.</li>



<li><strong>Cache-friendliness:</strong> It should be possible to take advantage of the cost benefits of caching.</li>



<li><strong>Token efficiency: </strong>The platform should be efficient in the number of tokens it uses for tasks.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">4. Security</h2>



<p>The platform should help in maintaining a reasonable level of security. There are many aspects to this, but some that I think may be particularly important:</p>



<ul class="wp-block-list">
<li><strong>Minimise agents&#8217; access to secrets irrelevant to their task:</strong> Agents shouldn&#8217;t, for example, be able to scan your laptop and dig out important credentials from .env or .zshrc files or use Gmail to read all the emails you&#8217;ve ever sent or received. Ideally, they shouldn&#8217;t have access to any 3rd party credentials at all and should only have access to the specific information they need to perform their tasks well.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Platform security: </strong>It should be easy to keep the platform itself up to date and free from known security issues. For example, I don&#8217;t want to worry that my agent harness is running on a server that hasn&#8217;t had security patches applied for the last year. And it&#8217;s no use keeping important credentials away from agents if the place we&#8217;re keeping them is insecure.</li>
</ul>



<h2 class="wp-block-heading">5. Support for Popular Patterns</h2>



<p>Some patterns have emerged around AI agents that people seem to be finding useful. The platform should provide good support for those patterns.</p>



<p>For example:</p>



<ul class="wp-block-list">
<li>Filesystem/shell use</li>



<li>Skills</li>



<li>MCP</li>



<li>Subagents</li>



<li>Code execution</li>
</ul>



<h2 class="wp-block-heading">6. Flexibility</h2>



<p>The ecosystem of models, libraries, agent harnesses, etc. is messy and evolving very quickly.</p>



<p>The platform should make it easy to try existing things out and flexible enough to work with whatever new things that emerge.</p>



<h2 class="wp-block-heading">7. Configuration Management</h2>



<p>As far as possible I want to be able to easily understand my current setup: how agents are configured (perhaps including important aspects of their &#8216;memories&#8217;), what triggers are in place, etc.</p>



<p>And, ideally, I want good ways to track that configuration over time; perhaps using software-style version control that allows me to see what&#8217;s changed and undo changes that are proving problematic.</p>



<h2 class="wp-block-heading">8. Simplicity</h2>



<p>Ideally, the platform should be simple to use so that I don&#8217;t need to spend a lot of time trying to understand it, troubleshooting it, etc.</p>



<h2 class="wp-block-heading">9. Good Long-Term Outlook</h2>



<p>Whatever platform I use, I want it to have a good chance of being around and well-supported for the long term to minimse the chances I&#8217;ll have the pain of switching over to another platform in six months or a year&#8217;s time.</p>



<h2 class="wp-block-heading">Closing Thoughts</h2>



<p>This list reflects my rough current thoughts on what&#8217;s important in an agent orchestration platform.</p>



<p>I haven&#8217;t tried to be comprehensive with my list. In particular, I haven&#8217;t tried to cover things that I&#8217;m sure would be important in a more corporate context.</p>



<p>That said, I hope these thoughts are helpful to you if you&#8217;re also trying to figure out how to set up your AI agents.</p>



<p>I&#8217;d love to connect with more people working with AI agents. If that&#8217;s you, you can find me on X <a href="https://x.com/mattcollinsuk" title="">here</a>.</p><p>The post <a href="https://www.mattcollins.net/2026/04/what-to-look-for-in-an-ai-agent-orchestration-platform">What to Look For in an AI Agent Orchestration Platform in 2026</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2026/04/what-to-look-for-in-an-ai-agent-orchestration-platform/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>First Impressions of Cloudflare&#8217;s Code Mode for Building AI Agents</title>
		<link>https://www.mattcollins.net/2025/11/first-impressions-of-cloudflares-code-mode</link>
					<comments>https://www.mattcollins.net/2025/11/first-impressions-of-cloudflares-code-mode#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Wed, 19 Nov 2025 00:31:16 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3523</guid>

					<description><![CDATA[<p>Cloudflare&#8217;s &#8216;Code Mode&#8217; got some attention in the AI developer community recently, thanks to a popular blog post about it. It&#8217;s based on the &#8216;CodeACT&#8216; pattern for AI agents which is something I&#8217;ve been interested in for a while now. These are my initial first-hand impressions of using it. What is CodeACT? Most LLM-based AI [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/11/first-impressions-of-cloudflares-code-mode">First Impressions of Cloudflare’s Code Mode for Building AI Agents</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Cloudflare&#8217;s &#8216;Code Mode&#8217; got some attention in the AI developer community recently, thanks to a <a href="https://blog.cloudflare.com/code-mode/" title="">popular blog post</a> about it.</p>



<p>It&#8217;s based on the &#8216;<a href="https://arxiv.org/abs/2408.02193" title="">CodeACT</a>&#8216; pattern for AI agents which is something I&#8217;ve been interested in for a while now.</p>



<p>These are my initial first-hand impressions of using it.</p>



<h2 class="wp-block-heading">What is CodeACT?</h2>



<p>Most LLM-based AI agents work by having an LLM &#8216;call tools&#8217; by generating JSON. In these, the agent harness interprets that JSON and decides what code to run (e.g. calling out to a weather API.)</p>



<p>In CodeACT, the LLM generates code instead of JSON. The agent harness executes that code. The code may involve the equivalent of what the tool calls would have done (e.g. calling out to a weather API.)</p>



<p>Generating code can potentially be more effective than generating JSON for a number of reasons:</p>



<ul class="wp-block-list">
<li><strong>Flexibility:</strong>&nbsp;Code can easily express loops, conditional logic, and the dynamic composition of multiple tools, none of which is possible with JSON.​</li>



<li><strong>Code fluency:</strong>&nbsp;Since there is so much code in LLMs&#8217; training data, they may be better at generating code than generating the equivalent structured JSON.</li>



<li><strong>Task success improvement:</strong>&nbsp;The approach can potentially result in higher success rates than JSON-based approaches.<a href="https://arxiv.org/html/2508.00700v1" target="_blank" rel="noreferrer noopener"></a>​</li>
</ul>



<p>That&#8217;s all quite enticing.</p>



<p>But there are downsides, too:</p>



<ul class="wp-block-list">
<li><strong>Increased security risks</strong>: Executing arbitrary code opens potential attack surfaces and requires stringent safety controls.<a href="https://www.reddit.com/r/MachineLearning/comments/197f416/d_code_vs_json_output_for_llm_agents_frameworks/" target="_blank" rel="noreferrer noopener"></a>​</li>



<li><strong>Greater fragility</strong>: Generated code could crash the agent without straightforward fallback or recovery mechanisms.<a href="https://arxiv.org/html/2402.01030v4" target="_blank" rel="noreferrer noopener"></a>​​</li>



<li><strong>Sandboxing requirements</strong>: Careful containment is needed to avoid infinite loops, resource exhaustion, or unintended system impact.<a href="https://www.alphaxiv.org/overview/2402.01030v4" target="_blank" rel="noreferrer noopener"></a>​​</li>



<li><strong>Challenging debugging and monitoring</strong>: Diagnosing and recovering from code errors can be more complicated than handling misformatted JSON.<a href="https://www.linkedin.com/posts/magentodaemon_disadvantages-of-ai-code-lack-of-context-activity-7371009511102377984-JlQv" target="_blank" rel="noreferrer noopener"></a>​</li>
</ul>



<h2 class="wp-block-heading">Where Does Cloudflare Code Mode Come In?</h2>



<p>Cloudflare&#8217;s Code Mode is a library for building CodeACT-inspired agents on top of Cloudflare&#8217;s Workers platform.</p>



<p>Why is it interesting?</p>



<p>Firstly, it makes it easy to execute code generated by your LLM in a very lightweight sandboxed environment (in this case a Cloudflare Worker).</p>



<p>Secondly, it provides &#8216;bindings&#8217; which let you pass functionality into the sandbox&#8217;s environment in the form of functions that can be called from within the sandbox but that execute outside of it.</p>



<p>This seems like a great fit for executing code that relies on secrets that you don&#8217;t want to expose to the LLM and for restricting what access to outside systems you want the agent to have.</p>



<p>For example, for a customer support agent responding to a ticket from a given customer, you might provide a binding giving read-only access to all support tickets related to that customer. This would allow the agent to fetch useful context without it seeing either (a) credentials for accessing the customer support system as a whole, or (b) tickets related to other customers.</p>



<h2 class="wp-block-heading">Let&#8217;s See Code Mode in Action!</h2>



<p>I set up a simple Code Mode agent using sample code provided by Cloudflare.</p>



<p>If you&#8217;d like to take a look or try it yourself, you can find the code <a href="https://github.com/mattcollins/cloudflare-codemode-example" title="">here</a>.</p>



<p>You can define tools using the <code>tools</code> array, something like this:</p>



<pre class="wp-block-code"><code>import { tool, jsonSchema } from 'ai';

export const tools = {
  getWeather: tool({
    description: 'Returns a silly canned weather string.',
    inputSchema: jsonSchema({
      type: 'object',
      properties: {},
      additionalProperties: false
    }),
    outputSchema: jsonSchema({
      type: 'string'
    }),
    execute: () =&gt; "It's cold. Brrrrrrrr!"
  })
};</code></pre>



<p>To better understand how Code Mode works, let&#8217;s look at what happens when we ask the agent about the weather&#8230;</p>



<figure class="wp-block-image alignwide size-large"><img fetchpriority="high" decoding="async" width="1024" height="517" src="https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-1024x517.png" alt="A sequence diagram showing how Cloudflare Code Mode works" class="wp-image-3530" srcset="https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-1024x517.png 1024w, https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-300x151.png 300w, https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-768x388.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-1536x775.png 1536w, https://www.mattcollins.net/wp-content/uploads/2025/11/cloudflare-codemode-sequence-diagram-2048x1034.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">1. First Iteration of Agent Loop</h3>



<p>The LLM is given the user&#8217;s prompt (in this case, <em>&#8220;how&#8217;s the weather today?&#8221;</em>) and told it has access to a &#8216;codemode&#8217; tool that can return a canned weather string:</p>



<pre class="wp-block-code"><code>{
  "model": "gpt-5-nano",
  "input": &#91;
    {
      "role": "developer",
      "content": "You are a helpful assistant. You have access to the \"codemode\" tool that can do different things:

- Returns a silly canned weather string.

If the user asks to do anything that can be achieved by the codemode tool, then simply pass over control to it by giving it a simple function description. Don't be too verbose."
    },
    {
      "role": "user",
      "content": &#91;
        {
          "type": "input_text",
          "text": "how's the weather today?"
        }
      ]
    }
  ],
  "tools": &#91;
    {
      "type": "function",
      "name": "codemode",
      "description": "codemode: a tool that can generate code to achieve a goal",
      "parameters": {
        "type": "object",
        "properties": {
          "functionDescription": {
            "type": "string"
          }
        },
        "required": &#91;"functionDescription"],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "strict": false
    }
  ],
  "tool_choice": "auto",
  "stream": true
}</code></pre>



<p>The harness parses the response from the first LLM call and finds a call to the <code>'codemode'</code> tool with the argument <code>"Return a silly canned weather string."</code></p>



<p>Note that, so far, this is standard tool-calling agent stuff.</p>



<p>&#8216;Calling the code mode tool&#8217; is where things get interesting.</p>



<h3 class="wp-block-heading">2. Code Generation</h3>



<p>To &#8216;call the code mode tool,&#8217; first we need to generate some code, then we need to execute that code in a suitably sandboxed environment and return a result.</p>



<p>We insert the function description provided by the first LLM into the prompt below.</p>



<p>Note that we tell the LLM about the <code>getWeather</code> function that it can use.</p>



<p>The LLM in this case isn&#8217;t given any tools; it is just asked to generate suitable code:</p>



<pre class="wp-block-code"><code>{
  "model": "gpt-4.1",
  "input": &#91;
    {
      "role": "user",
      "content": &#91;
        {
          "type": "input_text",
          "text": "You are a code generating machine.

<strong>In addition to regular javascript, you can also use the following functions:

interface GetWeatherInput {}
export type GetWeatherOutput = string

declare const codemode: {
/*
Returns a silly canned weather string.
*/
    getWeather: (input: GetWeatherInput) =&gt; Promise&lt;GetWeatherOutput&gt;;
}</strong>

Respond only with the code, nothing else. Output javascript code.

Generate an async function that achieves the goal. This async function doesn't accept any arguments.

Here is user input: <strong>Return a silly canned weather string.</strong>"
        }
      ]
    }
  ],
  "text": {
    "format": {
      "type": "json_schema",
      "strict": false,
      "name": "response",
      "schema": {
        "type": "object",
        "properties": {
          "code": { "type": "string" }
        },
        "required": &#91;"code"],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      }
    }
  }
}</code></pre>



<h3 class="wp-block-heading">3. Sandboxed Code Execution</h3>



<p>The Code Mode harness extracts the code provided by the LLM in its response to the second call above:</p>



<pre class="wp-block-code"><code>async function getSillyWeatherString() {
  const weather = await codemode.getWeather({});
  return weather;
}</code></pre>



<p>It executes it within a Cloudflare Worker.</p>



<p>When it executes <code>codemode.getWeather()</code> it makes use of the binding provided to the Cloudflare Worker. The code defined for the <code>getWeather</code> tool is executed <em>outside</em> of the worker (but still within Cloudflare&#8217;s infrastructure).</p>



<p>The result of <code>"It's cold. Brrrrrrrr!"</code> is passed back into the worker in response and assigned to the &#8216;weather&#8217; variable.</p>



<p>The same value is then returned back to the agent harness (via <code>"return weather;"</code>)</p>



<p>From here on we&#8217;re back to a standard LLM-in-a-loop agent mechanism.</p>



<h3 class="wp-block-heading">4. Second Iteration of Agent Loop</h3>



<p>Having completed the &#8216;tool call&#8217;, the harness now runs a new iteration of the main agent loop.</p>



<p>It calls the LLM much as in the first call, but this time with extra messages representing the tool call from the first LLM response and the result of that tool call:</p>



<pre class="wp-block-code"><code>{
  "model": "gpt-5-nano",
  "input": &#91;
    {
      "role": "developer",
      "content": "You are a helpful assistant. You have access to the \"codemode\" tool that can do different things:

- Returns a silly canned weather string.

If the user asks to do anything that be achievable by the codemode tool, then simply pass over control to it by giving it a simple function description. Don't be too verbose."
    },
    {
      "role": "user",
      "content": &#91;
        {
          "type": "input_text",
          "text": "how's the weather today?"
        }
      ]
    },
    {
      "type": "item_reference",
      "id": "rs_0c6286506bb0ecd000691ca8b6b06881a3a7e6ce44822039e5"
    },
    {
      "type": "item_reference",
      "id": "fc_0c6286506bb0ecd000691ca8b86b5081a39a78381020daee0d"
    },
    <strong>{
      "type": "function_call_output",
      "call_id": "call_mKI1Yw7jLIeyqi4U9jKBZmyc",
      "output": "{\"code\":\"async function getSillyWeatherString() {\\n  const weather = await codemode.getWeather({});\\n  return weather;\\n}\",\"result\":\"It's cold. Brrrrrrrr!\"}"
    }</strong>
  ],
  "tools": &#91;
    {
      "type": "function",
      "name": "codemode",
      "description": "codemode: a tool that can generate code to achieve a goal",
      "parameters": {
        "type": "object",
        "properties": {
          "functionDescription": {
            "type": "string"
          }
        },
        "required": &#91;"functionDescription"],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "strict": false
    }
  ],
  "tool_choice": "auto",
  "stream": true
}</code></pre>



<p>This time, the LLM returns some text (&#8220;It&#8217;s cold. Brrrrrrrr!&#8221;) and no tool calls.</p>



<p>To the harness, this means the agent loop is complete.</p>



<p>The harness duly returns the text to the user.</p>



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



<h4 class="wp-block-heading">Two-Step Code Generation</h4>



<p>It&#8217;s interesting that the harness doesn&#8217;t try to get the first LLM call to generate code; it just tries to get a description of the function, then uses that description in a subsequent LLM prompt to generate code.</p>



<p>I guess this separation slightly simplifies the jobs that the LLMs in each case need to do which may make the overall result more reliable.</p>



<p>On the other hand, this could have a couple of downsides:</p>



<ol class="wp-block-list">
<li>The second LLM only sees the target function description provided by the first LLM rather than the full context of what is desired. I imagine this <em>could</em> result in code that isn&#8217;t quite as suitable.</li>



<li>Making two sequential LLM calls rather than one entails more latency.</li>
</ol>



<p>I would be interested to learn whether Cloudflare considered a one-step approach at all and how other CodeACT-inspired implementations have approached this.</p>



<h4 class="wp-block-heading">Model Choice</h4>



<p>I was a little surprised that the LLM call to generate code used a different model (gpt-4.1) from the one specified in my code and used for the agent loop (gpt-5-nano). That currently seems to be hardcoded into the Code Mode code, but perhaps will be made configurable in the future.</p>



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



<p>I was perhaps equally surprised by the wordings of the LLM prompts that Code Mode uses for the main agent loop and to generate code. They both seem quite vague about what, exactly, they want the LLM to do.</p>



<h2 class="wp-block-heading">Closing Thoughts</h2>



<p>Cloudflare&#8217;s Code Mode seems a very interesting option for running CodeACT-style agents in the cloud, given (i) how lightweight (as I understand it) the V8 isolates are that their workers run within, compared to other providers&#8217; sandbox technologies, (ii) their support for bindings, and (iii) Cloudflare being a large company that can be trusted to be around for a while.</p>



<p>Earlier in the year I tried out Hugging Face&#8217;s <a href="https://huggingface.co/docs/smolagents/index" title="">smolagents</a> library which offers &#8216;CodeAgents&#8217; which are also based on the CodeACT pattern. That&#8217;s a Python-based option that is also worth a look.</p>



<p>Have you tried Code Mode, smolagents or similar offerings from other providers?</p>



<p>If so, I&#8217;d be curious to know how you&#8217;ve got on!</p><p>The post <a href="https://www.mattcollins.net/2025/11/first-impressions-of-cloudflares-code-mode">First Impressions of Cloudflare’s Code Mode for Building AI Agents</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/11/first-impressions-of-cloudflares-code-mode/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI Splurge</title>
		<link>https://www.mattcollins.net/2025/09/ai-splurge</link>
					<comments>https://www.mattcollins.net/2025/09/ai-splurge#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Tue, 30 Sep 2025 15:16:19 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3476</guid>

					<description><![CDATA[<p>Heard of &#8216;AI slop&#8217;? There&#8217;s something else I&#8217;m worried about these days and I&#8217;m calling it &#8220;AI splurge.&#8221; What is AI Splurge? AI splurge is the output of AI coding agents when they get overzealous and create more code than you need. It can take many forms, but here are a few I&#8217;ve seen a [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/09/ai-splurge">AI Splurge</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Heard of &#8216;AI slop&#8217;?</p>



<p>There&#8217;s something else I&#8217;m worried about these days and I&#8217;m calling it &#8220;AI splurge.&#8221;</p>



<h2 class="wp-block-heading">What is AI Splurge?</h2>



<p>AI splurge is the output of AI coding agents when they get overzealous and create more code than you need.</p>



<p>It can take many forms, but here are a few I&#8217;ve seen a lot:</p>



<ul class="wp-block-list">
<li>Unrequested extra options added to a command line tool.</li>



<li>Defensive code to handle cases that should really result in loud errors.</li>



<li>Over-engineered code ready for a future that will likely never arrive.</li>
</ul>



<p>AI splurge needlessly complicates your codebase and makes your system harder to understand and work with (for humans and AI.)</p>



<p>In some ways AI splurge is even worse than outright bugs because it&#8217;s more likely to go unnoticed and, if unaddressed, will build up relentlessly over time into a monster that will be hard to tame.</p>



<h2 class="wp-block-heading">How Can You Avoid AI Splurge?</h2>



<ol class="wp-block-list">
<li><strong>Code Review:</strong> You can try to review all the changes that your AI agent is proposing. Perhaps have an AI reviewer take a look first, with instructions to flag up any unnecessary complexity.</li>
</ol>



<p>2. <strong>Steer Your Agent:</strong> You can also include instructions in your <code>AGENTS.md</code> file or equivalent to steer the agent away from splurging in the first place.</p>



<p>For example:</p>



<p><code>Write the smallest change that solves the stated problem.</code></p>



<p>This won&#8217;t be 100% effective but should help.</p>



<p>3. <strong>Periodic Rewrites:</strong> A more radical approach may be to periodically rewrite your system from scratch. This may sound crazy, but it&#8217;s something that may become increasingly feasible with ideas such as <a href="https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/" title="">spec-driven development</a>.</p>



<h2 class="wp-block-heading">What&#8217;s the Future of AI Splurge?</h2>



<p>Hopefully AI splurge will be a short-lived phenomenon that will fade away as AI agents get more powerful and, presumably, better at keeping systems simple.</p>



<p>I&#8217;m optimistic.</p>



<p>For now, though, beware AI splurge!</p><p>The post <a href="https://www.mattcollins.net/2025/09/ai-splurge">AI Splurge</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/09/ai-splurge/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AI Hallucinations? The Solution Is More AI, Not Less</title>
		<link>https://www.mattcollins.net/2025/02/solving-ai-hallucinations-with-more-ai</link>
					<comments>https://www.mattcollins.net/2025/02/solving-ai-hallucinations-with-more-ai#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 17:30:19 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3335</guid>

					<description><![CDATA[<p>I&#8217;ve heard a few people say that, since generative AI systems can hallucinate, we&#8217;re alway going to have to double-check their work in great detail if we want to be confident it&#8217;s correct. I disagree. Why? Because AI systems can do much of this checking themselves. And, when the cost/benefit tradeoff is right, I believe [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/02/solving-ai-hallucinations-with-more-ai">AI Hallucinations? The Solution Is More AI, Not Less</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve heard a few people say that, since generative AI systems can hallucinate, we&#8217;re alway going to have to double-check their work in great detail if we want to be confident it&#8217;s correct.</p>



<p>I disagree.</p>



<p>Why?</p>



<p><em>Because AI systems can do much of this checking themselves.</em></p>



<p>And, <em>when the cost/benefit tradeoff is right</em>, I believe that&#8217;s <em>exactly</em> what we&#8217;ll get them to do.</p>



<h2 class="wp-block-heading">How Do Humans Check Documents?</h2>



<p>Imagine the kind of checking you might do as a human reviewer if you wanted to check that an article was accurate:</p>



<ol class="wp-block-list">
<li>Where the article cites online sources, you might go and check those sources to make sure any factual claims in the article are backed up by those sources.</li>



<li>Where the article <em>doesn&#8217;t</em> cite sources, you might try to find appropriate sources to corroborate or refute specific claims.</li>



<li>Where the article makes inferences, you might check that those inferences are reasonable.</li>
</ol>



<h2 class="wp-block-heading">AI Can Check Documents, Too!</h2>



<p>It turns out that all these things can be done pretty well with the help of current LLMs and the kind of online content retrieval that tools such as Deep Research are built around. (I recently prototyped <a href="https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker" title="">something along these lines</a> myself, using some <a href="https://www.mattcollins.net/web-search-apis-for-llms" title="The Ultimate Guide to Web Search APIs for LLMs">web search APIs</a>.)</p>



<p>If an LLM hallucinates a claim in the middle of an article it is generating, it&#8217;s entirely possible that that same LLM, <em>if asked to focus specifically on that claim</em> (and provided the same source materials), can identify the claim as problematic.</p>



<h2 class="wp-block-heading">We&#8217;ll Get AI To Check Documents (When It&#8217;s Worth It)</h2>



<p>I don&#8217;t think this kind of mechanism has been built into tools much so far but I suspect it&#8217;s coming.</p>



<p>LLM costs are declining steeply and there are, surely, cases where  documents are important enough to pay extra for increased accuracy.</p>



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



<p>I suspect that, very soon, we&#8217;ll start seeing tools along the lines of Deep Research that (perhaps for a premium price) incorporate AI-powered fact checking in order to provide an extra level of trustworthiness.</p>



<p>So the good news is that, despite what you may have heard, <strong>you <em>won&#8217;t</em> need to carefully check everything your AI tools write for you</strong>.</p><p>The post <a href="https://www.mattcollins.net/2025/02/solving-ai-hallucinations-with-more-ai">AI Hallucinations? The Solution Is More AI, Not Less</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/02/solving-ai-hallucinations-with-more-ai/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Build an AI Fact Checker</title>
		<link>https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker</link>
					<comments>https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker#comments</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 16:31:27 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3336</guid>

					<description><![CDATA[<p>Journalists sometimes get things wrong. Wouldn&#8217;t it be nice if AI could help us spot when they do? I recently prototyped an LLM-powered fact checker (using web search APIs) to see if it could do just that. It looked promising! In case you&#8217;re interested in learning more, I gave a talk to the MLOps London [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker">How to Build an AI Fact Checker</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Journalists sometimes get things wrong.</p>



<p>Wouldn&#8217;t it be nice if AI could help us spot when they do?</p>



<p>I recently prototyped an LLM-powered fact checker (using <a href="https://www.mattcollins.net/web-search-apis-for-llms" title="The Ultimate Guide to Web Search APIs for LLMs">web search APIs</a>) to see if it could do just that.</p>



<p>It looked promising!</p>



<p>In case you&#8217;re interested in learning more, I gave a talk to the MLOps London community about it. Here are <a href="https://docs.google.com/presentation/d/1znkcHAnwSxZmMZiQdx2ChqV3kYOwNmVutu9npdS33p4/edit?usp=sharing" title="">the slides</a>.</p><p>The post <a href="https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker">How to Build an AI Fact Checker</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/02/how-to-build-an-ai-fact-checker/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>How to Use AI in Software Product Development Today</title>
		<link>https://www.mattcollins.net/2025/01/how-to-use-ai-in-software-product-development-today</link>
					<comments>https://www.mattcollins.net/2025/01/how-to-use-ai-in-software-product-development-today#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Fri, 31 Jan 2025 14:16:54 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3256</guid>

					<description><![CDATA[<p>It is now clear: AI is transforming how software is developed. Anyone leading software development teams needs to be keeping a close eye on this to understand the tools&#8217; rapidly evolving capabilities as well as their limitations and risks. Here&#8217;s a snapshot (as of January 2025) of how I think AI tools currently fit into [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/01/how-to-use-ai-in-software-product-development-today">How to Use AI in Software Product Development Today</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>It is now clear: AI is <em>transforming</em> how software is developed.</p>



<p>Anyone leading software development teams needs to be keeping a close eye on this to understand the tools&#8217; rapidly evolving capabilities as well as their limitations and risks.</p>



<p>Here&#8217;s a snapshot (as of January 2025) of how I think AI tools currently fit into software development <em>for teams working on established products and codebases</em>.</p>



<h2 class="wp-block-heading">High Priority</h2>



<h3 class="wp-block-heading">Have a clear company policy on use of AI</h3>



<p>Your team needs to be clear about what they&#8217;re allowed (and not allowed) to do with AI tools.</p>



<p>If your company doesn&#8217;t already have a clear policy around this, then draw one up or push for one.</p>



<p>AI tools can increasingly offer significant productivity boosts (and more) but can carry risks of sending sensitive data to 3rd parties. Company leaders should be clear and intentional about any tradeoffs you&#8217;re making around this.</p>



<h3 class="wp-block-heading">Provide access to AI tools</h3>



<p>If at all possible, have a company-approved way for your team to be able to access a broad range of up-to-date AI services, including:</p>



<ol class="wp-block-list">
<li><strong>APIs to LLMs</strong> (e.g. via OpenAI, AWS, Azure or GCP)</li>



<li><strong>At least one chat interface</strong> (ChatGPT, Google Gemini or similar) [could be a self-hosted wrapper of an LLM API if necessary]</li>



<li><strong>An AI code editor</strong> such as <a href="https://www.cursor.com/" title="">Cursor</a> or <a href="https://github.com/features/copilot" title="">GitHub Copilot</a></li>
</ol>



<p><em>(Some of the remaining points will only be possible if you have the above.)</em></p>



<h3 class="wp-block-heading">Encourage experimentation with AI tools</h3>



<p>Since this is such a rapidly-moving space, probably the most important thing is to encourage your team to be experimenting regularly with how AI can help in your particular context.</p>



<ul class="wp-block-list">
<li><strong>Have a clear policy</strong>
<ul class="wp-block-list">
<li>As mentioned above, make it as easy as possible for people to know what&#8217;s allowed and what&#8217;s not. Be explicit about the most obvious use cases and make it easy for people to get clarity on others.</li>
</ul>
</li>



<li><strong>Eliminate concerns about trivial costs</strong>
<ul class="wp-block-list">
<li>Consider allocating an &#8216;experimentation budget&#8217;.</li>



<li>Consider dedicated &#8216;experimentation&#8217; API keys with capped usage limits.</li>



<li>Encourage people to expense things they&#8217;ve tested themselves.</li>
</ul>
</li>



<li><strong>Champion experimentation</strong>
<ul class="wp-block-list">
<li>Lead by example: share your own experiments with AI tools.</li>



<li>Encourage people to share their own experiments and findings.</li>



<li>Consider including &#8216;sharing learnings from experimentation with AI&#8217; in some or all individuals&#8217; development plans.</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">Lean into AI code editors (Cursor, GitHub Copilot or similar)</h3>



<p>Some developers remain skeptical of these tools (saying they produce low quality code), but others are finding them very useful (particularly with models since Claude 3.5 Sonnet.)</p>



<p>Personally, I think these tools are already very useful and, since they&#8217;re only getting better, it makes sense for developers to be familiar with these tools and to be sharing tips on getting the most from them with your particular codebase(s).</p>



<p>Be mindful of quality, however. These tools can make it faster to generate <em>good</em> code but, for now at least, they can also quickly produce a lot of <em>bad</em> code. So human oversight is needed. And you need to figure out what level of oversight is appropriate in your environment in different situations.</p>



<p>The &#8216;autocomplete&#8217; features of these editors are, I think, a fairly safe way to get a productivity boost if developers are responsible for reading code they generate in this way and you maintain good automated test coverage alongside this.</p>



<p>More &#8216;agentic&#8217; modes of operation where you prompt the AI to go off and make changes to multiple areas of the code can work well in some situations. They need much more care, though, not least because they can easily produce large sets of (potentially low quality) changes. Developing code this way this way entails a very different workflow; one which, as an industry, we&#8217;re only just starting to figure out.</p>



<h3 class="wp-block-heading">Discuss the team&#8217;s use of AI</h3>



<p>Given how quickly the landscape of AI software development tools (and practices for working with them) is evolving, you probably want to be regularly sharing learnings and discussing the tradeoffs of different approaches within your team(s). Hopefully that&#8217;s happening organically. If not, you may want to raise the topic from time to time.</p>



<p>You may want to have an evolving team policy or guidelines around how, as a team, you&#8217;re currently choosing to use AI. (If so, make sure it&#8217;s reviewed and updated every few months, though!)</p>



<h3 class="wp-block-heading">Encourage use of ChatGPT or similar for general productivity</h3>



<p>There&#8217;s a reason why ChatGPT was one of the fastest-growing products of all time &#8211; AI chat interfaces are incredibly useful. Some people will use them a lot; some people may not for now. That&#8217;s okay. You want to get people experimenting with these tools and learning when to reach for them and how best to incorporate them into the non-coding aspects of their work.</p>



<h2 class="wp-block-heading">Medium Priority</h2>



<h3 class="wp-block-heading">Experiment with front-end focussed coding agents</h3>



<p>Tools such as <a href="https://v0.dev/" title="">V0</a> and <a href="https://replit.com/ai" title="Replit Agent">Replit Agent</a> can be useful in some cases for prototyping. For example, a product manager could potentially create quick prototypes of a UI with minimal help from a developer.</p>



<p>Equally, tools like this could be useful in rapidly developing small internal tools (or parts of them) where quality isn&#8217;t critical.</p>



<h3 class="wp-block-heading">Experiment with auxiliary AI tools</h3>



<p>AI tools are rapidly popping up to help with other specific aspects of software development. For example, AI tools that can review code for security issues.</p>



<p>There&#8217;s too much to cover here in detail but I think it&#8217;s worth experimenting with any such tools that look well-aligned with your current priorities.</p>



<h2 class="wp-block-heading">Low Priority</h2>



<h3 class="wp-block-heading">Be aware of end-to-end coding agents</h3>



<p>There are also more ambitious coding agents such as <a href="https://devin.ai/" title="">Devin</a> and <a href="https://docs.all-hands.dev/" title="">OpenHands</a>. These are designed to perform larger tasks, including front-end and back-end, but are fairly unreliable. I would keep an eye on developments here but not be in a rush to do anything with them for now.</p>



<h2 class="wp-block-heading">What Do You Think?</h2>



<p>What have I missed here?</p>



<p>Is there anything you disagree with?</p>



<p>And are there tools or new ways of working that you and your team are finding especially valuable?</p><p>The post <a href="https://www.mattcollins.net/2025/01/how-to-use-ai-in-software-product-development-today">How to Use AI in Software Product Development Today</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/01/how-to-use-ai-in-software-product-development-today/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How AI Helped Me Create a #1 Product Hunt Tool in Hours</title>
		<link>https://www.mattcollins.net/2025/01/how-ai-helped-me-create-a-1-product-hunt-tool-in-hours</link>
					<comments>https://www.mattcollins.net/2025/01/how-ai-helped-me-create-a-1-product-hunt-tool-in-hours#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Thu, 09 Jan 2025 15:41:02 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3190</guid>

					<description><![CDATA[<p>What if AI could help you generate ideas for products and build them? That&#8217;s what happened when I used AI tools to create Flowdrafter—a writing app that solves a common problem for writers. (It even became Product Hunt&#8217;s #1 productivity tool of the week!) Can AI Coding Agents Help with Marketing? My wife is a [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2025/01/how-ai-helped-me-create-a-1-product-hunt-tool-in-hours">How AI Helped Me Create a #1 Product Hunt Tool in Hours</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>What if AI could help you generate ideas for products <em>and </em>build them?</p>



<p>That&#8217;s what happened when I used AI tools to create <a href="https://flowdrafter.pickupyourpen.com/" title="">Flowdrafter</a>—a writing app that solves a common problem for writers. (It even became Product Hunt&#8217;s #1 productivity tool of the week!)</p>



<h2 class="wp-block-heading">Can AI Coding Agents Help with Marketing?</h2>



<p>My wife is a <a href="https://pickupyourpen.com/" title="">writing coach</a> and I’m frequently looking for ways to help her promote her business.</p>



<p>Seeing how easy it has become lately to create small tools using AI coding agents such as <a href="https://v0.dev/" title="">V0</a>, I thought it might be worth experimenting with some tool-based content marketing (i.e. creating free tools as a way to bring relevant people to her site.)</p>



<p>But what tools should I create?</p>



<h2 class="wp-block-heading">AI Product Idea Generation</h2>



<p>I asked <a href="https://claude.ai/" title="">Claude</a> to list common problems writers face.</p>



<p>One of Claude&#8217;s suggestions stood out:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>&#8220;I keep editing as I write, and it&#8217;s taking me forever to make progress. I&#8217;ll spend an entire writing session perfecting one paragraph.&#8221;</em></p>
<cite>&#8212; Claude.ai (pretending to be a writer.)</cite></blockquote>



<p>This seemed like a nice problem to try to tackle!</p>



<p>My memory of the next part of the process is a bit hazy and, going back, I couldn&#8217;t find much in my AI chat records but I believe I looked into Reddit discussions for more context and used ChatGPT to brainstorm app ideas.</p>



<p>At some point, the idea for a writing app that (perhaps weirdly!) <em>disables editing</em> came together.</p>



<p><em>(I and/or ChatGPT may very well have been inspired by an existing tool or Reddit thread. If you&#8217;re aware of such a tool, please let me know as I&#8217;d love to mention it here.)</em></p>



<h2 class="wp-block-heading">Rapid AI Prototyping</h2>



<p>I used <a href="https://v0.dev/" title="">V0</a>, an AI app development tool, to quickly create a prototype. Within minutes, I had something basic but functional. I then used <a href="https://www.cursor.com/" title="">Cursor</a> AI editor to tweak and refine the app further.</p>



<p>Getting it live took a bit longer. I hosted it on <a href="https://vercel.com/" title="">Vercel</a> and set it up on a subdomain of my wife&#8217;s main domain. You can check it out here: <a href="https://flowdrafter.pickupyourpen.com/">https://flowdrafter.pickupyourpen.com/</a>.</p>



<p>In all, it probably took me a total of a few hours to get everything in place.</p>



<h2 class="wp-block-heading">Launching to Unexpected Success</h2>



<p>I launched Flowdrafter on <a href="https://www.producthunt.com/" title="">Product Hunt</a>, not expecting much. I’ve worked on other products for considerably longer that didn’t get much attention there. But to my surprise, Flowdrafter quickly became the most upvoted product of the day!</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="521" src="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-1024x521.png" alt="" class="wp-image-3191" srcset="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-1024x521.png 1024w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-300x153.png 300w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-768x391.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-1536x781.png 1536w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-03-at-12.35.00@2x-2048x1042.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><em>[Update: It ended up getting pipped to the top spot in the closing minutes of the day but still got a very creditable #2 spot and claimed #1 productivity app of the week.]</em></p>



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



<p>If you remember, I got started on this as a way to promote my wife&#8217;s writing coaching service.</p>



<p>How effective was it?</p>



<p>Let&#8217;s take a look.</p>



<p>So far, the tool (which is on a subdomain of her main domain) has accumulated 65 backlinks (mostly as a result of doing well on Product Hunt):</p>



<p><img decoding="async" width="602" height="400" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcVEMTMzHjG0UoiwEzjSLyIJjIHwznKwwVSmULJgKNl9V4ALmbkf84Vi8uDN1EqNx7iSqZZMLbC5K0BHAijddPlnpdf9umZApcv1pNGZx6igr2DwNBtgjBpJ_H9TGMBjhhNjzvA?key=Sb3Mkk6wXubzEOuSK6BwKVhE"></p>



<p>&#8220;So what?&#8221; you may ask.</p>



<p>Before this, my wife&#8217;s site was languishing on around page 4 of the Google search results for her target phrase of &#8220;writing coach&#8221;.</p>



<p>Now? It&#8217;s in the middle of the first page. <em>Much</em> better!:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="616" height="1024" src="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-616x1024.png" alt="" class="wp-image-3208" srcset="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-616x1024.png 616w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-180x300.png 180w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-768x1277.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-924x1536.png 924w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.13.30@2x-1232x2048.png 1232w" sizes="(max-width: 616px) 100vw, 616px" /></figure>



<p>As well as winning Product Hunt&#8217;s #1 Productivity App of the week, Flowdrafter was featured in <a href="https://www.theneurondaily.com/p/new-year-new-ai" title="">The Neuron</a> (an email newsletter going to 500k+ subscribers) as one of its &#8216;Treats To Try&#8217;).</p>



<p>It&#8217;s more incidental, but my <a href="https://www.reddit.com/r/ClaudeAI/comments/1hsxv7u/claude_gave_me_the_idea_for_a_product_and_helped/" title="">Reddit write-up about the experience</a> has received 162K views so far:</p>



<p><img decoding="async" width="602" height="1309" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf83KvhLLp3LKzfRGYk6HdBFrYPfgcWG2M2w3yv0Snx1R8FYmJwRPd0w1IJUk5RVRecwpXQucShzxtOrzVGMPT9Kk2Rbsh1uGnL8X0Bsf37GhQxkK3znDx1siFooNhHXumqQjXG?key=Sb3Mkk6wXubzEOuSK6BwKVhE"></p>



<p>This led to it being picked up on X (by Deedy Das of Menlo Ventures):</p>



<figure class="wp-block-image size-large"><a href="https://x.com/deedydas/status/1875634525763731768"><img decoding="async" width="986" height="1024" src="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.29.12@2x-986x1024.png" alt="" class="wp-image-3224" srcset="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.29.12@2x-986x1024.png 986w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.29.12@2x-289x300.png 289w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.29.12@2x-768x797.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.29.12@2x.png 1202w" sizes="(max-width: 986px) 100vw, 986px" /></a></figure>



<p>And on LinkedIn (by Kieran Flanagan of Hubspot):</p>



<figure class="wp-block-image size-large"><a href="https://www.linkedin.com/posts/kieranjflanagan_claude-helped-to-develop-the-number-one-app-activity-7282032453794336768-Rafx?utm_source=share&amp;utm_medium=member_desktop"><img decoding="async" width="854" height="1024" src="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.27.28@2x-854x1024.png" alt="" class="wp-image-3223" srcset="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.27.28@2x-854x1024.png 854w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.27.28@2x-250x300.png 250w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.27.28@2x-768x920.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-17.27.28@2x.png 1058w" sizes="(max-width: 854px) 100vw, 854px" /></a></figure>



<p>And, as of 9th January 2025, it&#8217;s <em>still</em> pinned to the top of the ClaudeAI subreddit as a community highlight (featuring my wife&#8217;s face, which she and I find rather amusing!):</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="549" src="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-1024x549.png" alt="" class="wp-image-3209" srcset="https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-1024x549.png 1024w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-300x161.png 300w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-768x412.png 768w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-1536x824.png 1536w, https://www.mattcollins.net/wp-content/uploads/2025/01/CleanShot-2025-01-09-at-15.35.03@2x-2048x1098.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<h2 class="wp-block-heading">What Made This Work?</h2>



<ol class="wp-block-list">
<li><strong>Flowdrafter Addressed a Real Problem:</strong> Claude correctly identified spending too much time editing as a common problem.</li>



<li><strong>It Was Simple:</strong> The concept of the app was simple, making it easy to understand.</li>



<li><strong>It Was Quirky: </strong>The fact that the app helped address the problem by <em>restricting</em> what users can do probably seemed quite surprising and that seemed to appeal to people.</li>



<li><strong>AI Made it Easy to Try:</strong> Critically, tools like V0 and Cursor let me build and launch the app quickly. In the past it would have taken me much longer and, consequently, <em>I almost certainly wouldn&#8217;t have done it at all.</em></li>
</ol>



<h2 class="wp-block-heading">Lessons Learned</h2>



<ul class="wp-block-list">
<li><strong>AI Coding Agents Can be Great for MVPs:</strong> AI tools such as <a href="https://v0.dev/" title="">V0</a> can do a lot of the work in creating simple front-end apps such as this. (And they&#8217;re only going to get better!)</li>



<li><strong>AI Is a Great Creative Partner:</strong> As well as being great for coding, AI can help with product ideas too.</li>
</ul>



<h2 class="wp-block-heading">What’s Next?</h2>



<p>It&#8217;s been fun to see the unexpected interest in Flowdrafter on Product Hunt but people liking the concept is not the same as them using it on a regular basis. I wasn&#8217;t planning to develop it further, but its popularity means I&#8217;ll be thinking a bit more about that now.</p>



<p>In any case, if you haven&#8217;t tried AI coding agents like V0 yet, I highly recommend doing so. They&#8217;re going to be getting more and more powerful and I&#8217;ll certainly be continuing to experiment to see what they can do!</p><p>The post <a href="https://www.mattcollins.net/2025/01/how-ai-helped-me-create-a-1-product-hunt-tool-in-hours">How AI Helped Me Create a #1 Product Hunt Tool in Hours</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2025/01/how-ai-helped-me-create-a-1-product-hunt-tool-in-hours/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FastHTML: The Perfect Framework for Simple AI-Powered Web Apps?</title>
		<link>https://www.mattcollins.net/2024/09/fasthtml-the-perfect-framework-for-simple-ai-powered-web-apps</link>
					<comments>https://www.mattcollins.net/2024/09/fasthtml-the-perfect-framework-for-simple-ai-powered-web-apps#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Fri, 20 Sep 2024 14:44:41 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3116</guid>

					<description><![CDATA[<p>I heard about FastHTML a few months back and was immediately intrigued by its pitch: &#8220;Modern web applications in pure Python Built on solid web foundations, not the latest fads &#8211; with FastHTML you can get started on anything from simple dashboards to scalable web applications in minutes.&#8221; https://www.fastht.ml/ This sounded like something I could [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2024/09/fasthtml-the-perfect-framework-for-simple-ai-powered-web-apps">FastHTML: The Perfect Framework for Simple AI-Powered Web Apps?</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I heard about <a href="https://www.fastht.ml/" title="">FastHTML</a> a few months back and was immediately intrigued by its pitch:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Modern web applications in pure Python</p>



<p>Built on solid web foundations, not the latest fads &#8211; with FastHTML you can get started on anything from simple dashboards to scalable web applications in minutes.&#8221;</p>
<cite>https://www.fastht.ml/</cite></blockquote>



<p>This sounded like something I could use!</p>



<p>But I&#8217;m wary of new frameworks. Few of them become popular enough long-term to really be worth your time. Was this just another one that people might get excited about, but that would ultimately fade away?</p>



<p>I&#8217;ve been using <a href="https://www.djangoproject.com/" title="">Django</a> as my go-to platform for building LLM-based applications for a while now and it&#8217;s amazing (I&#8217;m a fan of Ruby on Rails, too, but switched to Python for AI-centric projects.) With so many people using it, you can be confident of finding built-in support or 3rd-party libraries and documentation for any common task.</p>



<p>But Django also feels quite cumbersome for small applications. A more lightweight option with a simple way to achieve some basic front-end effects could be a handy tool to have available.</p>



<p>I was keen to give this new framework a go.</p>



<p>Well &#8211; I&#8217;ve finally had a chance to do that. Here are some quick notes on how I found it.</p>



<h2 class="wp-block-heading">Getting Started</h2>



<p>Possibly the best thing about FastHTML is how easy it is to get started. It really is very straightforward to follow their instructions and get something up and running locally. It probably took me a few minutes. And as it hooks into <a href="https://htmx.org/" title="">HTMX</a> out of the box, you can set up some handy and effective frontend UI effects very easily.</p>



<h2 class="wp-block-heading">Building an MVP</h2>



<p>This was a very simple app without any authentication or a relational database to interact with, so there were lots of common web app tasks that I didn&#8217;t have to go through.</p>



<p>I just needed to show a page with a simple form, respond to form submissions, do some back-end processing, and call out to some other services &#8211; nothing too challenging. FastHTML handled the web UI aspects perfectly in exactly the lightweight way I&#8217;d hoped.</p>



<h2 class="wp-block-heading">Getting Ready for Production</h2>



<p>Moving to production, things mostly went smoothly but I did hit one limitation with FastHTML. I was using TailwindCSS for styling and using Tailwind to generate streamlined versions of my main CSS file with just the styles I needed. Doing this reduced the page load size by 330 kB which wasn&#8217;t too critical in this case but turned out to be an interesting experiment in any case. Anyhow, this meant the CSS file was frequently being updated as I tweaked styling.</p>



<p>In production, browsers would cache an old version of the CSS file and end up with incorrect styling. This is a well-known problem and frameworks such as Rails and Django have out-of-the-box solutions to address it. At the moment, FastHTML doesn&#8217;t seem to. It&#8217;s not a major issue, but an example of the kind of hassle that you can largely avoid with more mature frameworks.</p>



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



<p>Deploying my FastHTML app was fairly straightforward though did require a bit of figuring out on my part. I got my app running on a <a href="https://www.digitalocean.com/products/app-platform" title="">Digital Ocean&#8217;s App Platform</a> after a bit of research into their &#8216;<a href="https://docs.digitalocean.com/products/app-platform/reference/app-spec/" title="">app specs</a>&#8216; and making appropriate tweaks. If the FastHTML framework continues to gain in popularity, I expect hosting companies will make framework-specific tweaks and provide documentation that will make the process even more streamlined.</p>



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



<p>If you&#8217;re familiar with Python and wanting to build a fairly simple <a href="https://learnprompting.org/blog/2024/2/4/gpt_wrappers" title="">&#8216;GPT wrapper&#8217;</a> kind of web app, then I highly recommend taking a look at FastHTML. It&#8217;s great for creating MVPs of that kind of thing.</p>



<p>If you&#8217;re looking to build something a bit more complicated, then I&#8217;d be wary for now &#8211; you might like to wait a bit for the framework and the ecosystem around it to mature as I suspect you&#8217;ll hit limitations somewhere or another.</p>



<p>All in all, though, FastHTML is looking very promising. I think the philosophy behind it makes a lot of sense and, judging by the activity around it already, it seems like plenty of other people feel likewise. Congratulations to <a href="https://x.com/jeremyphoward" title="">Jeremy Howard</a> (the main person behind it) and everyone else who&#8217;s contributed to it so far!</p>



<p>P.S. In case you&#8217;d like to see the little app I created, <a href="https://namecarrot.com/" title="">here it is</a>!</p><p>The post <a href="https://www.mattcollins.net/2024/09/fasthtml-the-perfect-framework-for-simple-ai-powered-web-apps">FastHTML: The Perfect Framework for Simple AI-Powered Web Apps?</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2024/09/fasthtml-the-perfect-framework-for-simple-ai-powered-web-apps/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 Ways to Make an Agentic AI System More Reliable</title>
		<link>https://www.mattcollins.net/2024/04/how-to-make-an-agentic-ai-system-more-reliable</link>
					<comments>https://www.mattcollins.net/2024/04/how-to-make-an-agentic-ai-system-more-reliable#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 10:13:15 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=3015</guid>

					<description><![CDATA[<p>Lots of people are starting to explore what can be done with agent-based AI systems. It feels like there&#8217;s huge potential in them. But getting an agentic system to work reliably enough to use in practice often turns out to be very hard. Here are a few techniques that can help with reliability. Technique 1: [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2024/04/how-to-make-an-agentic-ai-system-more-reliable">5 Ways to Make an Agentic AI System More Reliable</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Lots of people are starting to explore what can be done with agent-based AI systems. It feels like there&#8217;s huge potential in them. But getting an agentic system to work reliably enough to use in practice often turns out to be very hard.</p>



<p>Here are a few techniques that can help with reliability.</p>



<h2 class="wp-block-heading">Technique 1: Optimise The Agent&#8217;s Tools</h2>



<p>The performance of agents depends heavily on the tools they have available. Give them better tools (or improve the ones they&#8217;ve got) and, naturally, they&#8217;re likely to perform better.</p>



<p>For example:</p>



<ul class="wp-block-list">
<li>If your agent is doing online research, instead of giving it access to a generic search result API, give it access to one designed specifically for LLMs (e.g. one of the ones described <a href="https://www.mattcollins.net/web-search-apis-for-llms" title="The Ultimate Guide to Web Search APIs for LLMs">here</a>.)</li>



<li>If your agent only needs certain fields returned by an API, filter the other fields out.</li>
</ul>



<h2 class="wp-block-heading">Technique 2: Add a Retry Mechanism</h2>



<p>Let&#8217;s suppose that, 20% of the time, your agent produces a result that can, in an automated way, be identified as poor. If latency isn&#8217;t a concern, you can check each result and ask the agent to try again if necessary. (You may need to give the agent some information about its previous attempts so that it can avoid repeating itself.) You can quickly significantly increase the reliability of the overall system.</p>



<h2 class="wp-block-heading">Technique 3: Generate Extra Responses and Pick the Best</h2>



<p>If your system involves generating a set of N items but some of those items can be weak, consider generating slightly more than N items, automatically scoring them, then picking and using the highest-scoring N.</p>



<h2 class="wp-block-heading">Technique 4: Eliminate the Agent</h2>



<p>AI agents are appealing precisely because they can figure things out in an iterative, exploratory way. But the flipside of that open-endedness is that they can be very unreliable. You probably don&#8217;t want to hear this, but your best bet for now may actually be to eliminate your agent if possible.</p>



<p>How?</p>



<p>It depends on your situation but, if you&#8217;re asking an agent to complete a particular sort of task, try thinking through the steps of how you&#8217;d complete that task yourself. See if you can find a <em>fixed</em> sequence of steps that will do the job in the vast majority of cases and that you can automate (using LLMs if appropriate).</p>



<h2 class="wp-block-heading">Technique 5: Avoid the Agent in Certain (Important) Cases</h2>



<p>Sometimes eliminating your agent entirely isn&#8217;t possible (but it&#8217;s worth thinking hard about it.) Even in these situations, you may have some important cases that <em>can</em> be handled using a fixed sequence of steps that is more reliable than the agent would be. You may be able to classify incoming requests and route them to either your (relatively reliable) fixed sequence of steps or to your (relatively unreliable) agent. The overall reliability of your system can be improved as a result.</p>



<h2 class="wp-block-heading">Final Words</h2>



<p>Agent-based AI systems have a lot of promise but can be very unreliable and pose challenges that can be unfamiliar if you&#8217;re used to more traditional, deterministic software development. Dealing with that unreliability often becomes a key challenge and a focus of your engineering.</p>



<p>I hope the techniques I&#8217;ve outlined here give you some useful ideas and help you a little on your journey.</p>



<p>Let me know what other techniques you&#8217;re finding useful when developing AI-based software systems.</p><p>The post <a href="https://www.mattcollins.net/2024/04/how-to-make-an-agentic-ai-system-more-reliable">5 Ways to Make an Agentic AI System More Reliable</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2024/04/how-to-make-an-agentic-ai-system-more-reliable/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What the 2023 Hollywood Writers&#8217; Agreement Says About the Use of AI in Screenwriting</title>
		<link>https://www.mattcollins.net/2023/09/what-the-2023-hollywood-writers-agreement-says-about-the-use-of-ai-in-screenwriting</link>
					<comments>https://www.mattcollins.net/2023/09/what-the-2023-hollywood-writers-agreement-says-about-the-use-of-ai-in-screenwriting#respond</comments>
		
		<dc:creator><![CDATA[Matt Collins]]></dc:creator>
		<pubDate>Wed, 27 Sep 2023 07:52:05 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.mattcollins.net/?p=2984</guid>

					<description><![CDATA[<p>As of 27th September 2023, the Writers&#8217; Guild of America (WGA) has ended its strike with the big studios, having reached a tentative agreement with the big studios that will now be voted on by the WGA&#8217;s members. The deal has some key terms about AI and could be a sign of what will be [&#8230;]</p>
<p>The post <a href="https://www.mattcollins.net/2023/09/what-the-2023-hollywood-writers-agreement-says-about-the-use-of-ai-in-screenwriting">What the 2023 Hollywood Writers’ Agreement Says About the Use of AI in Screenwriting</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>As of 27th September 2023, the Writers&#8217; Guild of America (WGA) has ended its strike with the big studios, having reached a tentative agreement with the big studios that will now be voted on by the WGA&#8217;s members.</p>



<p>The deal has some key terms about AI and could be a sign of what will be agreed with actors who are also currently on strike.</p>



<p>Here&#8217;s how the WGA summarises the AI-related terms:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>5.&nbsp;Artificial Intelligence</p>



<p>We have established regulations for the use of artificial intelligence (“AI”) on MBA-covered projects in the following ways:</p>



<ul class="wp-block-list">
<li>AI can’t write or rewrite literary material, and AI-generated material will not be considered source material under the MBA, meaning that AI-generated material can’t be used to undermine a writer’s credit or separated rights.&nbsp;</li>



<li>A writer can choose to use AI when performing writing services, if the company consents and provided that the writer follows applicable company policies, but the company can’t require the writer to use AI software (e.g., ChatGPT) when performing writing services.&nbsp;</li>



<li>The Company must disclose to the writer if any materials given to the writer have been generated by AI or incorporate AI-generated material.</li>



<li>The WGA reserves the right to assert that exploitation of writers’ material to train AI is prohibited by MBA or other law.</li>
</ul>
<cite>https://www.wgacontract2023.org/the-campaign/summary-of-the-2023-wga-mba</cite></blockquote>



<p>And here&#8217;s the full text of the relevant clauses from the tentative agreement:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>ARTICLE 72 GENERATIVE ARTIFICIAL INTELLIGENCE</p>



<p>A. The parties acknowledge that definitions of generative artificial intelligence<br>(‘GAI’) vary, but agree that the term generally refers to a subset of artificial<br>intelligence that learns patterns from data and produces content, including written<br>material, based on those patterns, and may employ algorithmic methods (e.g.,<br>ChatGPT, Llama, MidJourney, Dall-E). It does not include ‘traditional AI’<br>technologies such as those used in CGI and VFX and those programmed to<br>perform operational and analytical functions.</p>



<p>B. The Companies agree that because neither traditional AI nor GAI is a person,<br>neither is a ‘writer’ or ‘professional writer’ as defined in Articles 1.B.1.a.,<br>1.B.1.b., 1.C.1.a. and 1.C.1.b. of this MBA, and, therefore, written material<br>produced by traditional AI or GAI shall not be considered literary material under<br>this or any prior MBA.</p>



<p>C. Should a Company furnish a writer with written material produced by GAI which<br>has not been previously published or exploited, and instruct the writer to use the<br>GAI-produced material as the basis for writing literary material:</p>



<p>1. The Company shall disclose to that writer that the written material was<br>produced by GAI.</p>



<p>2. The GAI-produced written material shall not be considered assigned<br>material for purposes of determining the writer’s compensation.</p>



<p>3. The GAI-produced written material shall not be considered source material<br>for purposes of determining writing credit.</p>



<p>4. The GAI-produced written material shall not be the basis for disqualifying<br>a writer from eligibility for separated rights.</p>



<p>This subparagraph C. also applies when a writer, with the consent of the<br>Company, uses GAI in the course of preparing literary material. Company agrees<br>that it will not publish or exploit GAI written material for the purposes of evading<br>this provision.</p>



<p>When a writer, with the consent of the Company, uses GAI in the course of<br>preparing written material or incorporates GAI-produced material in written<br>material, such written material shall be considered literary material and not<br>material ‘produced’ by GAI.</p>



<p>The following examples illustrate application of this subparagraph C.:</p>



<p>EXAMPLE 1:</p>



<p>Company furnishes Writer A with written material substantially in the<br>form of a screenplay produced by GAI which has not been previously<br>published or exploited and assigns no other materials. Company instructs<br>Writer A to rewrite the GAI-produced written material. Company must<br>pay Writer A no less than the minimum compensation for a screenplay<br>under Article 13.A.1.a.(2), as well as no less than the amount specified in<br>Article 13.A.1.a.(9), ‘Additional Compensation Screenplay – No Assigned<br>Material.’ The GAI-produced written material is not considered source<br>material when determining writing credit to Writer A and will not<br>disqualify Writer A from eligibility for separated rights.</p>



<p>Company later assigns the screenplay rewritten by Writer A to Writer B<br>and instructs Writer B to rewrite the screenplay rewritten by Writer A.<br>Company must pay Writer B no less than the minimum compensation for a<br>rewrite under Article 13.A.1.a.(3). Writer A’s rewritten screenplay must be<br>considered when determining writing credit to Writer B and eligibility for<br>separated rights.</p>



<p>EXAMPLE 2:</p>



<p>Company furnishes Writer A with written material substantially in the<br>form of a story produced by GAI which has not been previously published<br>or exploited and assigns no other materials. Company instructs Writer A to<br>write a teleplay based on the GAI-produced written material. Company<br>must pay Writer A no less than the minimum compensation for a story and<br>teleplay. The GAI-produced story is not considered source material when<br>determining writing credit to Writer A and will not disqualify Writer A<br>from eligibility for separated rights.</p>



<p>Company later assigns the teleplay written by Writer A to Writer B and<br>instructs Writer B to rewrite the teleplay written by Writer A. Company<br>must pay Writer B no less than the minimum compensation for a rewrite.<br>Writer A’s teleplay must be considered when determining writing credit to<br>Writer B and eligibility for separated rights.</p>



<p>D. A writer will be required to adhere to the Company’s policies regarding the use of<br>GAI (e.g., policies related to ethics, privacy, security, copyrightability or other<br>protection of intellectual property rights). Any purchase of literary material from<br>a professional writer is also subject to such policies. A writer must obtain the<br>Company’s consent before using GAI. The Company retains the right to reject the<br>use of GAI, including the right to reject a use of GAI that could adversely affect<br>the copyrightability or exploitation of the work.</p>



<p>E. A Company may not require, as a condition of employment, that a writer use a<br>GAI program which generates written material that would otherwise be ‘literary<br>material’ (as defined in Article 1.A.5.) if written by a writer (as defined in Article<br>1.B.1.a. and Article 1.C.1.a.) (e.g., a Company may not require a writer to use<br>ChatGPT to write literary material). The preceding sentence does not prohibit a<br>Company from requiring a writer to use a GAI program that does not generate<br>written material, such as a GAI program that detects potential copyright<br>infringement or plagiarism.</p>



<p>F. The parties acknowledge that the legal landscape around the use of GAI is<br>uncertain and rapidly developing and each party is reserving all rights relating<br>thereto unless otherwise expressly addressed in this Article 72. For example,<br>nothing in this Article 72 restricts any writer who has retained reserved rights<br>under Article 16.B., or the WGA on behalf of any such writer, from asserting that<br>the exploitation of their literary material to train, inform, or in any other way<br>develop GAI software or systems, is within such rights and is not otherwise<br>permitted under applicable law.</p>



<p>G. Each Company agrees to meet with the Guild during the term of this Agreement at<br>least semi-annually at the request of the Guild and subject to appropriate<br>confidentiality agreements to discuss and review information related to the<br>Company’s use and intended use of GAI in motion picture development and<br>production. The foregoing provision shall not be construed to waive any right of<br>the Guild under the National Labor Relations Act, including but not limited to the<br>right to seek information necessary and relevant to the administration and enforcement of this Article 72.</p>
<cite>https://www.wgacontract2023.org/wgacontract/files/memorandum-of-agreement-for-the-2023-wga-theatrical-and-television-basic-agreement.pdf</cite></blockquote><p>The post <a href="https://www.mattcollins.net/2023/09/what-the-2023-hollywood-writers-agreement-says-about-the-use-of-ai-in-screenwriting">What the 2023 Hollywood Writers’ Agreement Says About the Use of AI in Screenwriting</a> first appeared on <a href="https://www.mattcollins.net">Matt Collins</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.mattcollins.net/2023/09/what-the-2023-hollywood-writers-agreement-says-about-the-use-of-ai-in-screenwriting/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
