<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ion</title>
    <description>The latest articles on Forem by Ion (@ionionascu).</description>
    <link>https://forem.com/ionionascu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F58537%2Faedcf365-44e0-4643-9cf6-e4c4e40a4513.png</url>
      <title>Forem: Ion</title>
      <link>https://forem.com/ionionascu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ionionascu"/>
    <language>en</language>
    <item>
      <title>I Built a Small Agentic Trading App. It Cost Me a Few Hours and About $0.20 Per Run.</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 13 Mar 2026 17:09:53 +0000</pubDate>
      <link>https://forem.com/ionionascu/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-020-per-run-3ikj</link>
      <guid>https://forem.com/ionionascu/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-020-per-run-3ikj</guid>
      <description>&lt;p&gt;I’ve been writing code for many years now. Not as much these days, but I started when I was eight. With BASIC. After this many years, you develop a particular mindset. It helps sometimes and causes problems other times. When you see a problem, you immediately think about writing a solution. But you should first investigate what’s already out there.&lt;/p&gt;

&lt;p&gt;So when I see articles and hear people talking about AI agents and orchestration frameworks and multi-agent architectures and all that, my first instinct is: if you know code, you just need a few lines, a couple of API calls, and an LLM. That’s it. That’s your agent.&lt;/p&gt;

&lt;p&gt;I wanted to test that instinct. So I mixed it with something I actually care about: trading.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;The idea was simple. I wanted an app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gets some input from me (optionally)&lt;/li&gt;
&lt;li&gt;Calls a few APIs to gather market data and news&lt;/li&gt;
&lt;li&gt;Sends everything to an LLM with the right context&lt;/li&gt;
&lt;li&gt;Saves the output for future runs (a basic form of memory)&lt;/li&gt;
&lt;li&gt;Sends me the result via email and push notification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am not comfortable enough to let it place or cancel orders automatically. Maybe later. For now, &lt;strong&gt;I just want it to think and tell me what it thinks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And what it tells me is pretty concrete. The output of each run includes a specific recommendation: WAIT, BUY at a particular price (or NOW), SELL at a particular price (or NOW), amend existing orders, and so on. It’s not a vague “the market looks bullish” — it’s an actionable next step with reasoning attached. I still make the final call, but the model does the legwork of pulling everything together into a decision.&lt;/p&gt;

&lt;p&gt;To keep things simple, I used Claude models. I already have a Pro account, so I just activated the API and topped it up. Then I asked Claude Code (Opus) to help me scaffold the whole thing. A Python app using LangChain, calling some APIs, talking to Sonnet, saving output, emailing me, sending push notifications.&lt;/p&gt;

&lt;p&gt;I also put everything in a Docker container and deployed it to my local K3s cluster running on a Raspberry Pi 5. It runs as a set of cronjobs: once before the market opens, and a few times during market hours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdes7u51n3mgwoyq20en8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdes7u51n3mgwoyq20en8.png" alt="The entire infrastructure. It fits in my palm." width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It does stuff. It actually works.&lt;/p&gt;

&lt;p&gt;Now, I should be upfront: I am not a professional trader. I trade from time to time, and I am certainly not a millionaire. So I have to admit that part of it also feels a little bit speculative. But here’s the thing — the summary the LLM provides in its output, the rationale behind the decision, actually makes sense. When I have time to read the news myself (actual news, not AI-generated summaries), the reasoning lines up. It’s not just pulling recommendations out of thin air. It reads the same data I would read, and it reaches conclusions I can follow. That doesn’t make it right every time, but it makes it auditable, which is more than I can say for my gut feeling at 7 AM.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Implementation Details
&lt;/h2&gt;

&lt;p&gt;Let me go a bit deeper into what’s under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why LangChain?&lt;/strong&gt; Partly to learn it, and partly because I actually want to extend the solution. For example, in the future I could use Sonnet as a faster and cheaper model for the first pass — a quick sanity check — and then, if an actual trade decision is needed, escalate to Opus for verification. LangChain gives me a reasonable abstraction layer for that kind of routing. I also used Tavily for news data, configured as a tool inside LangChain. But I want to be clear — I could have done all of this without it. LangChain is a convenience here, not a requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic user prompt.&lt;/strong&gt; The prompt I send to the model has several dynamic variables that get filled in at runtime: current position, pending orders, historical orders. To populate these, the app first makes API requests to my broker. This is just plain REST — no fancy orchestration needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No historical price data (yet).&lt;/strong&gt; One gap worth mentioning: my broker doesn’t expose historical price data through its API, and I don’t want to pay a separate data provider for it. I’ll find a solution eventually, but for now the prompt doesn’t rely heavily on price charts or technical indicators. Instead, it leans on analysis and context from other sources on the internet — news, market commentary, analyst takes — which Tavily pulls in. It’s a trade-off, but it keeps things simple and cheap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local override mode.&lt;/strong&gt; When the app runs locally (not as a cronjob), I have the option to feed it manual input. I can paste in some news I found interesting, or force a particular instrument price so the app doesn’t need to look one up. This turned out to be surprisingly useful for testing and for those moments when I want to say “forget the current price, assume it’s at X — what would you do?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory.&lt;/strong&gt; I don’t save the whole LLM output. The system prompt has multiple steps, and one of them explicitly asks the model to produce a “run summary” — a condensed version of its reasoning and recommendation, designed to be useful as context on the next run. That summary gets saved to a file. On the next run, it’s loaded and injected into the prompt. So the model can see what it concluded last time, what it recommended, and whether conditions have changed. No vector database, no embeddings, no retrieval pipeline. Just a file with a structured summary that the model itself wrote for its future self.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notifications.&lt;/strong&gt; I use my own Gmail account to send emails to myself. For push notifications, I use my Home Assistant instance — it already knows how to push to my phone, so I just call its API. Simple, reliable, already running.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Costs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5ti4gxv95i2rszkmtbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5ti4gxv95i2rszkmtbp.png" alt="Total cost per run. Less than a bad coffee." width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each run costs about $0.20. That’s the Claude API usage for one cycle of: ingest context, read news, reason about the position, produce a recommendation. For the news data, I use Tavily’s free Researcher tier, which should be more than enough for the number of monthly runs I need at the moment. So the only real cost is the LLM.&lt;/p&gt;

