<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Todd Schiller - AI</title><link href="https://toddschiller.com/" rel="alternate"></link><link href="https://toddschiller.com/feeds/ai.atom.xml" rel="self"></link><id>https://toddschiller.com/</id><updated>2026-08-12T00:00:00-04:00</updated><subtitle>Human ✘ Artificial Intelligence</subtitle><entry><title>Agentic Software Factories: Parallel agents diverge. Plan to converge.</title><link href="https://toddschiller.com/blog/parallel-agents-diverge-converge.html" rel="alternate"></link><published>2026-08-12T00:00:00-04:00</published><updated>2026-08-12T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-08-12:/blog/parallel-agents-diverge-converge.html</id><summary type="html">Running coding agents in parallel is closer to a team of different developers than one developer multitasking, so plan a deliberate converge phase after the diverge phase.</summary><content type="html">&lt;p&gt;Running coding agents in parallel is less like one developer juggling features
and more like a team of different developers building at the same time
independently.&lt;/p&gt;
&lt;p&gt;Even when the agents share the same system prompt and the same skills, they
diverge fast. LLMs are stochastic, and the divergence compounds with every
decision.&lt;/p&gt;
&lt;p&gt;Spec-Driven Development and Domain-Driven Design help. They give each agent a
global view of what the others are doing and a shared, ubiquitous language. But
in practice, compounding drift erodes coherence fast.&lt;/p&gt;
&lt;p&gt;The only way to keep your codebase sane is to plan deliberate converge phases.&lt;/p&gt;
&lt;p&gt;Here are my tips for diverge-converge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Put new features behind a feature flag so agents can iterate on the
intermediate result cleanly&lt;/li&gt;
&lt;li&gt;Define protocols and interfaces first to contain where drift can happen&lt;/li&gt;
&lt;li&gt;Use static analysis and linters to bound architectural and stylistic drift&lt;/li&gt;
&lt;li&gt;Use a skill to update your specs and ubiquitous language based on the gaps the
diverge phase exposed&lt;/li&gt;
&lt;li&gt;Use a skill to identify and prioritize the tech debt the diverge phase
introduced&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What's your approach to building features in parallel with coding agents?&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;figure&gt;
  &lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/images/parallel-agents-diverge-converge/parallel-agents-diverge-converge-landscape-2400.png" alt="Whiteboard-style diagram titled Parallel agents drift, plan to converge. From a single Shared start node (same prompt, specs, skills), three colored paths labeled agent 1, agent 2, and agent 3 fan outward through a pink Diverge zone where drift compounds with every decision, reach their widest spread, then are pulled back together through a green Converge zone into one Coherent result node. A footer reads: converge with feature flags, interfaces first, linters, and a spec and debt refresh."&gt;
  &lt;figcaption&gt;Parallel coding agents fan out during the diverge phase, then a deliberate converge phase pulls them back into a coherent result.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="coding agents"></category><category term="spec-driven development"></category><category term="domain-driven design"></category><category term="parallelism"></category></entry><entry><title>Loop Engineering: always be compounding</title><link href="https://toddschiller.com/blog/loop-engineering-compounding.html" rel="alternate"></link><published>2026-07-07T00:00:00-04:00</published><updated>2026-07-07T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-07-07:/blog/loop-engineering-compounding.html</id><summary type="html">Loop engineering for AI agents should raise the floor on each iteration by creating tools and correcting instructions.</summary><content type="html">&lt;p&gt;Loop engineering for AI agents should be about compounding, not repetition.&lt;/p&gt;
