<?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>Keavi writing</title>
    <link>https://keavi.app/blog/</link>
    <atom:link href="https://keavi.app/blog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Essays and research from Keavi on building software with AI agents, with the numbers behind them.</description>
    <language>en-us</language>
    <lastBuildDate>Sat, 07 Nov 2026 12:00:00 GMT</lastBuildDate>
    <item>
      <title>Your app already has a voice interface. It just can't hear yet.</title>
      <link>https://keavi.app/blog/voice-permeable-interfaces/</link>
      <guid isPermaLink="true">https://keavi.app/blog/voice-permeable-interfaces/</guid>
      <pubDate>Sat, 07 Nov 2026 12:00:00 GMT</pubDate>
      <dc:creator>Jon Yoder</dc:creator>
      <description>You don't need a new interface or a chat tab. The screens you already have can learn to listen. We've started calling that voice-permeable.</description>
      <category>voice-permeable</category>
    </item>
    <item>
      <title>The rule that didn't hold</title>
      <link>https://keavi.app/blog/the-rule-that-didnt-hold/</link>
      <guid isPermaLink="true">https://keavi.app/blog/the-rule-that-didnt-hold/</guid>
      <pubDate>Tue, 03 Nov 2026 12:00:00 GMT</pubDate>
      <dc:creator>Jon Yoder</dc:creator>
      <description>My long Claude Code sessions kept running past the handoff rule I pasted into them, so I built Stu. My cost per PR then fell by three quarters. Then I measured how much of that was Stu.</description>
      <category>stu</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