&lt;p&gt;A proper trader would probably want to optimise this. Maybe use a local model for some steps. Maybe look for a model specifically fine-tuned for financial reasoning. Maybe care about latency.&lt;/p&gt;

&lt;p&gt;But for me? I just want to have fun and learn. $0.20 per run is a rounding error compared to what you’d lose on a single bad trade made on gut feeling at 7 AM before coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture (If You Can Call It That)
&lt;/h2&gt;

&lt;p&gt;Let me sketch what this looks like end to end:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowt9m7bnoincdi6s2vc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowt9m7bnoincdi6s2vc3.png" alt="Just a few steps. Most of them are just API calls and string concatenation." width="800" height="729"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cronjob triggers&lt;/strong&gt; the Docker container on K3s (Raspberry Pi 5).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broker API calls&lt;/strong&gt; fetch current positions, pending orders, and order history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tavily tool&lt;/strong&gt; (via LangChain) fetches relevant market news.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt assembly&lt;/strong&gt;: all the dynamic data gets injected into the user prompt, along with the previous run’s output (memory).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Sonnet&lt;/strong&gt; processes the full context and produces a recommendation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output is saved&lt;/strong&gt; to a file (next run’s memory).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email + push notification&lt;/strong&gt; sent to me with the recommendation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human in the loop&lt;/strong&gt; (me) decides whether to act on the model’s recommendation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s eight steps. Most of them are just API calls and string concatenation. The “agentic” part is really step 5 — the LLM reasoning over structured context with tool access. And step 8 is just a guy looking at his phone over coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Obvious Question
&lt;/h2&gt;

&lt;p&gt;Now, the obvious question. For a developer who can write code, &lt;strong&gt;why exactly do you need a fancy orchestration framework to build something like this?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I keep seeing products and platforms that promise to let you “build AI agents without code” or “orchestrate complex multi-agent workflows” with drag-and-drop interfaces and visual pipelines. And I get it — there’s a market for that. Not everyone writes code.&lt;/p&gt;

&lt;p&gt;But if you do write code, what you need is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An LLM API&lt;/li&gt;
&lt;li&gt;A few REST calls&lt;/li&gt;
&lt;li&gt;Some string templating for prompts&lt;/li&gt;
&lt;li&gt;A file system (for memory)&lt;/li&gt;
&lt;li&gt;A way to send notifications&lt;/li&gt;
&lt;li&gt;A container runtime (optional, but nice)&lt;/li&gt;
&lt;li&gt;Some logging, if you need audit or debug data (add as needed — it’s just code)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it. That’s the agent.&lt;/p&gt;

&lt;p&gt;I’m not saying LangChain is strictly necessary either. I used it because I wanted to learn it and because the tool abstraction is convenient for the Tavily integration. But I could have done the same thing with raw API calls and a hundred lines of Python.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The orchestration is just code. It always was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The value of an LLM agent is not in the orchestration layer. It’s in the prompt design, the context assembly, and the quality of the model’s reasoning. Everything else is plumbing. And developers have been doing plumbing for decades.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fposnv6hywkufnuppusaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fposnv6hywkufnuppusaj.png" alt="The model made its call. I’ll get to it." width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: This is a personal learning project. Nothing here should be taken as financial advice. Also, as I’m not a native English speaker, I used an LLM to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/ai-in-plain-english/i-built-a-small-agentic-trading-app-it-cost-me-a-few-hours-and-about-0-20-per-run-d00031bc0b3c" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>softwareengineering</category>
      <category>python</category>
    </item>
    <item>
      <title>Are Multi-Agent LLM Workflows Quietly Amplifying Mistakes?</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 13 Feb 2026 12:18:14 +0000</pubDate>
      <link>https://forem.com/ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-lhb</link>
      <guid>https://forem.com/ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-lhb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zho3l91lsanebvs462d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zho3l91lsanebvs462d.png" alt="A pipeline that looks sophisticated yet slightly fragile" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Multi-agent systems are everywhere right now.&lt;/p&gt;

