<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on oceanheart.ai</title>
    <link>https://www.oceanheart.ai/tags/python/</link>
    <description>Recent content in Python on oceanheart.ai</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.oceanheart.ai/tags/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Sortie</title>
      <link>https://www.oceanheart.ai/projects/sortie/</link>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://www.oceanheart.ai/projects/sortie/</guid>
      <description>&lt;a class=&#34;claude-coach&#34; href=&#34;https://claude.ai/new?q=Read&amp;#43;https%3A%2F%2Fwww.oceanheart.ai%2Fprojects%2Fsortie%2F&amp;#43;and&amp;#43;discuss&amp;#43;adversarial&amp;#43;multi-model&amp;#43;code&amp;#43;review&amp;#43;with&amp;#43;me%3A&amp;#43;convergence&amp;#43;analysis%2C&amp;#43;severity&amp;#43;gating%2C&amp;#43;and&amp;#43;where&amp;#43;single-reviewer&amp;#43;blind&amp;#43;spots&amp;#43;survive.&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; aria-label=&#34;Open a prepared Claude conversation&#34;&gt;&#xA;  &lt;span class=&#34;claude-coach-mark&#34; aria-hidden=&#34;true&#34;&gt;&amp;#10035;&lt;/span&gt;&#xA;  &lt;span class=&#34;claude-coach-copy&#34;&gt;&#xA;    &lt;span class=&#34;claude-coach-eyebrow&#34;&gt;Claude coach&lt;/span&gt;&#xA;    &lt;strong class=&#34;claude-coach-title&#34;&gt;Interrogate this architecture&lt;/strong&gt;&#xA;    &lt;span class=&#34;claude-coach-description&#34;&gt;Open a Claude conversation primed to discuss adversarial multi-model review: convergence, severity gating, and surviving blind spots.&lt;/span&gt;&#xA;    &lt;span class=&#34;claude-coach-action&#34;&gt;Discuss it with Claude &lt;span aria-hidden=&#34;true&#34;&gt;&amp;#8599;&lt;/span&gt;&lt;/span&gt;&#xA;  &lt;/span&gt;&#xA;&lt;/a&gt;&#xA;&#xA;&lt;h2 id=&#34;what-it-is&#34;&gt;What it is&lt;/h2&gt;&#xA;&lt;p&gt;An async adversarial code review system for multi-agent development workflows. Sortie runs a configurable roster of language models (Claude, Codex, Gemini) against a worker&amp;rsquo;s diff in parallel, synthesises their findings through a 4th-model debrief invocation, triages by severity, and gates worktree merges. All findings, dispositions, and cost data are captured in a structured ledger.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Halo</title>
      <link>https://www.oceanheart.ai/projects/halo/</link>
      <pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.oceanheart.ai/projects/halo/</guid>
      <description>&lt;h2 id=&#34;what-it-is&#34;&gt;What it is&lt;/h2&gt;&#xA;&lt;p&gt;A personal engineering tool layer. Halo is a set of small CLI modules, work tracking, memory, briefing synthesis, email triage, journaling, agent orchestration, each with an explicit command surface and its own isolated store. The design rule is that a human and an agent reach for the same tool the same way: there is no separate &amp;ldquo;agent API&amp;rdquo; bolted on after the fact, because the CLI &lt;em&gt;is&lt;/em&gt; the API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI-Augmented Photo Curation Pipeline</title>
      <link>https://www.oceanheart.ai/blog/2026-04-05-photo-curation-pipeline/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.oceanheart.ai/blog/2026-04-05-photo-curation-pipeline/</guid>
      <description>&lt;p&gt;My Photos library had become a junk drawer. 4,691 items spanning six years: travel photos mixed with screenshots of WiFi passwords, AI-generated art alongside blurry pocket shots, receipts next to family portraits. Apple&amp;rsquo;s &amp;ldquo;Memories&amp;rdquo; feature kept surfacing a screenshot of a Slack thread next to a sunset in Portugal.&lt;/p&gt;&#xA;&lt;p&gt;I needed to &lt;em&gt;understand&lt;/em&gt; what I had, sort it and flag the obvious waste. Manually reviewing 4,700 photos would take days, while throwing every image at an LLM vision API would cost ~$14 and take hours. Much of that spend would go on screenshots and duplicates that metadata alone could catch.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