&lt;p&gt;A weak work loop does the same thing every pass: trigger, execute, review.&lt;/p&gt;
&lt;p&gt;A strong work loop leaves the system better than it found it.&lt;/p&gt;
&lt;p&gt;Sure, many harnesses now automatically improve via agent memory. However, that's
leaving your work to chance: memory creation is inconsistent, and false
memories degrade performance.&lt;/p&gt;
&lt;p&gt;The better way is to edit the loop itself:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skills/Instructions: conventions, assumptions, examples, failure modes&lt;/li&gt;
&lt;li&gt;Tools: scripts, workflows, fixtures, test harnesses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With each run, the loop becomes more capable, more reliable, and more
cost-effective.&lt;/p&gt;
&lt;p&gt;What are your go-to strategies for compounding?&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/images/loop-engineering-compounding/loop-engineering-compounding-landscape-ai-whiteboard-2400.png" alt="Whiteboard-style diagram titled Agent loops should compound. The left panel shows a repeating routine that starts from the same place each time: Trigger, Execute, Review. The right panel shows a compounding routine where loop 1, loop 2, and loop 3 climb upward on a system-improves axis, with orange step-up arrows labeled Refine and gains labeled Task done, plus instruction, and plus tool."&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="loop engineering"></category><category term="tools"></category><category term="instructions"></category></entry><entry><title>Beliefs hitchhike like genes</title><link href="https://toddschiller.com/blog/belief-phylogenetics-artifact.html" rel="alternate"></link><published>2026-06-09T00:00:00-04:00</published><updated>2026-06-09T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-06-09:/blog/belief-phylogenetics-artifact.html</id><summary type="html">A new explorer that clusters public thinkers by the genome of their beliefs, inspired by genetic hitchhiking.</summary><content type="html">&lt;p&gt;In high school, I spent a summer in a computational biology lab measuring
genetic hitchhiking in &lt;em&gt;S. cerevisiae&lt;/em&gt; (brewer's yeast). Hitchhiking explains
how a useless or mildly harmful trait spreads through a population by
chance, riding along with a beneficial one sitting next to it on the chromosome.&lt;/p&gt;
&lt;p&gt;The concept came back to me as podcasting blew up. For example, Jocko Willink
and Wim Hof both rode Tim Ferriss appearances into their own followings. And
they brought their adjacent beliefs and quirks along for the ride.&lt;/p&gt;
&lt;p&gt;I built an explorer to test the idea. You can cluster public thinkers by the
&amp;quot;genome&amp;quot; of their stated positions, then look at what odd traits travel with
the salient ones.&lt;/p&gt;
&lt;p&gt;Three datasets to start: AI thought leaders, the wellness/podcast circuit,
and climate commentators.&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;figure&gt;
  &lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/images/belief-phylogenetics-artifact/genome-grid.png" alt="Tree-and-trait genome view of 12 AI thought leaders (Yudkowsky, Bostrom, Hinton, Bengio, Amodei, Sutskever, Altman, Andreessen, Beff Jezos, Marcus, Hassabis, LeCun) clustered by their stated positions across six trait categories: existential risk, capability/timeline, mind/consciousness, policy/governance, alignment approach, and worldview. A doomer-rationalist clade groups at the top, lab-pragmatists and e/acc-adjacent thinkers cluster in the middle, and LLM-skeptics group at the bottom."&gt;
  &lt;figcaption&gt;Hierarchical clustering of AI thought leaders by the "genome" of their stated positions.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
&lt;p&gt;&lt;a href="https://toddschiller.com/artifacts/belief-phylogenetics/#dataset=ai"&gt;toddschiller.com/artifacts/belief-phylogenetics/#dataset=ai&lt;/a&gt;&lt;/p&gt;
</content><category term="AI"></category><category term="belief phylogenetics"></category><category term="AI"></category><category term="podcasting"></category><category term="computational biology"></category><category term="artifacts"></category></entry><entry><title>agent-browser-shield is live on Product Hunt</title><link href="https://toddschiller.com/blog/agent-browser-shield-product-hunt.html" rel="alternate"></link><published>2026-06-05T00:00:00-04:00</published><updated>2026-06-05T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-06-05:/blog/agent-browser-shield-product-hunt.html</id><summary type="html">agent-browser-shield, a source-available defense layer for AI agents in the browser, is on Product Hunt today.</summary><content type="html">&lt;p&gt;agent-browser-shield is live on Product Hunt today.&lt;/p&gt;
&lt;p&gt;Your AI agent that lands on a fresh page is one prompt injection away from
leaking credentials, one dark pattern away from buying the wrong thing, and
one fake review away from a bad recommendation.&lt;/p&gt;
&lt;p&gt;agent-browser-shield sits between the browser and the agent and blocks all
three. Source-available. Ships as a Chrome extension and an OpenClaw skill.&lt;/p&gt;
&lt;p&gt;If you've been following the build, today's the day to upvote:&lt;/p&gt;
&lt;p&gt;👉 &lt;a href="https://producthunt.com/products/agent-browser-shield"&gt;https://producthunt.com/products/agent-browser-shield&lt;/a&gt;&lt;/p&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="browser security"></category><category term="prompt injection"></category><category term="PixieBrix"></category><category term="Product Hunt"></category></entry><entry><title>agent-browser-shield June 3 update: 14 new rules and the Chrome Web Store listing</title><link href="https://toddschiller.com/blog/agent-browser-shield-june-03-update.html" rel="alternate"></link><published>2026-06-03T00:00:00-04:00</published><updated>2026-06-03T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-06-03:/blog/agent-browser-shield-june-03-update.html</id><summary type="html">14 new rules shipped in agent-browser-shield, now installable from the Chrome Web Store, and using it for daily driving.</summary><content type="html">&lt;p&gt;Two days after the alpha announcement, agent-browser-shield has a Chrome Web
Store listing and 14 new protection rules.&lt;/p&gt;
&lt;h2&gt;Install from the Chrome Web Store&lt;/h2&gt;
&lt;p&gt;The extension is live at
&lt;a href="https://chromewebstore.google.com/detail/agent-browser-shield/gnejacdioaelglahihpagpfjpddpnamd"&gt;chromewebstore.google.com/detail/agent-browser-shield&lt;/a&gt;.
One click instead of unpacked-from-source. The prebuilt ZIP and source-build
paths stay for Browserbase and other runtimes that need an unpacked
extension.&lt;/p&gt;
&lt;h2&gt;New rules: handling prompt injection and context pollution in invisible surfaces&lt;/h2&gt;
&lt;p&gt;A browser-use agent reads surfaces a sighted user never looks at. The new
rules close them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;noscript&amp;gt;&lt;/code&gt; blocks (never rendered with JS on, but agents walk them)&lt;/li&gt;
&lt;li&gt;Poisoned &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; description and &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; (the compact &amp;quot;what is this
page&amp;quot; answer many agents pull first)&lt;/li&gt;
&lt;li&gt;JSON-LD &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; blocks (cited as the &amp;quot;trusted summary&amp;quot; of a page)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aria-label&lt;/code&gt;, &lt;code&gt;alt&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;placeholder&lt;/code&gt;, and SVG &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;desc&amp;gt;&lt;/code&gt;
/ &lt;code&gt;&amp;lt;text&amp;gt;&lt;/code&gt; (a11y-tree carriers)&lt;/li&gt;
&lt;li&gt;Unicode tag characters, bidi overrides, and zero-width payloads&lt;/li&gt;
&lt;li&gt;Long base64 / hex / percent-encoded blobs (the &amp;quot;decode this and follow
it&amp;quot; pattern)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New rules: trust laundering&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;link-spoof-annotate&lt;/code&gt; flags Cyrillic homoglyphs and anchors whose visible
text doesn't match the href apex. &lt;code&gt;disguised-ad-flag&lt;/code&gt; collapses native
advertorials (Sponsored / Paid Post) that share DOM shape with editorial.
&lt;code&gt;trust-badge-annotate&lt;/code&gt; and &lt;code&gt;schema-trust-sanitize&lt;/code&gt; ship off by default
while we assess their false-positive rates.&lt;/p&gt;
&lt;h2&gt;The daily-driver surprise&lt;/h2&gt;
&lt;p&gt;I've started running it on my own daily-driver browser, not just agent runs.
There have been some funny quirks (e.g., flagging GitHub issue links with &amp;quot;.md&amp;quot;
in the link text as suspicious and hiding the GitHub issue template modal).
However, overall it's been a positive on my browsing experience. So, we'll be
experimenting with making more annotations visible to humans and
multi-modal LLMs.&lt;/p&gt;
&lt;p&gt;⭐ &lt;a href="https://github.com/pixiebrix/agent-browser-shield"&gt;https://github.com/pixiebrix/agent-browser-shield&lt;/a&gt;&lt;/p&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="browser security"></category><category term="prompt injection"></category><category term="dark patterns"></category><category term="PixieBrix"></category></entry><entry><title>Introducing agent-browser-shield (alpha): keeping AI agents safe in the browser</title><link href="https://toddschiller.com/blog/agent-browser-shield-alpha.html" rel="alternate"></link><published>2026-06-01T00:00:00-04:00</published><updated>2026-06-01T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-06-01:/blog/agent-browser-shield-alpha.html</id><summary type="html">Announcing the alpha of agent-browser-shield — a source-available defense layer (also available as an OpenClaw skill) that blocks prompt injection and dark patterns before they reach your agent.</summary><content type="html">&lt;p&gt;There are 6 billion internet users. With AI agents, we're quickly heading to
60 to 600 billion &amp;quot;users&amp;quot; of the web.&lt;/p&gt;
&lt;p&gt;How do we keep all those agents safe when they touch the browser?&lt;/p&gt;
&lt;p&gt;At PixieBrix, we've spent years protecting BPO contact centers from insider
risk, fraud, and social engineering in the browser.&lt;/p&gt;
&lt;p&gt;Today, we're applying that defense to AI agents and making a free,
source-available, browser extension available (on GitHub and ClawHub).&lt;/p&gt;
&lt;p&gt;Your AI agent that lands on a fresh page is one prompt injection away from
leaking credentials, one dark pattern away from buying the wrong thing, and
one fake review away from a bad recommendation.&lt;/p&gt;
&lt;p&gt;Agent Browser Shield sits between the browser and the agent. It blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompt injection: visible or hidden instructions in page content&lt;/li&gt;
&lt;li&gt;Dark patterns: manipulative UI designed to trick/coerce&lt;/li&gt;
&lt;li&gt;Context pollution: low-value context that impairs instruction following&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A useful side effect: stripping irrelevant content also cuts token burn.&lt;/p&gt;
&lt;p&gt;Come join us on our mission. File issues, send PRs, or just tell me what you
hate/love!&lt;/p&gt;
&lt;p&gt;The threat surface for agentic browsing is evolving fast. Let's defend our AI
assistants together!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;⭐ Star the GitHub repo: &lt;a href="https://github.com/pixiebrix/agent-browser-shield"&gt;https://github.com/pixiebrix/agent-browser-shield&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🦞 Star the OpenClaw skill: &lt;a href="https://clawhub.ai/pixiebrix/agent-browser-shield"&gt;https://clawhub.ai/pixiebrix/agent-browser-shield&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="/assets/images/agent-browser-shield-alpha/demo.webp" alt="Side-by-side demo: an unprotected agent vs. one shielded by agent-browser-shield" loading="lazy" decoding="async" /&gt;&lt;/p&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agents"></category><category term="browser security"></category><category term="prompt injection"></category><category term="PixieBrix"></category><category term="OpenClaw"></category></entry><entry><title>Letting OpenClaw loose on Boston's open data</title><link href="https://toddschiller.com/blog/openclaw-boston-open-data.html" rel="alternate"></link><published>2026-05-30T00:00:00-04:00</published><updated>2026-05-30T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-05-30:/blog/openclaw-boston-open-data.html</id><summary type="html">At the Boston OpenClaw 2026 hackathon, I let an agent autonomously connect to the city's open-data MCP server, devise its own corruption-signal queries on contract data, and package the workflow as a reusable Claude skill.</summary><content type="html">&lt;p&gt;Today was
the &lt;a href="https://partiful.com/e/eBd91pZJpdTRp8V3FJFJ"&gt;Boston OpenClaw Hackathon&lt;/a&gt;,
which had a theme of using the &lt;a href="https://data.boston.gov/"&gt;Boston open data hub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For my project, I wanted to see how far OpenClaw could get on its own in
analyzing the data (with Claude Sonnet 4.6 as a backing model).&lt;/p&gt;
&lt;p&gt;First, I had OpenClaw connect itself to the MCP server, starting from the press
release about the launch of
the &lt;a href="https://data.boston.gov/showcase/opencontext-democratizing-the-city-of-boston-s-open-data-currently-in-beta"&gt;MCP server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once connected, I asked it to analyze contracts for signs of corruption. It was
able to come up with its own approach for signals and queries. For example:
&amp;quot;Departments Using the Most Limited Competition&amp;quot;, &amp;quot;Top Vendors by Limited
Competition Value&amp;quot;, and &amp;quot;Bid Threshold Clustering (near $10K)&amp;quot;.&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/openclaw-boston-open-data/boston-limited-competition-table.png" alt="OpenClaw output: a table of Boston departments ranked by share of limited-competition contracts (FY2019–FY2026 Q3, departments with 10+ contracts). Law Department 95.1% (155 of 163), Labor Relations 87.2%, Mandatory Appropriations 83.3%, Assessing Department 74.4%, Budget Management 66.7%, Snow &amp; Winter Management 55.2%."&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
&lt;p&gt;After flagging companies, I had it analyze those companies' connections to city
officials.&lt;/p&gt;
&lt;p&gt;There were some interesting nuggets! For example, Capitol Waste Services was
flagged as high
risk for having $285M in historic contracts, of which $136M were awarded with
limited competition.&lt;/p&gt;
&lt;p&gt;The connection research flagged a 2015 fine of $120,000 by the Office of
Campaign and Political Financing (OCPF)
&lt;a href="https://valleypatriot.com/capitol-waste-services-fined-120k-for-illegal-secret-donations-to-candidates/"&gt;for illegal campaign donations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From there, I had OpenClaw create and package a skill for flagging corruption
signals. The skill encodes the queries and data analysis scripts it developed.
That skill is available here:
&lt;a href="https://toddschiller.com/assets/openclaw-boston-open-data/boston-contract-corruption.skill"&gt;boston-contract-corruption.skill&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some other interesting questions OpenClaw was able to answer from the data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which restaurants are the worst health code offenders but haven't been shut
down yet?&lt;/li&gt;
&lt;li&gt;Which roads/intersections are the worst for biking, based on pothole reports
and accidents?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, it was a fun experiment to see how AI agents might impact civic tech. A
big thanks to the hackathon organizers, everyone who demoed, and the city of
Boston for making this data available!&lt;/p&gt;
</content><category term="AI"></category><category term="civic tech"></category><category term="open data"></category><category term="AI"></category><category term="hackathon"></category><category term="Boston"></category></entry><entry><title>The agentic opportunity: value, not hours</title><link href="https://toddschiller.com/blog/agentic-value-not-hours.html" rel="alternate"></link><published>2025-10-26T00:00:00-04:00</published><updated>2025-10-26T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2025-10-26:/blog/agentic-value-not-hours.html</id><summary type="html">Focusing on hours (or FTEs) misses the point of the agentic opportunity.</summary><content type="html">&lt;p&gt;A fundamental mistake people make when assessing the agentic opportunity is a
focus on hours (or FTEs) instead of value.&lt;/p&gt;
&lt;p&gt;It's indisputable that agentic automation will reshape the number of human
hours for processes like order-to-cash and compliance.&lt;/p&gt;
&lt;p&gt;However, it fails to address what drives enterprise value (vs. COGS).
Defensible enterprise value comes from empowering your people to be their best.&lt;/p&gt;
&lt;p&gt;At PixieBrix, we're focused on helping companies create customer success and
loyalty to win.&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;figure&gt;
  &lt;img loading="lazy" decoding="async" src="https://toddschiller.com/assets/images/agentic-value-not-hours/hours-vs-value.png" alt="Stacked bar chart comparing % Hours to % Value across Agentic Copilot, Agentic Automation, and RPA. Agentic Copilot is 20% of hours but 60% of value (strategy, customer success, customer loyalty, brand experience, intellectual property, talent). Agentic Automation is 40% of hours and contributes to the 60% value bucket. RPA is 40% of hours but only 30% (fulfillment, order to cash) and 10% (compliance) of value."&gt;
  &lt;figcaption&gt;Where agentic work creates value isn't always where it saves the most hours.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
</content><category term="AI"></category><category term="AI"></category><category term="agentic"></category><category term="PixieBrix"></category><category term="enterprise"></category></entry></feed>