&lt;p&gt;Planner agent. Executor agent. Critic agent. Formatter agent. Sometimes even a "manager" agent coordinating everything.&lt;/p&gt;

&lt;p&gt;The story is usually the same: if one LLM call can be useful, then several specialised agents working together should be more reliable and produce better results.&lt;/p&gt;

&lt;p&gt;But I'm not fully convinced.&lt;/p&gt;

&lt;p&gt;Not because multi-agent systems are useless. They can be powerful. I'm just not sure we are always clear about &lt;strong&gt;why we use them, and what trade-offs we introduce when we chain probabilistic systems together.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thinking of an Agent as a Function
&lt;/h2&gt;

&lt;p&gt;Let's simplify the discussion and treat an agent like a function.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;p&gt;f_0_llm_0_step_n(prompt[1..n], data, output_step_n-1)&lt;/p&gt;

&lt;p&gt;In plain English:&lt;/p&gt;

&lt;p&gt;An agent, running a specific model (say llm_0), performs step n using one or more prompts, some dynamic data (code snippets, documents, context), and the output of the previous run. It then produces a result.&lt;/p&gt;

&lt;p&gt;That result is passed to the next agent:&lt;/p&gt;

&lt;p&gt;f_1_llm_1_step_n(...)&lt;/p&gt;

&lt;p&gt;And so on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiel1p4hl5fhtptu482e0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiel1p4hl5fhtptu482e0.png" alt="Agents as composed functions" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we create a composition:&lt;/p&gt;

&lt;p&gt;f3(f2(f1(x)))&lt;/p&gt;

&lt;p&gt;Each f is powered by an LLM. And &lt;strong&gt;each LLM call is probabilistic.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Every LLM Call Can Be Wrong
&lt;/h2&gt;

&lt;p&gt;No matter how good the model is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can misunderstand the requirement.&lt;/li&gt;
&lt;li&gt;It can hallucinate details.&lt;/li&gt;
&lt;li&gt;It can omit constraints.&lt;/li&gt;
&lt;li&gt;It can be confidently wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we assume each step has some probability of being correct (call it a_i), then in a simple independent chain, overall correctness looks roughly like:&lt;/p&gt;

&lt;p&gt;a_total ≈ a1 × a2 × a3 × ...&lt;/p&gt;

&lt;p&gt;Even if each individual step is "pretty good", multiplying several steps together is not comforting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld9ew1t31ikt3kf0zm0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld9ew1t31ikt3kf0zm0s.png" alt="Probability compounding" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But I should be honest about what this model hides. The formula assumes errors are independent across steps. In practice, they're often not. Agents share the same context, sometimes the same model weights, and frequently the same blind spots. If agent 1 misunderstands an ambiguous requirement, agent 2, reading agent 1's output, will likely inherit that misunderstanding. &lt;strong&gt;Correlated failures can make things worse than the multiplicative model suggests&lt;/strong&gt;, because the "correction" you'd hope for from chaining doesn't materialise when all the agents are confused in the same direction.&lt;/p&gt;

&lt;p&gt;On the other hand, if agents are operating on genuinely different aspects of a problem, the correlation drops and you get closer to the independent case, which is actually more optimistic.&lt;/p&gt;

&lt;p&gt;The point is not that the formula is a precise model. The point is directional: &lt;strong&gt;chaining probabilistic transformations does not automatically improve reliability&lt;/strong&gt;, and in many setups it degrades it. The exact shape of that degradation depends on how correlated the failure modes are.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Yes, But Agents Can Correct Each Other"
&lt;/h2&gt;

&lt;p&gt;A fair counterargument is: this is too pessimistic.&lt;/p&gt;

&lt;p&gt;People will say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We use critic agents.&lt;/li&gt;
&lt;li&gt;We use voting.&lt;/li&gt;
&lt;li&gt;We do retries.&lt;/li&gt;
&lt;li&gt;We enforce JSON schemas.&lt;/li&gt;
&lt;li&gt;We run compilers and tests.&lt;/li&gt;
&lt;li&gt;We keep temperature low.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yes, these things change the math.&lt;/p&gt;

&lt;p&gt;If you add deterministic constraints between steps, you are no longer doing a blind probabilistic chain. You are building something closer to:&lt;/p&gt;

&lt;p&gt;LLM → deterministic constraint → LLM → deterministic constraint&lt;/p&gt;

&lt;p&gt;That is why agent workflows often work much better for code generation than for pure reasoning. A compiler or a test suite is a hard boundary. It can reject invalid outputs and force correction.&lt;/p&gt;

&lt;p&gt;So the argument is not "multi-agent is always bad".&lt;/p&gt;

&lt;p&gt;The real risk appears when we build &lt;strong&gt;deep chains without strong external anchors.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Problems That Look Like One
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feubqh32m8inm2835cc4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feubqh32m8inm2835cc4r.png" alt="Epistemic drift" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The issue I worry about most in deep chains is what I'd call epistemic drift. But when I try to pin it down, it splits into two distinct problems that need different solutions.&lt;/p&gt;

