<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Conor Svensson</title><description>Technical founder building agentic infrastructure and tooling for the decentralised web.</description><link>https://conorsvensson.com/</link><item><title>How agents are making software provably secure</title><link>https://conorsvensson.com/writing/how-agents-are-making-software-provably-secure/</link><guid isPermaLink="true">https://conorsvensson.com/writing/how-agents-are-making-software-provably-secure/</guid><description>Agentic development is fuelling a resurgence in formal verification, enabling engineers to go beyond simply testing, to mathematically prove the robustness of software.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Software engineering in the traditional sense may be dead, but coding agents have created opportunities to bring rigour to software that was previously a pipe dream of engineers.&lt;/p&gt;
&lt;p&gt;Agentic development has not only sped up traditional software development, providing engineering productivity gains of 20% to 50% depending on who you listen to, but also made development possible using techniques such as formal verification that historically were considered too slow or expensive to apply to a more mainstream engineering setting.&lt;/p&gt;
&lt;p&gt;Formal verification extends far beyond traditional testing practices such as unit, integration, end-to-end and performance testing and instead achieves the holy grail of demonstrating robustness of software — that it is provably correct against a specification from a mathematical perspective.&lt;/p&gt;
&lt;p&gt;Formal verification software has existed since the 1970s, and alongside functional programming, has remained a niche of software engineering, with many advocates of it due to the safety guarantees they provide. But adoption has been limited due to the steeper learning curves required for functional programming alongside the theoretical maths required for formal verification.&lt;/p&gt;
&lt;p&gt;Developing applications with pure functional languages is very robust, but time consuming compared with the imperative approach favoured by most programmers.&lt;/p&gt;
&lt;p&gt;Verifying code with formal methods adds another layer on top of this, making it a significant undertaking if used for non-mission critical infrastructure.&lt;/p&gt;
&lt;p&gt;These barriers are now being challenged by LLMs. With the advent of agents taking on significant swaths of coding tasks, this doesn’t only apply to writing code, but testing and even proving it. Agents can now generate proofs to demonstrate the robustness of the code they are delivering.&lt;/p&gt;
&lt;p&gt;This enables developers to see proof that code behaves as expected, which is far more significant than referring to generating tests or taking an agent’s word for it.&lt;/p&gt;
&lt;p&gt;It’s also gaining traction in Web3, where there’s been hundreds of millions of dollars lost due to bugs in smart contract based applications. Pairing formal verification with smart contracts provides a level of resilience beyond what code audits alone can catch.&lt;/p&gt;
&lt;h2 id=&quot;getting-lean&quot;&gt;Getting Lean&lt;/h2&gt;
&lt;p&gt;There are a number of different software tools that can be used to assist with formal verification. Historically they were stand-alone tools for verification tasks, however, this has changed in recent years with the advent of &lt;a href=&quot;https://lean-lang.org/&quot;&gt;Lean&lt;/a&gt;. Lean is both a proof assistant and functional programming language that has seen it gaining significant traction among mathematicians, researchers and developers.&lt;/p&gt;
&lt;p&gt;Fields medalist Terence Tao, DeepMind and OpenAI are just some of the people and organisations embracing Lean to accelerate the field of maths which speaks to its influence.&lt;/p&gt;
&lt;p&gt;To provide a simple example of the power of formal verification, imagine we have a function that transfers an amount of tokens from Alice to Bob. These can be defined in Lean as follows:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;lean&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; transfer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; (alice bob amount : Nat) : Nat × Nat :=&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; amount ≤ alice &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    (alice - amount, bob + amount)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;  else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    (alice, bob)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Normally tests for this code would be a series of statements verifying transfers are performed correctly.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;lean&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;#eval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; transfer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 25&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;-- (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;75&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;125&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;#eval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt; transfer &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt; 1000&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  -- invalid quantity provided&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;-- (&lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, instead of getting tests to be crafted, we could formally verify our function, to provide a guarantee that the total number of tokens held by Alice and Bob will never change following application of this function.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;lean&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;theorem&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt; transfer_preserves_supply&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    (alice bob amount : Nat) :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    (transfer alice bob amount).fst +&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    (transfer alice bob amount).snd =&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    alice + bob := &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;by&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  by_cases h : amount ≤ alice&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  · simp [transfer, h]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;    omega&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#24292E;--shiki-dark:#E1E4E8&quot;&gt;  · simp [transfer, h]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The proof is more complex to write than a test, but provides far stronger guarantees about the code, which is why getting agents to assist is valuable.&lt;/p&gt;
&lt;p&gt;It’s important to keep in mind that this is a simple example to convey the essence of formal verification, but in reality these proofs are far more complex.&lt;/p&gt;
&lt;h2 id=&quot;securing-ethereum&quot;&gt;Securing Ethereum&lt;/h2&gt;
&lt;p&gt;Recognising the power of formal verification, Vitalik Buterin, creator of the Ethereum blockchain recently &lt;a href=&quot;https://vitalik.eth.limo/general/2026/05/18/fv.html&quot;&gt;wrote about it on his personal blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are a number of other initiatives happening in the Ethereum ecosystem using formal verification. Recently the &lt;a href=&quot;https://veritylang.com/&quot;&gt;Verity&lt;/a&gt; language emerged for writing smart contracts in Lean alongside a developer toolchain for it, &lt;a href=&quot;https://tama.tools/&quot;&gt;Tama&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://verifereum.org/&quot;&gt;Verifereum&lt;/a&gt; project is developing formal semantics of the Ethereum Virtual Machine (EVM) using the HOL4 theorem prover. The Vyper smart contract language is doing something similar with &lt;a href=&quot;https://github.com/verifereum/vyper-hol&quot;&gt;Vyper-HOL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There’s even a &lt;a href=&quot;https://github.com/Verified-zkEVM/evm-asm&quot;&gt;prototype version of a zero-knowledge zkEVM&lt;/a&gt; being developed in Lean.&lt;/p&gt;
&lt;h2 id=&quot;formal-verification-elsewhere&quot;&gt;Formal verification elsewhere&lt;/h2&gt;
&lt;p&gt;Outside of Ethereum and web3, Jane Street are &lt;a href=&quot;https://blog.janestreet.com/formal-methods-at-jane-street-index/?from_theconsensus=1&quot;&gt;building a team to focus on formal methods&lt;/a&gt; as agents have made it financially feasible for them to do so.&lt;/p&gt;
&lt;p&gt;There’s also a number of new AI companies focussed on improving mathematical infrastructure for AI, including &lt;a href=&quot;https://axiommath.ai/&quot;&gt;Axiom&lt;/a&gt; and &lt;a href=&quot;https://www.logosresearch.ai/&quot;&gt;Logos Research&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With the explosion of coding agents, AI research and the need for more secure software, formal methods are having a resurgence which is unlikely to be short-lived.&lt;/p&gt;
&lt;p&gt;The barriers to utilising them have dropped significantly, and as organisations become more dependent on agentic workflows, having confidence in the quality, reliability and safety of these systems will become ever more important.&lt;/p&gt;
&lt;p&gt;However, in a similar vein to how coding agents don’t alleviate the need for programmers who still need to oversee their work, formally verified code is only as good as the specifications it’s being verified against. You still need experts who can verify the quality of the outputs.&lt;/p&gt;
&lt;p&gt;We may be entering a new era of software engineering with formal verification being embraced. But without the right expertise onboard to monitor the quality of its work, you can still end up with slop, even if it has been formally verified.&lt;/p&gt;</content:encoded></item><item><title>From private chats to shared agents</title><link>https://conorsvensson.com/writing/from-private-chats-to-shared-agents/</link><guid isPermaLink="true">https://conorsvensson.com/writing/from-private-chats-to-shared-agents/</guid><description>Shared agents are changing how teams work with LLMs. But running them yourself can be a significant undertaking with security implications.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Until this year, my time talking with LLMs had been via messages in ChatGPT or Claude. I’d used them for coding, but the results hadn’t been great.&lt;/p&gt;
&lt;p&gt;I remember asking ChatGPT last year to scaffold code for an Ethereum Name Service CLI in Rust and the results were terrible — the code wouldn’t compile, poor dependencies were selected and I didn’t fancy throwing hours away getting it to work.&lt;/p&gt;
&lt;p&gt;This changed with the new models that emerged at the tail end of 2025, which could write code reliably that would work.&lt;/p&gt;
&lt;p&gt;However, throughout my own multi-year period of working with LLMs, my discussions had always been between me and my personal agent. There was no collaboration happening with them with a wider group — at best it was me exporting fragments of conversations to documents to share with others, but there was a lack of a collaborative process.&lt;/p&gt;
&lt;h2 id=&quot;why-agents-need-to-be-shared&quot;&gt;Why agents need to be shared&lt;/h2&gt;
&lt;p&gt;For agents to fulfil their potential, they need to work well in a collaborative setting and be shared. You can’t have teams going off and having their own individual conversations with personal agents and reporting back, they need to inhabit the same space as your colleagues and coworkers.&lt;/p&gt;
&lt;p&gt;This missing collaborative tooling around shared agents is starting to be addressed, but it’s still far from mature.&lt;/p&gt;
&lt;p&gt;For those utilising Microsoft, Copilot support has been available since late last year, whereby teams can work with a shared agent via a group chat, which can access resources aligned with the Teams workspace.&lt;/p&gt;
&lt;p&gt;As with most Microsoft products, this is a configuration that works if you’re all in on Microsoft’s business offer and provides an integrated experience. Your agent also needs to be directed, due to context limitations it can’t be across the details of the latest updates to projects in your org workspace.&lt;/p&gt;
&lt;p&gt;The reality is that most organisations have a number of different platforms and services which they rely upon, limiting the reach of Copilot which is bound to one ecosystem.&lt;/p&gt;
&lt;p&gt;But this method of having agentic collaboration in group chats is something I expect to become commonplace for team collaboration.&lt;/p&gt;
&lt;p&gt;Outside of the Microsoft ecosystem, this is being achieved by setting up agent frameworks such as OpenClaw and Hermes on their own dedicated servers, and then connecting them into messaging apps such as Slack or Discord where they can live as shared or personal agents.&lt;/p&gt;
&lt;p&gt;If being used as a shared agent, they can be configured with access to project resources residing in shared collaboration spaces such as GitHub repos, Google Drives, email inboxes and calendars. Then team members can ask them to collaborate on work tasks whereby the whole team has visibility on the agent’s inputs and outputs.&lt;/p&gt;
&lt;p&gt;They too can be set up as personal agents, where they are hooked up to WhatsApp or Telegram, with access to someone’s inbox and calendar and operate as a personal assistant to that person for private communication.&lt;/p&gt;
&lt;p&gt;Both approaches provide all of the benefits of working with the frontier LLMs, but without having to go through the apps from those providers.&lt;/p&gt;
&lt;h2 id=&quot;flexibility-has-a-cost&quot;&gt;Flexibility has a cost&lt;/h2&gt;
&lt;p&gt;With the harnesses provided by OpenClaw and Hermes, models can easily be switched out, without having to regrant access to project resources as they are managed by the agent framework.&lt;/p&gt;
&lt;p&gt;This reduces vendor lock-in, whilst retaining flexibility in this ever evolving space. But with this flexibility, comes responsibility for much of the plumbing underneath.&lt;/p&gt;
&lt;p&gt;There is little doubt that these shared and personal agents will continue to proliferate, but there are challenges with using them. Hermes and OpenClaw need to be regularly updated. Their access tokens to the underlying model provider they use often need to be refreshed — I’ve had this happen three times in one of my Hermes deployments the past few weeks alone, leaving my agents unusable until I logged onto the associated server they were running on and fixed this.&lt;/p&gt;
&lt;p&gt;When you start connecting these frameworks to external services such as Google Drive, Slack, WhatsApp and others, there are also credentials and permissions which need to be managed, which is where things can become brittle.&lt;/p&gt;
&lt;p&gt;Even for a small organisation and my own needs, I’m setting up integrations with WhatsApp, Telegram, Discord, GitHub, Google Drive, Xero, Calendar and Gmail, all of which have the potential to need reauthentication at some point and close attention needs to be paid to access control.&lt;/p&gt;
&lt;p&gt;For instance, whilst giving readonly access to an email account for an agent to use may seem harmless, it isn’t when you consider that multi factor authentication codes are often shared over email — are you comfortable with an agent being privy to this information?&lt;/p&gt;
&lt;p&gt;Or if you’re giving limited access to write files to a specific directory in Google Drive — can you be certain that it couldn’t potentially access another directory if it was told of its identity by someone?&lt;/p&gt;
&lt;p&gt;How about if you’re getting an agent to make code changes in GitHub — with the access control token you’ve given to the agent, does it have the ability to commit directly to a project repo, or are you certain it can only submit pull requests?&lt;/p&gt;
&lt;p&gt;These examples demonstrate the challenges there are in provisioning agentic infrastructure correctly.&lt;/p&gt;
&lt;h2 id=&quot;shared-coding-agents&quot;&gt;Shared coding agents&lt;/h2&gt;
&lt;p&gt;To reduce the complexity of these agent deployments, we’re seeing other agentic frameworks emerge which may better support specific use cases.&lt;/p&gt;
&lt;p&gt;Claude Code and OpenAI’s Codex have been two of the leading CLI tools for agentic development. But their usage is limited to running in terminals or using their own apps.&lt;/p&gt;
&lt;p&gt;OpenClaw and Hermes do provide a mechanism as outlined above for teams to collaborate on codebases, but it requires a lot of manual setup by teams.&lt;/p&gt;
&lt;p&gt;Recognising these challenges, GitHub recently launched their  &lt;a href=&quot;https://github.com/features/preview/github-app&quot;&gt;Copilot app&lt;/a&gt; (currently in technical preview) which provides a shared collaboration space for teams to work on their GitHub codebases alongside Copilot agents.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/_astro/github-copilot-app.BDHDmnwT_ZCJvIP.webp&quot; alt=&quot;The GitHub Copilot app for collaboration&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3915&quot; height=&quot;2235&quot;&gt;
&lt;em&gt;The new GitHub Copilot app &lt;a href=&quot;https://github.com/features/preview/github-app&quot;&gt;(source)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This will enable development teams to move beyond the singular conversations they have with coding agents and facilitate input from all members on what needs to be built.&lt;/p&gt;
&lt;p&gt;If you want a more in depth breakdown, I recommend you check out Maggie Appleton’s &lt;a href=&quot;https://maggieappleton.com/zero-alignment&quot;&gt;post on it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Paradigm and Tempo also recently made public their &lt;a href=&quot;https://centaur.run/&quot;&gt;Centaur&lt;/a&gt; agent framework which provides secure coding agents over Slack.&lt;/p&gt;
&lt;p&gt;Centaur has been designed for team collaboration with a significant emphasis on security, with credentials kept separate from the agents themselves and containers for conversations restricting the ability of the agents to cause havoc.&lt;/p&gt;
&lt;p&gt;Whilst these are a couple of recent examples, it seems inevitable that we’ll see more agent frameworks launching that are built for specific types of work.&lt;/p&gt;
&lt;p&gt;The frontier labs have been vocal about their focus on supporting developer workflows with their models, and now that developers are utilising agents to various degrees for their coding activities, it makes sense that the collaborations used by teams evolve to support this.&lt;/p&gt;
&lt;p&gt;OpenClaw, Hermes and the others I’ve touched on are early to the party in providing the platforms that can be used to coordinate work among agents. We’re at a transitional point, but over the coming months these platforms will proliferate as teams adopt them, supporting the next phase of growth in agentic workflows.&lt;/p&gt;</content:encoded></item><item><title>Why non-engineers ship unmaintainable code with AI agents</title><link>https://conorsvensson.com/writing/why-non-engineers-ship-unmaintainable-code/</link><guid isPermaLink="true">https://conorsvensson.com/writing/why-non-engineers-ship-unmaintainable-code/</guid><description>Coding agents are optimised to appease the operator, not to think critically. Without an operator who understands engineering, you get working demos that fall apart when someone tries to maintain them.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Working with coding agents creates addictive feedback loops. The agent is optimised to craft a response, not push back on your questions. This creates an illusion of progress, where the agent is trying to appease you, rather than thinking critically about what you’ve asked it to do.&lt;/p&gt;
&lt;p&gt;This is fine if you’re creating a personal project, or quickly throwing together a prototype, but inadequate if you’re trying to build a real product.&lt;/p&gt;
&lt;p&gt;Being attuned to one’s environment is crucial. Providing adequate context for the task at hand helps the agent take its surroundings into account.&lt;/p&gt;
&lt;p&gt;The challenge I see with many of the people embracing agentic engineering is that the context they bring is often limited to their own world-view or skillset.&lt;/p&gt;
&lt;p&gt;People working with agents may have ideas of &lt;strong&gt;what&lt;/strong&gt; they want an agent to build. But unless they understand software engineering, they are unlikely to be concerned with &lt;strong&gt;how&lt;/strong&gt; it is built.&lt;/p&gt;
&lt;p&gt;This is not a problem when building a simple prototype or personal tool. But if you’re trying to build something other people rely on such as a project, service or business, it’s unlikely to work in the way you envisioned.&lt;/p&gt;
&lt;p&gt;The tight human-agent feedback loop can all too easily result in the appearance of rapid progress, with the agent being your own personal hype-man, making you feel good about what you’re building, when in fact people need to take a step back and reflect on what their agent is doing and if it is actually a good idea given their surroundings.&lt;/p&gt;
&lt;p&gt;This ability to take a step back and question the bigger picture, sometimes referred to as &lt;em&gt;&lt;strong&gt;metathinking&lt;/strong&gt;&lt;/em&gt;, is a trait of human intelligence which machines have not developed. It matters especially when working with LLMs which are happy to endlessly work on a problem if their operator asks them to.&lt;/p&gt;
&lt;p&gt;Machines take a brute-force approach to solving problems, and because LLMs are so good at this brute-force approach, it’s all too easy to chase the wrong solutions.&lt;/p&gt;
&lt;p&gt;It’s no different from a developer wasting time working on the wrong feature for a product, because someone didn’t adequately describe what was needed.&lt;/p&gt;
&lt;p&gt;The problem is this illusion of progress can magnify this and create unmaintainable codebases very quickly.&lt;/p&gt;
&lt;p&gt;Even if someone is working on the right problem, they may lack the right intuition about the agent’s environment to guide it appropriately. If a person does not tell their agent to follow good engineering practices, such as separating concerns and delineating appropriately between components, they will end up with an increasingly chaotic code base, where their agent is optimising for operator happiness over a well structured environment.&lt;/p&gt;
&lt;p&gt;I was recently reviewing a friend’s code they had put together to enhance an AI personal assistant on &lt;a href=&quot;https://hermes-agent.nousresearch.com/&quot;&gt;Hermes&lt;/a&gt;. Hermes is an AI personal assistant with persistent memory across conversations. They had something that worked, but it was tightly coupled to Hermes.&lt;/p&gt;
&lt;p&gt;They had effectively created their own distribution of Hermes to solve their problem. On the surface this is reasonable, but there were two glaring issues I saw with this approach:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;They would be responsible for updating their code every time there were any changes to the Hermes installation process.&lt;/li&gt;
&lt;li&gt;It couldn’t target an existing Hermes installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I worked with my agent to examine the codebase properly, but the crucial thing that had been missing from my friend’s work had been asking his agent to ensure that his code followed clean architectural patterns.&lt;/p&gt;
&lt;p&gt;A prompt as simple as the below would have prevented these issues.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Integrate with Hermes as an external dependency, not as an embedded platform.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Passing this prompt to their agent can subsequently fix the issue. However, it cannot guarantee that nothing breaks, and following a major architectural change to the codebase, significant amounts of testing will be required.&lt;/p&gt;
&lt;p&gt;Herein lies one of the significant issues facing non-engineers building products with LLMs. Optimising for maintenance and stability is unlikely to be front of mind, but in order to provide a high-quality product for end-users, it cannot be overlooked.&lt;/p&gt;
&lt;p&gt;When someone asks an LLM to add a feature or fix an issue, they are unlikely to be cognisant of the change happening behind the scenes.&lt;/p&gt;
&lt;p&gt;An experienced engineer is able to bring a wider contextual understanding of the business or underlying technology into their decision-making. An LLM cannot do this without being asked.&lt;/p&gt;
&lt;p&gt;Hence with the proliferation of products being summoned into existence via an LLM, the quality and reliability of these products is often poor.&lt;/p&gt;
&lt;p&gt;This isn’t to detract from the ability of LLMs to create software — they can do a brilliant job, and my engineers use them for their coding. But without an operator who understands good engineering, what gets built isn’t a product, but a prototype that breaks as soon as anyone tries to change it.&lt;/p&gt;</content:encoded></item><item><title>What we learned trying to give an agent our whole company</title><link>https://conorsvensson.com/writing/knowledge-aggregation-for-llms/</link><guid isPermaLink="true">https://conorsvensson.com/writing/knowledge-aggregation-for-llms/</guid><description>How we built text-native archives of our own operations so agents could work with them like codebases.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Enscribe is being built by a remote-first team. Everything we do is recorded somewhere — we transcribe our video calls, chat via instant messaging, store our docs in Google Drive, host our code in GitHub. All of this should be useful context for an agent, but very little is.&lt;/p&gt;
&lt;p&gt;We’d look at the various integrations such as Google Drive in ChatGPT, and whilst you could connect to your drive, you’d have to pull out specific documents to include them in a chat session and be hit with hard limits of 10 files for a single prompt.&lt;/p&gt;
&lt;p&gt;We even optimised our code repos so that there was a single source for our product landing page, documentation and blogs, all conveniently stored in Markdown. Our thinking was that this would provide everything an LLM would need to know about the current state of the project.&lt;/p&gt;
&lt;h2 id=&quot;context-windows&quot;&gt;Context windows&lt;/h2&gt;
&lt;p&gt;The limiting factor here was not our ability to surface useful information for the agents, it was the &lt;em&gt;context window&lt;/em&gt; of these agents.&lt;/p&gt;
&lt;p&gt;Context windows are the working memories that you have with an LLM. When you establish a new session with a generative AI chatbot such as ChatGPT or Claude the context will have minimal information in it, beyond the instructions that OpenAI or Anthropic have told it to load with.&lt;/p&gt;
&lt;p&gt;When you start typing requests and adding files to the discussion, the history of your discussion and information about any shared files is summarised in the context window associated with your session.&lt;/p&gt;
&lt;figure class=&quot;vega-chart&quot; data-astro-cid-jovisgae&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; version=&quot;1.1&quot; class=&quot;marks&quot; viewBox=&quot;0 0 700 340&quot;&gt;&lt;g fill=&quot;none&quot; stroke-miterlimit=&quot;10&quot; transform=&quot;translate(59,10)&quot;&gt;&lt;g class=&quot;mark-group role-frame root&quot; role=&quot;graphics-object&quot; aria-roledescription=&quot;group mark container&quot;&gt;&lt;g transform=&quot;translate(0,0)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0.5,0.5h576v293h-576Z&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-group role-axis&quot; aria-hidden=&quot;true&quot;&gt;&lt;g transform=&quot;translate(0.5,293.5)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h0v0h0Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-rule role-axis-grid&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(41,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(114,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(188,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(261,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(335,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(408,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(482,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(555,-293)&quot; x2=&quot;0&quot; y2=&quot;293&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;mark-group role-axis&quot; aria-hidden=&quot;true&quot;&gt;&lt;g transform=&quot;translate(0.5,0.5)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h0v0h0Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-rule role-axis-grid&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(0,293)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,278)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,270)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,264)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,259)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,255)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,252)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,249)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,246)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,244)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,229)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,221)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,215)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,210)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,206)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,203)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,200)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,198)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,195)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,181)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,172)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,166)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,161)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,157)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,154)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,151)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,149)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,147)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,132)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,123)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,117)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,112)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,109)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,105)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,102)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,100)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,98)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,83)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,74)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,68)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,64)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,60)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,56)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,54)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,51)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,49)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,34)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,26)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,19)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,15)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,11)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,8)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,5)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,2)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,0)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#ddd&quot; stroke-opacity=&quot;0.15&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;mark-group role-axis&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;axis&quot; aria-label=&quot;X-axis titled &apos;Release date&apos; for a time scale with values from 2018 to 2026&quot;&gt;&lt;g transform=&quot;translate(0.5,293.5)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h0v0h0Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-rule role-axis-tick&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(41,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(114,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(188,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(261,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(335,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(408,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(482,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(555,0)&quot; x2=&quot;0&quot; y2=&quot;5&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-axis-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(40.999302163293784,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2019&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(114.35589672016748,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2020&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(187.91346824842987,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2021&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(261.27006280530355,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2022&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(334.62665736217724,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2023&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(407.98325191905093,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2024&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(481.54082344731336,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2025&lt;/text&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(554.897418004187,15)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;2026&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;mark-rule role-axis-domain&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(0,0)&quot; x2=&quot;576&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-axis-title&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(288,30)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;11px&quot; font-weight=&quot;500&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;Release date&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;mark-group role-axis&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;axis&quot; aria-label=&quot;Y-axis titled &apos;Context window (tokens)&apos; for a log scale with values from 100 to 100M&quot;&gt;&lt;g transform=&quot;translate(0.5,0.5)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h0v0h0Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-rule role-axis-tick&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(0,293)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,278)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,270)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,264)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,259)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,255)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,252)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,249)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,246)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,244)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,229)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,221)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,215)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,210)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,206)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,203)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,200)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,198)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,195)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,181)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,172)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,166)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,161)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,157)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,154)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,151)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,149)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,147)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,132)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,123)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,117)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,112)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,109)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,105)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,102)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,100)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,98)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,83)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,74)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,68)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,64)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,60)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,56)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,54)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,51)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,49)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,34)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,26)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,19)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,15)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,11)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,8)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,5)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,2)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;line transform=&quot;translate(0,0)&quot; x2=&quot;-5&quot; y2=&quot;0&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-axis-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,296)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;100&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,281.29970187840894)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,272.7005787278565)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,266.5994037568178)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,261.86696478825775)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,258.0002806062654)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,254.73104571263715)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,251.8991056352268)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,249.40115745571296)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,247.16666666666669)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;1k&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,232.46636854507562)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,223.86724539452317)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,217.7660704234845)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,213.03363145492443)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,209.1669472729321)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,205.89771237930378)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,203.06577230189345)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,200.56782412237965)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,198.33333333333334)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;10k&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,183.63303521174228)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,175.03391206118982)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,168.93273709015122)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,164.2002981215911)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,160.33361393959873)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,157.0643790459705)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,154.2324389685601)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,151.73449078904633)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,149.5)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;100k&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,134.79970187840894)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,126.20057872785652)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,120.09940375681784)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,115.36696478825777)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,111.50028060626542)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,108.23104571263714)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,105.39910563522677)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,102.90115745571298)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,100.66666666666671)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;1M&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,85.96636854507561)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,77.36724539452317)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,71.26607042348455)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,66.53363145492446)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,62.66694727293207)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,59.39771237930382)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,56.56577230189345)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,54.06782412237972)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,51.83333333333336)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;10M&lt;/text&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,37.13303521174229)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,28.533912061189874)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,22.432737090151196)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,17.70029812159113)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,13.833613939598779)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,10.56437904597053)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,7.732438968560134)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,5.234490789046362)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;/&gt;&lt;text text-anchor=&quot;end&quot; transform=&quot;translate(-7,3)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;100M&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;mark-rule role-axis-domain&quot; pointer-events=&quot;none&quot;&gt;&lt;line transform=&quot;translate(0,293)&quot; x2=&quot;0&quot; y2=&quot;-293&quot; stroke=&quot;#888&quot; stroke-width=&quot;1&quot; opacity=&quot;1&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-axis-title&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;middle&quot; transform=&quot;translate(-43,146.5) rotate(-90) translate(0,-2)&quot; font-family=&quot;system-ui, sans-serif&quot; font-size=&quot;11px&quot; font-weight=&quot;500&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;Context window (tokens)&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;mark-symbol role-mark layer_0_marks&quot; role=&quot;graphics-object&quot; aria-roledescription=&quot;symbol mark container&quot;&gt;&lt;path aria-label=&quot;Release date: 2018; Context window (tokens): 512; developer: OpenAI; Model: GPT-1; Released: Jun 2018; Tokens: 512; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(0,258.36398357234697)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2019; Context window (tokens): 1.024k; developer: OpenAI; Model: GPT-2; Released: Feb 2019; Tokens: 1,024; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(49.84228890439637,243.66368545075585)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2020; Context window (tokens): 2.048k; developer: OpenAI; Model: GPT-3; Released: Jun 2020; Tokens: 2,048; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(146.9141660851361,228.9633873291648)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2022; Context window (tokens): 4.096k; developer: OpenAI; Model: ChatGPT (GPT-3.5); Released: Nov 2022; Tokens: 4,096; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(328.195394277739,214.2630892075737)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 2.048k; developer: Meta; Model: LLaMA 1; Released: Feb 2023; Tokens: 2,048; Developer: Meta&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(345.47941381716674,228.9633873291648)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 8.192k; developer: OpenAI; Model: GPT-4; Released: Mar 2023; Tokens: 8,192; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(349.09699930216334,199.56279108598264)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 32.768k; developer: OpenAI; Model: GPT-4 32K; Released: Mar 2023; Tokens: 32,768; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(349.09699930216334,170.1621948428005)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 9k; developer: Anthropic; Model: Claude 1; Released: Mar 2023; Tokens: 9,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(349.09699930216334,197.56782412237965)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 100k; developer: Anthropic; Model: Claude 100K; Released: May 2023; Tokens: 100,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(360.75366364270764,146.5)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 4.096k; developer: Meta; Model: Llama 2; Released: Jul 2023; Tokens: 4,096; Developer: Meta&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(374.42009769713883,214.2630892075737)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 128k; developer: OpenAI; Model: GPT-4 Turbo; Released: Nov 2023; Tokens: 128,000; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(396.72854152128406,141.26457981552912)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 200k; developer: Anthropic; Model: Claude 2.1; Released: Nov 2023; Tokens: 200,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(399.74319609211443,131.79970187840894)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2023; Context window (tokens): 32k; developer: Google; Model: Gemini 1.0; Released: Dec 2023; Tokens: 32,000; Developer: Google&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(402.75785066294486,170.66517605871127)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#4285f4&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 1M; developer: Google; Model: Gemini 1.5 Pro; Released: Feb 2024; Tokens: 1,000,000; Developer: Google&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(417.0272156315422,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#4285f4&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 200k; developer: Anthropic; Model: Claude 3; Released: Mar 2024; Tokens: 200,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(420.6448011165387,131.79970187840894)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 8.192k; developer: Meta; Model: Llama 3; Released: Apr 2024; Tokens: 8,192; Developer: Meta&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(429.68876482903,199.56279108598264)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 128k; developer: OpenAI; Model: GPT-4o; Released: May 2024; Tokens: 128,000; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(434.7131891137474,141.26457981552912)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 2M; developer: Google; Model: Gemini 1.5 Pro 2M; Released: Jun 2024; Tokens: 2,000,000; Developer: Google&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(443.75715282623867,82.96636854507561)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#4285f4&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2024; Context window (tokens): 128k; developer: Meta; Model: Llama 3.1; Released: Jul 2024; Tokens: 128,000; Developer: Meta&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(448.98255408234473,141.26457981552912)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2025; Context window (tokens): 10M; developer: Meta; Model: Llama 4 Scout; Released: Apr 2025; Tokens: 10,000,000; Developer: Meta&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(500.4326587578507,48.83333333333336)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2025; Context window (tokens): 1M; developer: OpenAI; Model: GPT-4.1; Released: Apr 2025; Tokens: 1,000,000; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(502.2414515003489,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2025; Context window (tokens): 400k; developer: OpenAI; Model: GPT-5; Released: Aug 2025; Tokens: 400,000; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(525.3538032100488,117.09940375681784)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2025; Context window (tokens): 200k; developer: Anthropic; Model: Claude Sonnet 4.5; Released: Sep 2025; Tokens: 200,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(536.0055826936497,131.79970187840894)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2025; Context window (tokens): 1M; developer: Google; Model: Gemini 3 Pro; Released: Nov 2025; Tokens: 1,000,000; Developer: Google&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(546.0544312630844,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#4285f4&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2026; Context window (tokens): 1M; developer: Anthropic; Model: Claude Opus 4.6; Released: Feb 2026; Tokens: 1,000,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(561.9316120027913,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2026; Context window (tokens): 1M; developer: OpenAI; Model: GPT-5.4; Released: Mar 2026; Tokens: 1,000,000; Developer: OpenAI&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(567.5589672016748,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;path aria-label=&quot;Release date: 2026; Context window (tokens): 1M; developer: Anthropic; Model: Claude Opus 4.7; Released: Apr 2026; Tokens: 1,000,000; Developer: Anthropic&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;circle&quot; transform=&quot;translate(576,97.66666666666671)&quot; d=&quot;M5.916,0A5.916,5.916,0,1,1,-5.916,0A5.916,5.916,0,1,1,5.916,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1&quot; opacity=&quot;0.82&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-mark layer_1_marks&quot; role=&quot;graphics-object&quot; aria-roledescription=&quot;text mark container&quot;&gt;&lt;text aria-label=&quot;date: Jun 11, 2018; tokens: 512; model: GPT-1&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(0,247.36398357234697)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;GPT-1&lt;/text&gt;&lt;text aria-label=&quot;date: Feb 14, 2019; tokens: 1024; model: GPT-2&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(49.84228890439637,232.66368545075585)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;GPT-2&lt;/text&gt;&lt;text aria-label=&quot;date: Jun 11, 2020; tokens: 2048; model: GPT-3&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(146.9141660851361,217.9633873291648)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;GPT-3&lt;/text&gt;&lt;text aria-label=&quot;date: Nov 30, 2022; tokens: 4096; model: ChatGPT (GPT-3.5)&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(328.195394277739,203.2630892075737)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;ChatGPT (GPT-3.5)&lt;/text&gt;&lt;text aria-label=&quot;date: May 11, 2023; tokens: 100000; model: Claude 100K&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(360.75366364270764,135.5)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;Claude 100K&lt;/text&gt;&lt;text aria-label=&quot;date: Nov 21, 2023; tokens: 200000; model: Claude 2.1&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(399.74319609211443,120.79970187840894)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;Claude 2.1&lt;/text&gt;&lt;text aria-label=&quot;date: Feb 15, 2024; tokens: 1000000; model: Gemini 1.5 Pro&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(417.0272156315422,86.66666666666671)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;Gemini 1.5 Pro&lt;/text&gt;&lt;text aria-label=&quot;date: Apr 05, 2025; tokens: 10000000; model: Llama 4 Scout&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(500.4326587578507,37.83333333333336)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;Llama 4 Scout&lt;/text&gt;&lt;text aria-label=&quot;date: Apr 16, 2026; tokens: 1000000; model: Claude Opus 4.7&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(576,86.66666666666671)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-weight=&quot;500&quot; fill=&quot;black&quot;&gt;Claude Opus 4.7&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-mark layer_2_marks&quot; role=&quot;graphics-object&quot; aria-roledescription=&quot;text mark container&quot;&gt;&lt;text aria-label=&quot;date: Feb 15, 2024; tokens: 1000000; milestone: First 1M+&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(417.0272156315422,122.66666666666671)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-style=&quot;italic&quot; fill=&quot;#b91c1c&quot;&gt;First 1M+&lt;/text&gt;&lt;text aria-label=&quot;date: Apr 05, 2025; tokens: 10000000; milestone: First 10M+&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;text mark&quot; text-anchor=&quot;middle&quot; transform=&quot;translate(500.4326587578507,73.83333333333336)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; font-style=&quot;italic&quot; fill=&quot;#b91c1c&quot;&gt;First 10M+&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;mark-group role-legend&quot; role=&quot;graphics-symbol&quot; aria-roledescription=&quot;legend&quot; aria-label=&quot;Symbol legend for fill color with 4 values: OpenAI, Anthropic, Google, Meta&quot;&gt;&lt;g transform=&quot;translate(10,10)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h88v61h-88Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-group role-legend-entry&quot;&gt;&lt;g transform=&quot;translate(0,0)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h0v0h0Z&quot; pointer-events=&quot;none&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-group role-scope&quot; role=&quot;graphics-object&quot; aria-roledescription=&quot;group mark container&quot;&gt;&lt;g transform=&quot;translate(0,0)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h88v12.5h-88Z&quot; pointer-events=&quot;none&quot; opacity=&quot;1&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-symbol role-legend-symbol&quot; pointer-events=&quot;none&quot;&gt;&lt;path transform=&quot;translate(6,6)&quot; d=&quot;M5,0A5,5,0,1,1,-5,0A5,5,0,1,1,5,0&quot; fill=&quot;#10a37f&quot; stroke=&quot;white&quot; stroke-width=&quot;1.5&quot; opacity=&quot;0.82&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-legend-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;start&quot; transform=&quot;translate(16,9)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;OpenAI&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;g transform=&quot;translate(0,16)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h88v12.5h-88Z&quot; pointer-events=&quot;none&quot; opacity=&quot;1&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-symbol role-legend-symbol&quot; pointer-events=&quot;none&quot;&gt;&lt;path transform=&quot;translate(6,6)&quot; d=&quot;M5,0A5,5,0,1,1,-5,0A5,5,0,1,1,5,0&quot; fill=&quot;#cc785c&quot; stroke=&quot;white&quot; stroke-width=&quot;1.5&quot; opacity=&quot;0.82&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-legend-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;start&quot; transform=&quot;translate(16,9)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;Anthropic&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;g transform=&quot;translate(0,32)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h88v12.5h-88Z&quot; pointer-events=&quot;none&quot; opacity=&quot;1&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-symbol role-legend-symbol&quot; pointer-events=&quot;none&quot;&gt;&lt;path transform=&quot;translate(6,6)&quot; d=&quot;M5,0A5,5,0,1,1,-5,0A5,5,0,1,1,5,0&quot; fill=&quot;#4285f4&quot; stroke=&quot;white&quot; stroke-width=&quot;1.5&quot; opacity=&quot;0.82&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-legend-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;start&quot; transform=&quot;translate(16,9)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;Google&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;g transform=&quot;translate(0,48)&quot;&gt;&lt;path class=&quot;background&quot; aria-hidden=&quot;true&quot; d=&quot;M0,0h88v12.5h-88Z&quot; pointer-events=&quot;none&quot; opacity=&quot;1&quot;/&gt;&lt;g&gt;&lt;g class=&quot;mark-symbol role-legend-symbol&quot; pointer-events=&quot;none&quot;&gt;&lt;path transform=&quot;translate(6,6)&quot; d=&quot;M5,0A5,5,0,1,1,-5,0A5,5,0,1,1,5,0&quot; fill=&quot;#1877f2&quot; stroke=&quot;white&quot; stroke-width=&quot;1.5&quot; opacity=&quot;0.82&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;mark-text role-legend-label&quot; pointer-events=&quot;none&quot;&gt;&lt;text text-anchor=&quot;start&quot; transform=&quot;translate(16,9)&quot; font-family=&quot;sans-serif&quot; font-size=&quot;10px&quot; fill=&quot;#000&quot; opacity=&quot;1&quot;&gt;Meta&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; pointer-events=&quot;none&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;path class=&quot;foreground&quot; aria-hidden=&quot;true&quot; d=&quot;&quot; display=&quot;none&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/figure&gt; 
&lt;p&gt;Currently, the leading models use a context window size of one million tokens and whilst they will continue to grow, the volume of data they can keep in memory, remains orders of magnitude smaller than the size of the datasets these models are trained on which is internet scale.&lt;/p&gt;
&lt;p&gt;In order to prime agents with useful information to serve specific requests, they are given skills files and instructions specific to projects. These documents are written in markdown with names such as SKILLS.md and AGENTS.md and give the agents the information they need to be more helpful to the people they’re speaking with.&lt;/p&gt;
&lt;p&gt;For instance, Claude provides a &lt;a href=&quot;https://github.com/anthropics/skills/blob/main/skills/pptx/SKILL.md&quot;&gt;Powerpoint skill&lt;/a&gt; which is a file describing how to create compelling slide decks.&lt;/p&gt;
&lt;p&gt;Whilst in the Claude app, skills such as this are dressed up as software plugins, they’re a text file behind the scenes.&lt;/p&gt;
&lt;p&gt;This is because LLMs thrive on text. Hence if you want to train an agent about your organisation you want to feed it text.&lt;/p&gt;
&lt;p&gt;Skills and agent files alone aren’t enough for this, they teach agents how to do things. They can’t teach agents about your organisation, as they lack the data about it.&lt;/p&gt;
&lt;p&gt;The answer isn’t increasing context windows, it’s converting your organisational knowledge into archives that the agents can explore on demand.&lt;/p&gt;
&lt;h2 id=&quot;what-we-built&quot;&gt;What we built&lt;/h2&gt;
&lt;p&gt;We started thinking about how best to train our own agents with richer information about our organisation.&lt;/p&gt;
&lt;p&gt;We already had data being recorded about what the team was building, but we needed to find a way to consolidate this into an easily digestible format for LLMs.&lt;/p&gt;
&lt;p&gt;We wanted to have data repositories that can then be passed to an agent, much like a code repo is, and the agent can explore them like it does a codebase.&lt;/p&gt;
&lt;p&gt;Instead of leaving our data spread across multiple sources, we’ve started consolidating data into a number of different LLM-friendly formats, which makes it far easier to provide context when required about what’s happening.&lt;/p&gt;
&lt;p&gt;Our code related assets remain in GitHub. However, we want to ensure that we’re regularly updating our blog and documentation pages with new features and changes as we make them.&lt;/p&gt;
&lt;p&gt;With Claude Code and OpenAI’s Codex, LLMs are already adept at working with these source formats, and while we don’t need to do additional work once they’re in these repos, we’ve consciously made the decision to try and keep as much information in one place instead of spread across lots of separate repositories.&lt;/p&gt;
&lt;p&gt;All our video calls are being transcribed and summarised. We set up daily jobs that create markdown versions of these files and stores them in project specific folders. Likewise our instant messaging discussions are being exported in markdown to folders.&lt;/p&gt;
&lt;p&gt;These folders are then being indexed for agents by having AGENTS.md files in their root, with index files that break down how the individual files are organised hierarchically.&lt;/p&gt;
&lt;p&gt;For instance, with Enscribe we have a knowledge base folder containing directories for our meeting notes and chat. In this location we have markdown archives of our discussions organised by date.&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark&quot; style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;overflow-x:auto&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;knowledge-base/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  meeting-notes/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    2026/04-April/2026-04-07-Team-sync-2026-04-07-11-30-BST.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  text-chat/discord/team/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;    2026/2026-01-27.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#005CC5;--shiki-dark:#79B8FF&quot;&gt;    ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  INDEX.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#6F42C1;--shiki-dark:#B392F0&quot;&gt;  AGENTS.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These are supplemented with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an INDEX.md file which lists the number of files by month, year and type as well as the most recent files&lt;/li&gt;
&lt;li&gt;an AGENTS.md file outlining the retrieval protocol to use&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This same pattern is then being extended to other tools such as collaboration tools and those parts of the organisation such as our finance systems where there’s useful data being generated.&lt;/p&gt;
&lt;p&gt;Now when someone wants to know what we decided last week regarding the latest feature for Enscribe, the agent can answer for us. Before, this would have required searching through meeting notes or chat histories.&lt;/p&gt;
&lt;p&gt;Working memory will likely remain a constraint in the foreseeable future, but by ensuring we have high quality data archives in text-native archives, we have the right foundations to share topical information with agents when we need to.&lt;/p&gt;
&lt;p&gt;Agents may not yet be able to store all of this in working memory, but we can be confident that as their capabilities increase we’ll be able to take advantage of them quickly, without being constrained by a specific vendor platform.&lt;/p&gt;
&lt;p&gt;The agents will get better, and the data archives you build now will still be useful when they do, but the inverse is not true.&lt;/p&gt;</content:encoded></item></channel></rss>