<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Brendan Kelly, Applied AI</title>
  <subtitle>A 15-season series on applied AI, structured like a TV series: technical seasons on how AI works in production, and leadership seasons on how to decide, organise, and govern it.</subtitle>
  <link href="https://brendankellyai.github.io/feed.xml" rel="self"/>
  <link href="https://brendankellyai.github.io/"/>
  <id>https://brendankellyai.github.io/</id>
  <updated>2026-10-18T00:00:00+00:00</updated>
  <author><name>Brendan Kelly</name></author>
  <entry>
    <title>S2 E2, Your first RAG system</title>
    <link href="https://brendankellyai.github.io/episodes/s2-e2-first-rag-system/"/>
    <id>https://brendankellyai.github.io/episodes/s2-e2-first-rag-system/</id>
    <published>2026-10-18T00:00:00+00:00</published>
    <updated>2026-10-18T00:00:00+00:00</updated>
    <summary>A complete RAG system with the simplest choice at every stage, run on all 520 test questions, shows most wrong answers never reached the model.</summary>
    <content type="text">Build the simplest complete pipeline and measure it before tuning any stage.</content>
  </entry>
  <entry>
    <title>S2 E1, Why retrieval exists</title>
    <link href="https://brendankellyai.github.io/episodes/s2-e1-why-retrieval-exists/"/>
    <id>https://brendankellyai.github.io/episodes/s2-e1-why-retrieval-exists/</id>
    <published>2026-10-17T00:00:00+00:00</published>
    <updated>2026-10-17T00:00:00+00:00</updated>
    <summary>Retrieval hands the model the right passage at the moment of the question, which fixes stale and private facts but moves the failure to search.</summary>
    <content type="text">Use retrieval when the answer lives in your own data. Then log what it retrieved, and measure search and answer separately.</content>
  </entry>
  <entry>
    <title>S2 E0, Season 2: Retrieval and RAG</title>
    <link href="https://brendankellyai.github.io/episodes/s2-e0-season-intro/"/>
    <id>https://brendankellyai.github.io/episodes/s2-e0-season-intro/</id>
    <published>2026-10-16T00:00:00+00:00</published>
    <updated>2026-10-16T00:00:00+00:00</updated>
    <summary>Season introduction: build an assistant that answers from your own documents, then measure every stage until you know why it is right and why it is wrong.</summary>
    <content type="text">Build the simplest complete system. Measure it. Change one stage at a time, and keep only what clears a bar set in advance.</content>
  </entry>
  <entry>
    <title>S1 E12, Season 1 recap</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e12-recap/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e12-recap/</id>
    <published>2026-10-09T00:00:00+00:00</published>
    <updated>2026-10-09T00:00:00+00:00</updated>
    <summary>Eleven episodes on how LLMs work in one place: the numbers that surprised, the eleven rules worth keeping, and one rule for the whole season.</summary>
    <content type="text">Send the model what it needs, verify what it returns, and trust a measured rate over any single answer.</content>
  </entry>
  <entry>
    <title>S1 E11, When is a reasoning model worth the cost?</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e11-when-is-reasoning-worth-the-cost/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e11-when-is-reasoning-worth-the-cost/</id>
    <published>2026-10-08T00:00:00+00:00</published>
    <updated>2026-10-08T00:00:00+00:00</updated>
    <summary>Reasoning pays only on tasks that hold several steps in mind at once, so keep it low by default and prove each increase with a paired test.</summary>
    <content type="text">Keep reasoning at its lowest setting by default. Turn it up per task, only where a paired test on your own items shows it earns its tokens and seconds.</content>
  </entry>
  <entry>
    <title>S1 E10, Field note: reasoning versus standard</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e10-reasoning-vs-standard/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e10-reasoning-vs-standard/</id>
    <published>2026-10-07T00:00:00+00:00</published>
    <updated>2026-10-07T00:00:00+00:00</updated>
    <summary>Across three providers and 720 calls, high reasoning gained about 20 points on multi-step tasks and nothing on lookups or simple sums, mostly from one model.</summary>
    <content type="text">Turn reasoning on for problems that need several steps held in mind at once. Leave it off for lookups and simple sums, and pilot before you commit.</content>
  </entry>
  <entry>
    <title>S1 E9, Hallucination</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e9-hallucination/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e9-hallucination/</id>
    <published>2026-10-06T00:00:00+00:00</published>
    <updated>2026-10-06T00:00:00+00:00</updated>
    <summary>Fluent answers can be confidently wrong, and the only fabrication in this test came from the keyword scoring, not the model, so check error rates by reading answers.</summary>
    <content type="text">Never ship an answer you cannot trace: ground it in a source, let the model say it does not know, and measure the error rate by reading, not just by keyword.</content>
  </entry>
  <entry>
    <title>S1 E8, Sampling</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e8-sampling/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e8-sampling/</id>
    <published>2026-10-05T00:00:00+00:00</published>
    <updated>2026-10-05T00:00:00+00:00</updated>
    <summary>Sampling draws each token from the model&#39;s odds, so settings like temperature trade consistency for variety, and a feature must be judged by its rate across many runs.</summary>
    <content type="text">Set sampling for the task, and judge a model by its rate across many runs, never by one answer.</content>
  </entry>
  <entry>
    <title>S1 E7, Field note: lost in the middle</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e7-lost-in-the-middle/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e7-lost-in-the-middle/</id>
    <published>2026-10-04T00:00:00+00:00</published>
    <updated>2026-10-04T00:00:00+00:00</updated>
    <summary>Across three current models and 270 calls, where a fact sat in documents up to 64,000 tokens made no difference to finding it, unlike the 2023 finding.</summary>
    <content type="text">Stop arranging long prompts by position for simple lookups. Test the harder shapes of your own task before trusting a long context.</content>
  </entry>
  <entry>
    <title>S1 E6, Context windows</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e6-context-windows/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e6-context-windows/</id>
    <published>2026-10-03T00:00:00+00:00</published>
    <updated>2026-10-03T00:00:00+00:00</updated>
    <summary>The context window is one shared budget for instructions, history, documents, and the answer, and what falls past its edge is often dropped without any error.</summary>
    <content type="text">Treat the context window as a budget: count what you send, reserve room for the answer, and test at your real size.</content>
  </entry>
  <entry>
    <title>S1 E5, The transformer</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e5-the-transformer/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e5-the-transformer/</id>
    <published>2026-10-02T00:00:00+00:00</published>
    <updated>2026-10-02T00:00:00+00:00</updated>
    <summary>The transformer stacks attention and feed-forward layers over token embeddings, and its shape explains why writing took 22 times as long per token as reading.</summary>
    <content type="text">Choose the smallest model that passes your own tests, and budget latency on output length.</content>
  </entry>
  <entry>
    <title>S1 E4, Attention</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e4-attention/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e4-attention/</id>
    <published>2026-10-01T00:00:00+00:00</published>
    <updated>2026-10-01T00:00:00+00:00</updated>
    <summary>Attention lets every token weigh the tokens before it, so meaning comes from context, but every extra token competes for that attention and adds cost.</summary>
    <content type="text">Send the model what it needs, not everything you have: every extra token competes for attention and adds cost.</content>
  </entry>
  <entry>
    <title>S1 E3, Embeddings</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e3-embeddings/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e3-embeddings/</id>
    <published>2026-09-30T00:00:00+00:00</published>
    <updated>2026-09-30T00:00:00+00:00</updated>
    <summary>Embeddings place text as coordinates on a map of meaning, but similar is not the same as relevant, so treat your embedding model as a versioned dependency.</summary>
    <content type="text">Treat the embedding model as a versioned dependency: pin it, test it on your own queries, and re-embed when it changes.</content>
  </entry>
  <entry>
    <title>S1 E2, Tokens</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e2-tokens/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e2-tokens/</id>
    <published>2026-09-29T00:00:00+00:00</published>
    <updated>2026-09-29T00:00:00+00:00</updated>
    <summary>Tokens are the unit every model reads, writes, and bills in, and one sentence can need up to 9.2 times as many tokens in Amharic as in English.</summary>
    <content type="text">Budget, limit, and price in tokens, measured on your own traffic in every language you serve.</content>
  </entry>
  <entry>
    <title>S1 E1, One token at a time</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e1-one-token-at-a-time/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e1-one-token-at-a-time/</id>
    <published>2026-09-28T00:00:00+00:00</published>
    <updated>2026-09-28T00:00:00+00:00</updated>
    <summary>What a large language model (LLM) actually does, and why every call starts fresh.</summary>
    <content type="text">Treat every model call as stateless and probabilistic: send the context it needs, and verify what it returns.</content>
  </entry>
  <entry>
    <title>S1 E0, Season 1: How LLMs work</title>
    <link href="https://brendankellyai.github.io/episodes/s1-e0-season-intro/"/>
    <id>https://brendankellyai.github.io/episodes/s1-e0-season-intro/</id>
    <published>2026-09-27T00:00:00+00:00</published>
    <updated>2026-09-27T00:00:00+00:00</updated>
    <summary>Season introduction, to outline what the upcoming episodes will cover; What large language models (LLMs) actually do, from the first token to reasoning.</summary>
  </entry>
</feed>