&lt;p&gt;The first is error accumulation. Each agent tends to assume the previous output is "good enough". It builds on it, improves it, adds structure. If agent 2 introduces a small wrong assumption, agent 3 doesn't question it. It elaborates on it. By agent 5, &lt;strong&gt;the wrong assumption is load-bearing and invisible.&lt;/strong&gt; This is a propagation problem, and the fix is intermediate validation: check facts, run tests, enforce constraints between steps.&lt;/p&gt;

&lt;p&gt;The second is confidence inflation. As the chain gets deeper, outputs become more organised. They sound more authoritative. They look more complete. But &lt;strong&gt;coherence is not the same as correctness.&lt;/strong&gt; A well-formatted, well-structured document can be built on a shaky premise and still read as though every claim was carefully verified. This is a calibration problem, and it's worth noting that it isn't unique to multi-agent systems — a single LLM call can also produce overconfident nonsense. But multi-agent chains make it worse, because each successive agent treats the previous output as settled ground rather than as probabilistic input.&lt;/p&gt;

&lt;p&gt;The distinction matters because people often propose critic agents or voting as the solution. Those help with error accumulation. &lt;strong&gt;They do very little for confidence inflation.&lt;/strong&gt; A critic agent reading a polished, internally consistent document has the same struggle a human reviewer does: the text doesn't signal where its weak points are.&lt;/p&gt;

&lt;p&gt;And in both cases, the deeper the chain, the harder it becomes to locate where things first went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging Becomes Hard
&lt;/h2&gt;

&lt;p&gt;With one LLM call, debugging is simple: inspect the prompt and output.&lt;/p&gt;

&lt;p&gt;With five agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent introduced the wrong assumption?&lt;/li&gt;
&lt;li&gt;Which agent "fixed" something that wasn't broken?&lt;/li&gt;
&lt;li&gt;Which step created the hallucinated constraint?&lt;/li&gt;
&lt;li&gt;Which retry changed the meaning?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multi-agent workflows increase the number of places where subtle divergence can happen. I think of it as &lt;strong&gt;increased epistemic surface area&lt;/strong&gt;: more surfaces where mistakes can stick.&lt;/p&gt;

&lt;p&gt;This matters in areas like architecture decisions, long-horizon planning, policy and compliance, regulated environments in finance or healthcare or infrastructure. In these contexts, a small drift can turn into an expensive mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Humans Are Also Probabilistic
&lt;/h2&gt;

&lt;p&gt;To be fair, humans are not deterministic either.&lt;/p&gt;

&lt;p&gt;Humans misunderstand specs. Humans propagate assumptions. Humans get tired, biased, distracted. You could model a human step as:&lt;/p&gt;

&lt;p&gt;h(context, bias, fatigue, memory)&lt;/p&gt;

&lt;p&gt;So the comparison is not "agents vs perfection". It's agent chains versus human chains. And sometimes multi-agent systems may be no worse than multi-human workflows.&lt;/p&gt;

&lt;p&gt;The strongest version of the counterargument goes further: multi-agent systems with critic loops are basically peer review, and peer review empirically reduces error rates. That's true. But there's a reason the analogy breaks down. Human peer reviewers bring genuinely independent perspectives. They have different training, different experiences, different biases. When a second engineer reviews your design, they might catch the thing you missed precisely because they think differently.&lt;/p&gt;

&lt;p&gt;LLM agents, even when given different system prompts, share the same training data, the same learned biases, the same blind spots. A "critic" agent running the same model as the "creator" agent is not an independent reviewer. &lt;strong&gt;It's closer to asking the same person to review their own work after taking a coffee break.&lt;/strong&gt; It might catch surface errors, but it's unlikely to challenge the deeper assumptions because it shares them.&lt;/p&gt;

&lt;p&gt;This doesn't mean multi-agent critique is worthless. It means the error reduction you get from it is probably smaller and less reliable than the error reduction you get from genuine human peer review, and we should set our expectations accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Multi-Agent Often Means Multi-Model
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xb1cfyfpat5lnqosnm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xb1cfyfpat5lnqosnm7.png" alt="Multi-agent often = multi-model cost routing" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is another reason multi-agent systems are popular, and it's not always about "better reasoning".&lt;/p&gt;

&lt;p&gt;It's cost.&lt;/p&gt;

&lt;p&gt;In practice, a lot of multi-agent pipelines are also multi-model pipelines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a cheap model for classification or routing&lt;/li&gt;
&lt;li&gt;a mid-tier model for extraction&lt;/li&gt;
&lt;li&gt;a strong (expensive) model for reasoning&lt;/li&gt;
&lt;li&gt;a cheap model again for formatting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when people say "agentic workflow", sometimes they actually mean: we split the work so we can run most steps on cheaper models.&lt;/p&gt;

&lt;p&gt;That's not a bad idea. It's rational.&lt;/p&gt;

&lt;p&gt;If you run everything on the strongest model, costs explode. So people route tasks.&lt;/p&gt;

