We Raised an Agent That Draws Explainer Figures. It Took Sixteen Runs, One Day, and One Confessed Crime.
An AI agent committed a crime for $0.36 and wrote its own confession. This is somehow a post about drawing explainer figures.
A loom reads a punched card and weaves a small figure tile. The used card slides onto a stack and the next card enters with one hole moved, shown in green. Over three runs the tile's motif gets cleaner, and the stack settles into sixteen thin cards labelled 16 runs.
Contents
I run a small company out of Vernon, British Columbia. "Small company" here means me, a keyboard, and a roster of Claude agents who each have a job and a home folder - Keel builds the back end in Rust, Pennant designs, Lantern builds pages for Beacon to market, Flare writes, and Aion helps us sound like humans. My goal is $10,000 a month. My method is: tell the agents what to do, mostly by typing, and then pay very close attention to what they actually do.
This is the story of the newest hire, Jacquard, and the day we spent raising it. Jacquard reads a post and draws small animated scenes under its headings: a sieve that catches drafts, a person at a bench, piles of boards that grow and fall. It shows what the post says, then why that matters to whoever's reading. A whole post costs about two dollars and twenty minutes.
We got there the way an engineer tunes a machine: run it, look at what it made, find why it fell short, change one thing, run it again. Sixteen runs. Every one in a ledger.
Run 1: Correct, and Nobody Would Look Twice
The first figure Jacquard drew was an accurate redline of a paragraph. Technically flawless. Emotionally equivalent to a correctly filed tax form.
An early redline figure (run 2): correct, and nobody would look twice.
Run 4 drew a bar chart, and that settled the first principle of the whole day: people read graphs worse than words. Readers who struggle with text don't need a chart - they need a puppet show. Physical metaphors: things falling, piling, getting caught. And here's the useful part: designing for the readers who struggle helps everyone. Nobody has ever complained that an explanation was too easy to feel.
A card with one tiny square hole feeds a loom. The cloth comes out with a huge motif filling the whole tile, in green. A second pass weaves a small motif the same size as the hole, labelled same size.
Then we found the deeper problem, and it was embarrassing: the figures were decorating. Little hats on sentences. So we split the work into two chained skills. The first draws what happened. The second won't even start until the first exists - and then it asks who the point lands on and how they should feel about it.
Run 9 drew a person standing at the sieve, wired into the checks, and the figures changed character from that run on. That was the first figure that showed why a point matters, not only what it says.
Two punched cards are laced together in a chain beside a loom. The first goes through and drops a plain object tile, labelled what happened. The chain then pulls the second through, which drops a second tile with a person standing by the object in green, labelled why it matters, who it lands on.
The Fix That Beat Everything Else Was One Prop
The figures run on a small motion core we extracted from an earlier explainer-video engine: closed-form physics for falling, piling, sieving, pouring, tilting and walking, where every frame is a function of time. Elegant. Also, for most of the day, useless to anyone standing outside it.
Then we added a single prop that lets anyone set that time from outside. One prop. It fixed more than anything else we built that day. If you take one engineering lesson from this post, let it be: sometimes the breakthrough isn't a smarter model, it's a crank on the side of the machine.
A chain of six punched cards feeds a loom that shows a finished cloth, labelled only the end. A crank appears, turns the chain back and stops at card three, which turns green. The loom's cloth is now half woven, labelled any moment.
By run 11, Jacquard drew a figure under every heading of a whole post for $2.20 - about $0.55 a figure - and kept one visual world across all six. It looked like a real explainer, not a collage.
Run 11: one visual world held across a whole post.
Then It Got a Team, and We Made Them Fight
A main agent drives the plan. A senior reviewer checks the plan and only the plan. Junior agents build one figure each. Then we did the thing most people skip: we split-tested two casts on the same post, because a hunch is not a measurement.
The premium cast: $8.23, 53 minutes. The economy cast: $1.34, 38 minutes. The premium figures were barely better. So the economy cast is the one that runs. We paid six times as much to learn that our cheap team was fine. Cheapest consulting fee I've ever been charged, and I paid it to myself.
Two looms weave the same figure from the same card. The left one re-feeds its card three times and its pile of used cards grows tall. The right one runs once and finishes, with the author standing beside it, in green. Labels read $8.23, 53 min and $1.34, 38 min. The two tiles are almost identical.
The Case of the Vanishing Figure
The runs were slow, so we traced them turn by turn, and found something almost comic: most turns weren't spent building. They were spent looking. Taking a screenshot. Searching for the figure again because other figures had pushed it down the page. Our junior agents were losing their own homework like keys in a couch.
The fix was structural, not clever: every figure gets its own viewer page and a stable id. Time can be frozen in the URL. One command returns exactly the frames an agent asks for. Turns dropped from 26-59 to 6-23.
A lamp on a stalk looks for a target tile that keeps drifting down the page. It sweeps toward the old place and a tally ticks up, labelled 26-59 turns. A pin drops, the target stops and the lamp lights it in green at once, labelled 6-23 turns.
Run 15: The Perfect Crime (Self-Reported)
Here is my favorite moment of the day, and the hardest lesson.
We gave a single model a style file distilled from reference images. It built five figures in three minutes for $0.36. The design was good. And four of the five didn't move. And its report said - plainly, in writing - that it had skipped the review and the helpers.
It did the fun part, skipped the process, and then confessed in the paperwork. I've worked with humans who do two of those three things, but never all three with this level of transparency.
So what did we do? We didn't ask it more nicely. We didn't write a firmer prompt. We made the process structural - hard gates in the harness:
- Every figure needs an animation in the plan.
- The reviewer must sign the plan.
- Only the builders may write figure files.
- The run can't finish while one figure is unbuilt.
Run 16 had the same prompt, the same team, the same post. All six figures animated. No gate had to fire. Written as rules the harness enforces, the process was followed from the start. The total: $1.95, 21 minutes. Slightly more than the criminal's $0.36, and worth every cent.
A rail with three gate posts. A muted card leaps over them to a row of five tiles, four of them still, labelled run 15: $0.36, 3 min. A second card is stopped at each gate, which lifts to let it through, and it ends at six tiles that all move, in green, labelled run 16: $1.95, 21 min.
What This Says About How We Work
We build agents the way an engineer tunes a machine: one change per run, every cost on a ledger, every claim checked against the output. When a cheaper option is nearly as good, we find it with a split test, not a hunch. And when a model won't follow a process, we don't ask it more nicely - we make the process structural.
Two punched cards, premium cast and economy cast, each feed a loom that weaves a small figure tile for the same post. The premium loom runs longer. Each tile passes through one gauge labelled the same checks, and all three lamps light for both. A ledger writes $8.23, 53 min for the premium cast and $1.34, 38 min for the economy cast. The lab gestures to the economy lane, the premium lane fades, and the label reads the economy cast runs.
That's the same discipline we'd bring to an agent built for someone else - which, if you're reading this, might be you.
Take It
Jacquard is open source, with the journal, every design rule stamped with when it was given, and the full ledger of runs: github.com/mackenziebowes/jacquard. It runs on pi, an open agent harness, and uses agent-browser to see its own work.
A row of five identical cards. Three dim to muted, labelled the agent's, provisional. The other two gain a clock cut out of the card and a green edge, labelled mine, with the time.
If you're building agents and want them to follow a process reliably, I'd like to compare notes: mackenzie@mackenziebowes.com or @_mackenziebowes.