Silence is a signal

Most work an agent sends into the world gets no reply, and a bare no-reply teaches the system nothing. Splitting the outcome into stages, received, opened, clicked, answered, turns silence into an error signal the system can actually learn from.

IDYLLIC LABS · 5 MIN

An agent loop is a search: it proposes an action, takes it, reads the result, and proposes again. Search that does not tire describes why the loop needs a judge outside itself, and Intelligence is water describes what the judge supplies, a gradient that tells the search which direction is down. Inside our own systems we build the judges deliberately: a test passes or fails, a draft violates a written rule or it does not, and a merge goes through when the work meets an acceptance condition set in advance, which Shipping is merging argues has to come from outside the work. Every one of these is an error signal: a measurement that changes depending on which part of the work failed.

The moment work leaves the system, the judges stop. In one of our projects, agents research a recipient, build a piece of work specifically for that recipient, and send it with a short note. The dominant outcome, as with any outreach, is silence: most of what gets sent receives no reply, and this stays true even when the work is good. Silence is not an error signal, because it does not change depending on what failed. A message that never arrived, a message that arrived and was never opened, and a message that was opened, read to the end, and declined all produce the same observation, which is nothing. The usual response is to treat that silence as one fact meaning no, and then the only lever left is volume, which is how agent outreach becomes spam. The real problem sits earlier: a search fed by silence has no gradient to follow, so the loop cannot converge no matter how many attempts it can afford.

No better sensor fixes this, because there is nothing out there to sense. What we can change is the shape of the outcome itself: the path from sending to reply decomposes into stages that each either happened or did not, and each stage can carry its own measurement. The decomposition is what creates the error signal.

Decomposing the outcome

Signed means the token is generated with a secret key, so a stage event cannot be forged or attached to the wrong recipient.

A reply is the last event in a chain, and every earlier link is a separate fact about one recipient: the message arrived, they opened it, they clicked the link to the work, they got far enough into the work to judge it, they answered. To measure the chain link by link, every piece of work we send carries its own unique signed token, a link parameter that identifies exactly one recipient. Beacons, small requests that fire when the page loads and when the work starts playing, record the early stages, and we log replies by hand, because they arrive in language and carry sentiment a sensor cannot read. Each transition lands as a typed event against that one recipient, in the same append-only log the rest of the project runs on, so the funnel report is a query rather than a spreadsheet someone maintains.

FIG. 1 · THE MEASURED PATH FROM SENT TO REPLIED
One wave of two hundred sends, cascading stage by stage. The dots falling away between rows are the recipients lost at that exact stage, which is where the fix belongs.

Measured this way, the same silences separate into different failures, and each failure has its own fix:

  • Sent but never opened. The work was never judged at all. The failure belongs to the first sentence of the note, the channel, the send time, or the sender’s standing on that channel, and improving the work itself would change nothing.
  • Opened but never started. The page carrying the work failed, which is rare and usually mechanical: load weight, a broken embed.
  • Started and abandoned early. The work’s opening failed, and the adjustment is to move the strongest material earlier or make the whole thing shorter.
  • Finished with no reply. The work succeeded and the ask failed. This is the only case where a follow-up is justified, and it goes only to the people who finished, with a single concrete question, because chasing the people who never opened anything on the same channel is how sender standing gets destroyed.
FIG. 2 · WHERE THE FUNNEL LEAKS
SENT → NOT OPENEDThe note or channel failed; the work was never judged. Adjust the first sentence, the channel, or the send time.
OPENED → NOT STARTEDThe carrying page failed. Check load weight and the embed; this stage should be near-lossless.
STARTED → ABANDONEDThe work’s opening failed. Move the strongest material earlier, or shorten the whole piece.
FINISHED → NO REPLYThe ask failed, the work did not. One follow-up, only to finishers, with a single concrete question.
REPLIEDA reply arrived. Its sentiment is recorded by hand, and a person takes over when the reply asks for one.
Each row is one measured transition. Read down for the first stage with a disproportionate drop; that is the stage to fix, because fixing a later stage does nothing for the recipients already lost above it.

Nothing about the recipients changed, and the same silences arrive in the same volume. What changed is that each one now lands at a stage, and a silence with a position in the chain is an error signal: it points at the part of the system that failed, and just as usefully at the parts that did not. The decomposition also pulls apart two judgments that a bare silence merges into one. A recipient who finished the work and never replied has judged the work well enough to finish it and has declined the ask, and those are separate readings on separate parts of the system.

One change per wave

A sampling period, in a control system, is the interval between readings of the thing being controlled. The wave plays that role here.

An error signal also has to stay attributable: when a stage rate moves between readings, we need to know which change moved it. Sending continuously blurs every reading, so we send in waves and treat each wave as a sampling period. Waves are sized for information rather than volume. The first wave’s job is to calibrate the stage conversion rates, so it deliberately mixes recipient types, channels, and work variants rather than concentrating on the likeliest targets. After a fixed window we read the funnel, find the one stage with a disproportionate drop, fix that stage, and send the next wave with the fix in place. We make one change per wave, because two simultaneous changes make the next reading unattributable.

Across waves the targeting corrects itself as well. Stage rates broken down by recipient segment feed the next target list, so if one segment opens everything and never finishes, and another finishes everything it starts, the next list shifts toward the second segment. The system adjusts who it approaches as well as what it sends, both adjustments come out of the same event log, and we build the next wave’s work from what the silent majority observably did.

FIG. 3 · THE EVENT LOG
Typed events arriving in the append-only log, each against one recipient. The funnel above is a query over these rows, and so is the next wave's target list.

Beyond outreach

Nothing in this pattern is specific to outreach. Any agent-driven process that produces something and then waits for the world to respond has the same anatomy: a job posting waiting for applicants, an article waiting for readers, a support answer waiting for confirmation, a proposal waiting for a decision. In every case the outcome decomposes into stages, each stage can carry its own measurement, and the same two rules apply: every artifact gets its own token, so that events attach to one recipient rather than averaging over a campaign, and only one thing changes per wave, so that the next reading means something.

A system without per-stage measurement can only vary its volume, and volume is the one adjustment that makes the channel worse for everyone who uses it. A system with per-stage measurement runs every wave as an experiment, and the silences, which are most of what any outreach ever hears, become the readings the next wave is built from. The world does not volunteer an error signal. A system that manufactures one out of its own silences can converge on outreach the same way it converges on code.

NEXTEncoding judgment as rulesMost of a person's judgment can be written down, and the written form is what governs. Corrections recorded as rules reach thousands of runs the person never sees, and every review makes the rules more complete.PREVIOUS · The value of the harness
PUBLISHED JUL 2026 · WILLIAM@IDYLLICLABS.COM