&lt;p&gt;But this introduces a specific risk: the smaller, cheaper models often become gatekeepers. If a cheap model misclassifies a task as "simple", the expensive reasoning step might never run. Now the system is not optimising for correctness. &lt;strong&gt;It is optimising for cost, and correctness becomes a side effect.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I want to be precise here, because this is not inherently a flaw of multi-agent design. A well-built system can route uncertain inputs upward, using confidence thresholds, fallback paths, or escalation logic. The problem is that many systems don't. The default in most frameworks is to route based on classification alone, without a notion of "I'm not sure, send this to the bigger model." And when cost pressure is the main driver, the incentive is to keep things on the cheap path.&lt;/p&gt;

&lt;p&gt;The other issue with mixing models is that you're now mixing failure modes. Different models have different biases, different calibration, different hallucination patterns. You are no longer chaining one probabilistic system. You are chaining several different ones. That doesn't make the system inherently worse, but it does make behaviour less predictable and debugging harder. When something goes wrong in a multi-model pipeline, you're not just asking "what went wrong?", you're asking &lt;strong&gt;"which model's particular flavour of wrong caused this?"&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human Validation Problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0c4rozk0hmy7fvo8smb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0c4rozk0hmy7fvo8smb.png" alt="Validation economics / review paradox" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also an economic problem around validation.&lt;/p&gt;

&lt;p&gt;The obvious extremes are: validate every intermediate step (which destroys the automation benefit) or validate only the final output (which means rerunning the whole pipeline when it's wrong, and re-validating from scratch because stochastic outputs change between runs).&lt;/p&gt;

&lt;p&gt;Most production systems land somewhere in the middle. You identify high-risk steps and validate those. You let low-risk transformations run autonomously. You put hard checkpoints at the boundaries where errors would be most expensive.&lt;/p&gt;

&lt;p&gt;That middle ground is reasonable, and it works. But it's worth noticing what it implies: the value of the multi-agent system now depends entirely on how well you've identified where the risk concentrates. Get that wrong and you're either over-validating (killing the efficiency gains) or under-validating (letting errors through at the exact points that matter).&lt;/p&gt;

&lt;p&gt;In other words, &lt;strong&gt;agent workflows don't remove validation cost. They require you to be much more deliberate about where you spend it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When Do Multi-Agent Workflows Make Sense?
&lt;/h2&gt;

&lt;p&gt;In my view, multi-agent workflows make sense when they are constrained and anchored.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;each step has a clearly bounded responsibility&lt;/li&gt;
&lt;li&gt;deterministic validation exists between steps (tests, schema checks, compiler, policy engine)&lt;/li&gt;
&lt;li&gt;intermediate outputs have stable structure&lt;/li&gt;
&lt;li&gt;chain depth is limited&lt;/li&gt;
&lt;li&gt;retries are controlled and predictable&lt;/li&gt;
&lt;li&gt;there is traceability (you can see what changed and why)&lt;/li&gt;
&lt;li&gt;routing logic includes uncertainty-aware escalation, not just classification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that world, multi-agent can genuinely improve quality and reduce human workload.&lt;/p&gt;

&lt;p&gt;But without those constraints, &lt;strong&gt;adding agents can increase complexity faster than it increases correctness.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Question
&lt;/h2&gt;

&lt;p&gt;The real question is not "Are multi-agent systems good or bad?"&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we increasing reasoning depth, or just adding reasoning layers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes multi-agent systems create better output. Sometimes they create more confident output.&lt;/p&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;We've seen this pattern before in software engineering.&lt;/p&gt;

&lt;p&gt;More lines of code did not mean more value. More microservices did not automatically mean better architecture. More tokens do not necessarily mean more productivity.&lt;/p&gt;

&lt;p&gt;That last one is worth sitting with for a moment, because the industry consensus on microservices is instructive. We didn't conclude that microservices were wrong. We concluded that &lt;strong&gt;they require operational maturity to work&lt;/strong&gt; — good observability, clear service boundaries, robust deployment pipelines. Without that maturity, they made things worse. With it, they could be genuinely better than the monolith.&lt;/p&gt;

&lt;p&gt;I think multi-agent systems are at a similar inflection point. The pattern is not wrong. But it demands more rigour than most teams are currently applying. It demands deterministic anchors, good traceability, honest assessment of where errors concentrate, and a willingness to keep things simple when the constraints aren't there yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More agents do not necessarily mean more correctness.&lt;/strong&gt; But well-constrained agents, with strong validation boundaries and honest routing, &lt;strong&gt;can earn their complexity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The danger is in the middle: systems that look sophisticated, that sound confident, that cost less per token, &lt;strong&gt;while quietly amplifying the exact problems we wanted to solve.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I’m not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@ionionascu/are-multi-agent-llm-workflows-quietly-amplifying-mistakes-3f2200c1683a" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>genai</category>
      <category>softwareengineering</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Why Not One-Time-Use Banks (in Terraform)? Gen-AI Says: Maybe.</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Fri, 23 Jan 2026 10:49:27 +0000</pubDate>
      <link>https://forem.com/ionionascu/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-1ai3</link>
      <guid>https://forem.com/ionionascu/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-1ai3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7oh2p6dah34uqedrk7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7oh2p6dah34uqedrk7t.png" alt="A regulated bank, reimagined as a reproducible software system." width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You are the CEO of a Tier-1 bank (e.g. Jamie Dimon) who is also an elite systems programmer and architect (e.g. Linus Torvalds), with deep expertise in Java, distributed systems, and AWS.&lt;/p&gt;

&lt;p&gt;Design and build the minimum legally compliant software and AWS infrastructure required to launch a UK-regulated bank.&lt;/p&gt;

&lt;p&gt;Requirements&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud: AWS only&lt;/li&gt;
&lt;li&gt;Jurisdiction: UK&lt;/li&gt;
&lt;li&gt;Capabilities: hold funds, receive money, send money to other banks&lt;/li&gt;
&lt;li&gt;Currency: multi-currency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You must produce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core banking architecture (double-entry ledger, accounts, transactions)&lt;/li&gt;
&lt;li&gt;Executable AWS infrastructure templates (Terraform or CloudFormation)&lt;/li&gt;
&lt;li&gt;Java service skeletons for ledger and payments&lt;/li&gt;
&lt;li&gt;Security &amp;amp; compliance components (IAM, encryption, audit logs, AML/KYC hooks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clearly state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is fully implementable in software&lt;/li&gt;
&lt;li&gt;What requires regulators or external banking partners&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Be concrete and implementation-ready. Do not simplify regulatory constraints.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No fluff&lt;/strong&gt;. &lt;strong&gt;No “high-level overview”&lt;/strong&gt;. &lt;strong&gt;No hand-waving about “innovation”&lt;/strong&gt;. Just: design and build a bank, ideally with a cool Terraform template you could apply to your preferred cloud provider (or, if you’re feeling adventurous, maybe even your own Raspberry Pi cluster).&lt;/p&gt;

&lt;h2&gt;
  
  
  From as-a-Service to as-a-System
&lt;/h2&gt;

&lt;p&gt;We are already comfortable with &lt;strong&gt;platform-as-a-service&lt;/strong&gt;, &lt;strong&gt;infrastructure-as-a-service&lt;/strong&gt;, &lt;strong&gt;database-as-a-service&lt;/strong&gt;, and increasingly &lt;strong&gt;AI-as-a-service&lt;/strong&gt;. These models work because complexity is neatly &lt;strong&gt;encapsulated behind APIs, templates, and contracts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What’s changing with modern LLMs is the &lt;strong&gt;boundary of what can be encapsulated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You no longer just rent compute. You can ask for entire systems, described in natural language and emitted as infrastructure code, service skeletons, and architectural decisions.&lt;/p&gt;

&lt;p&gt;At that point, the “service” is no longer just a hosted product. It becomes a &lt;strong&gt;reproducible system blueprint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is the mental leap behind the phrase:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bank-as-a-Service&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not a Stripe-style API wrapper.&lt;br&gt;
Not a fintech middleware vendor.&lt;/p&gt;

&lt;p&gt;But a design-complete, regulation-aware, infrastructure-ready banking system, generated from a prompt.&lt;/p&gt;

&lt;p&gt;With Terraform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0qd1r1xpxk7kmcbp9nv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0qd1r1xpxk7kmcbp9nv.png" alt="From institution to system: when a bank becomes a reproducible blueprint." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A short personal example
&lt;/h2&gt;

&lt;p&gt;This realisation didn’t start with banks for me.&lt;/p&gt;

&lt;p&gt;I’m currently working on an application called &lt;a href="https://apps.apple.com/gb/app/medetra/id6751812151" rel="noopener noreferrer"&gt;MedEtra&lt;/a&gt;. Recently, I wanted to run a small survey to explore a few product ideas.&lt;/p&gt;

&lt;p&gt;The traditional route would be obvious:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pick a survey-as-a-service platform (or something ending in “Forms”)&lt;/li&gt;
&lt;li&gt;configure questions&lt;/li&gt;
&lt;li&gt;export results&lt;/li&gt;
&lt;li&gt;integrate storage later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, I went to a Gen-AI coding model and simply asked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;here are the questions&lt;/li&gt;
&lt;li&gt;suggest improvements&lt;/li&gt;
&lt;li&gt;target platforms: web + mobile&lt;/li&gt;
&lt;li&gt;data storage: my own backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was it.&lt;/p&gt;

&lt;p&gt;The model generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the survey structure&lt;/li&gt;
&lt;li&gt;validation rules&lt;/li&gt;
&lt;li&gt;storage schema&lt;/li&gt;
&lt;li&gt;deployment-ready code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, it became very clear to me that &lt;strong&gt;entire categories of “-as-a-service” businesses are exposed&lt;/strong&gt; — not because they are bad products, but because they are thin abstractions over logic that can now be generated on demand.&lt;/p&gt;

&lt;p&gt;Banking is obviously orders of magnitude harder.&lt;/p&gt;

&lt;p&gt;But the direction of travel is the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why banks-as-a-service is plausible, not imminent
&lt;/h2&gt;

&lt;p&gt;Let’s be honest. The technology is &lt;strong&gt;not fully there yet&lt;/strong&gt;. The regulatory burden is &lt;strong&gt;non-negotiable&lt;/strong&gt;. And no LLM today can safely operate money movement autonomously.&lt;/p&gt;

&lt;p&gt;But that’s not the point. Cryptocurrencies, stablecoins, and virtual cards have already demonstrated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;demand for programmable money&lt;/li&gt;
&lt;li&gt;appetite for alternative rails&lt;/li&gt;
&lt;li&gt;willingness to trust software with value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a sense, this is not a revolution — it’s an &lt;strong&gt;extension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;virtual cards&lt;/li&gt;
&lt;li&gt;embedded finance&lt;/li&gt;
&lt;li&gt;ledger APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;full banking systems as generated artefacts&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference is scale and accountability, not principle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond banks: Facebook-as-a-Service?
&lt;/h2&gt;

&lt;p&gt;Once you accept the premise, the examples get uncomfortable.&lt;/p&gt;

&lt;p&gt;Why not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facebook-as-a-service?&lt;/li&gt;
&lt;li&gt;CRM-as-a-system?&lt;/li&gt;
&lt;li&gt;Government-forms-as-code?&lt;/li&gt;
&lt;li&gt;School-management-as-templates?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a platform’s value is primarily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflow logic&lt;/li&gt;
&lt;li&gt;schema design&lt;/li&gt;
&lt;li&gt;UI conventions&lt;/li&gt;
&lt;li&gt;integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then Gen-AI can increasingly generate the platform itself.&lt;/p&gt;

&lt;p&gt;Not host it.&lt;br&gt;
Not brand it.&lt;br&gt;
Generate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable conclusion
&lt;/h2&gt;

&lt;p&gt;Gen-AI is not just automating tasks. It is &lt;strong&gt;commoditising system design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The differentiator is shifting from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;who built the software&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;who operates it&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who is accountable&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who holds the licence&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;who carries the risk&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In banking, that last point is everything.&lt;/p&gt;

&lt;p&gt;And that’s why the prompt matters.&lt;/p&gt;

&lt;p&gt;Not because we can launch a bank with Terraform tomorrow — but because we are getting closer to a world where &lt;strong&gt;the hardest part of building institutions is no longer the software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that opens up a wide range of new opportunities.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If this resonates, I suspect many “-as-a-service” business models will need to rethink what, exactly, they are selling.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I’m not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/ai-in-plain-english/why-not-one-time-use-banks-in-terraform-gen-ai-says-maybe-05decd7ca749" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>genai</category>
      <category>systemdesign</category>
      <category>architecture</category>
      <category>cloud</category>
    </item>
    <item>
      <title>The Return of Assembly: When LLMs No Longer Need High-Level Languages</title>
      <dc:creator>Ion</dc:creator>
      <pubDate>Wed, 22 Oct 2025 12:30:14 +0000</pubDate>
      <link>https://forem.com/ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-1dak</link>
      <guid>https://forem.com/ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-1dak</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34zr8yzhj83f3w2r4xas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34zr8yzhj83f3w2r4xas.png" alt="AI-generated illustration (via ChatGPT) representing the idea of large language models generating assembly code directly from plain English." width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people in IT have at least heard of assembly language. Some even saw it during university - just enough to know it exists, but not enough to use it for anything real.&lt;/p&gt;

&lt;p&gt;Assembly used to be the secret behind high-performance code. Games like &lt;strong&gt;Quake&lt;/strong&gt;, graphics engines, and device drivers often had big chunks written in assembly for one simple reason: &lt;strong&gt;speed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But times changed. Modern developers rarely touch assembly anymore, and for good reasons. Until recently, it simply didn't make sense for most projects.&lt;/p&gt;

&lt;p&gt;Well, at least, that's what I thought - until I tried something on my Mac a few days ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Assembly Disappeared
&lt;/h2&gt;

&lt;p&gt;Assembly slowly vanished from mainstream software development because it was too much work for humans to handle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's &lt;strong&gt;not portable&lt;/strong&gt; - an assembly routine that runs on x86 won't work on ARM, RISC-V, or a GPU.&lt;/li&gt;
&lt;li&gt;It's &lt;strong&gt;not maintainable&lt;/strong&gt; - every line depends on the quirks of a specific CPU.&lt;/li&gt;
&lt;li&gt;It's &lt;strong&gt;also not forgiving&lt;/strong&gt; - one wrong instruction and you crash the process or corrupt memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Higher-level languages like C, Java, or Python fixed that. They gave us portability, readability, and safety. We stopped thinking about registers and flags, and started thinking about business logic.&lt;/p&gt;

&lt;p&gt;Compilers got so good that we forgot there was assembly underneath. For human developers, this was a big win. For LLMs, though, those constraints don't really apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Humans Have Limits. LLMs Don't - at Least Not the Same Ones
&lt;/h2&gt;

&lt;p&gt;Humans forget things. We can't hold every detail of a large project in our head. That's why complex systems end up consuming too much memory, leaking resources, or deadlocking.&lt;/p&gt;

&lt;p&gt;LLMs, on the other hand, can "see" entire codebases at once. With enough context tokens, they can process hundreds of files, reason about dependencies, and never lose focus.&lt;/p&gt;

&lt;p&gt;So I started thinking: if an LLM can understand requirements directly in English, &lt;strong&gt;why do we still need to go through a high-level programming language at all?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why not just ask the model to write assembly code directly for the target hardware?&lt;/p&gt;

&lt;h2&gt;
  
  
  From English to Assembly on My Mac
&lt;/h2&gt;

&lt;p&gt;Each CPU architecture - x86, ARM, RISC-V, GPUs - has its own instruction set. But that's not really a problem anymore. You can simply be explicit in your prompt.&lt;/p&gt;

&lt;p&gt;In my case, I told Copilot something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Target Platform&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Hardware**&lt;/span&gt;: MacBook Pro 16-inch (November 2024)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Processor**&lt;/span&gt;: Apple M4 Max (ARM64 architecture)
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Operating System**&lt;/span&gt;: macOS
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Execution Environment**&lt;/span&gt;: Terminal applications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No compilers, no C, no libraries. Just plain English. Copilot produced a short, valid assembly routine for my Mac. Then I asked it to write a test harness to verify it. It chose Python automatically, wrote the code to load and call the routine, and checked that &lt;code&gt;3 + 5&lt;/code&gt; returned &lt;code&gt;8&lt;/code&gt;. It worked.&lt;/p&gt;

&lt;p&gt;It was simple - just adding two numbers - but it &lt;strong&gt;proved the point&lt;/strong&gt;: I didn't need to know the registers, calling conventions, or even the assembler syntax. The AI handled all of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Assembly Might Make Sense Again
&lt;/h2&gt;

&lt;p&gt;For humans, assembly was too low-level to manage. For LLMs, it's just another language - no harder than Python or JavaScript.&lt;/p&gt;

&lt;p&gt;They could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate code directly optimised for the target CPU or GPU.&lt;/li&gt;
&lt;li&gt;Adapt automatically to architecture differences.&lt;/li&gt;
&lt;li&gt;Explore micro-optimisations that compilers might miss.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Generate an ARM64 routine for matrix multiplication optimised for Apple's M-series cache layout."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The LLM could write it, benchmark it, refine it, and repeat - all automatically. That's something no human could realistically do across multiple hardware targets.&lt;/p&gt;

&lt;p&gt;Of course, there are risks. LLM-generated assembly might not be deterministic or reproducible. It may fail silently or produce slightly different code for the same request. And debugging machine code generated by a neural network sounds like a nightmare.&lt;/p&gt;

&lt;p&gt;But then again, we already trust compilers we don't fully understand. This is just one level deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements in Plain English
&lt;/h2&gt;

&lt;p&gt;One of the most exciting parts of all this is how &lt;strong&gt;LLMs turn requirements into code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's like Behaviour-Driven Development (BDD), but without the intermediate steps. You describe what you want:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The function should return the sum of two integers and store the result in memory."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The LLM translates that into assembly, or C, or Python - whatever fits the goal - and can even test it immediately. In theory, product managers could write requirements that are executable from day one, without developers writing scaffolding or boilerplate.&lt;/p&gt;

&lt;p&gt;Languages would become more like intermediate representations - still useful for humans, but optional for machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;Here's where I think this could go in the next few years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMs trained per architecture&lt;/strong&gt; - ARM, x86, RISC-V, CUDA, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-driven compilers&lt;/strong&gt; - translating English or pseudocode straight into optimised machine code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic debugging&lt;/strong&gt; - where you ask "why is this logic wrong?" instead of inspecting registers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that happens, the boundaries between &lt;strong&gt;design&lt;/strong&gt;, &lt;strong&gt;coding&lt;/strong&gt;, and &lt;strong&gt;compiling&lt;/strong&gt; could blur completely. Developers will focus on describing intent, not syntax. LLMs will handle the low-level reality. And maybe, just maybe, &lt;strong&gt;assembly will make sense again&lt;/strong&gt; - not because we understand it better, but because our tools finally do.&lt;/p&gt;




&lt;p&gt;If you'd like to see the tiny "add two numbers" experiment I mentioned, I've shared it on GitHub: github.com/ionionascu/llm-to-assembly&lt;/p&gt;

&lt;p&gt;This is not a production-ready project - it's a simple proof of concept. The code focuses only on the happy path and is not designed to be fault-tolerant or cover all possible test cases. Invalid inputs or edge conditions may cause segmentation faults or crashes, and that's expected.The goal was never to build robust software, but to explore whether an LLM could generate functional assembly code directly from plain English.&lt;/p&gt;

&lt;p&gt;TL;DR: This project isn't about "vibe coding" or skipping engineering discipline. It's a small, controlled experiment meant to explore what happens when large language models can reason directly at the hardware level - not a suggestion that we should replace careful software design with AI prompts.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Note: As I'm not a native English speaker, I used ChatGPT to review and refine the language of this article while keeping my original tone and ideas.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@ionionascu/the-return-of-assembly-when-llms-no-longer-need-high-level-languages-79bc43c0822c" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>assembly</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
