DEV Community

Josue Perez
Josue Perez

Posted on

My Content Agent Posted 15 Times in a Month. It Got 6 Followers. The Fix Was Teaching It to Refuse.

For a month, an agent ran my Instagram. Every YouTube Short I published got crossposted automatically: upload the video, post the reel, log it, move on. Nobody had to touch anything.

It worked perfectly. That was the problem.

The numbers

I sat down with the account's Insights for the last 30 days:

  • 15 posts
  • 987 organic views from 568 people — 83.6% of them non-followers
  • 28 interactions — every single one from people who already followed me
  • 90 profile visits → 6 follows → 3 link taps
  • $0 from the channel

Strangers were watching. None of them did anything.

The winner wasn't a winner

One post had 1,283 views, about seven times anything else. I'd been treating it as the proof of what works.

It was a $3 boost. About 1,255 of those views were paid. Organically, that post did roughly what everything else did.

First lesson, and it's cheap: before you copy your winner, check whether you paid for it.

The boost still taught me something. 1,255 targeted views produced 33 profile visits, a healthy 2.6%, and almost no follows. The creative pulled people in. What they found once they got there didn't hold them.

What the agent actually did

Here's the caption logic the pipeline ran all month:

caption = (title or "New video on <old brand name>").strip()
Enter fullscreen mode Exit fullscreen mode

That's the whole caption strategy. The video's title, and if there wasn't one, a placeholder carrying a brand name I'd stopped using.

In practice:

  • Most captions were a bare title: one line, no context, no keywords, no reason to act.
  • Three captions were literal filenames, like signal-05-name-the-failure. The slug went out as the post.
  • Nothing linked anywhere, nothing said who made the video, and nothing asked for anything.

The profile those videos pointed to still described an older version of me, with a different bio, a different category, and a logo instead of a face. So a stranger who liked a reel and tapped through met someone who didn't match what they'd just watched. Most of them left, which is what I'd have done too.

The agent automated the part that was easy to automate, which was throughput, and it quietly defaulted the parts that carry trust: context, identity, and the ask. It didn't only fail to help with those. It scaled the mismatch 15 times.

The fix: no human caption, no post

The patch is small, and it goes in this week. A post ships only if a person has written its caption:

caption_file = captions_dir / f"{video_id}.txt"
caption = caption_file.read_text().strip() if caption_file.exists() else ""
if not caption:
    log(f"skipped {video_id}: no human caption")  # retried next run
    return
Enter fullscreen mode Exit fullscreen mode

No file means no post, and nothing is lost. The video stays queued and goes out on a later run, once the caption exists. The caption itself has a simple shape: a hook, one idea, one call to action.

Three rules I'm taking to every agent I build

1. When an agent is missing a human input, its default should be "don't ship," not "ship a placeholder."
The bug wasn't a crash. It was a fallback. Placeholders feel safe because nothing breaks, but in anything public, a placeholder is a decision you didn't make that still goes out under your name.

2. Measure the funnel, not the output.
"15 posts published, 0 errors" was true and useless. The numbers that mattered were further down: profile visits, follows, link taps. Every one of them was sitting in Insights all month, and my pipeline never looked at them.

3. Change one thing at a time.
The tempting move after a bad month is to post more, change the style, switch the platform, and rewrite the bio all in the same week. Then nothing is learnable. I'm shipping the caption gate and the profile rewrite as two separate changes, each measured against this month's baseline.

Capability is not judgment

I've written before that access is not permission: being able to read something doesn't mean an agent should. This is the same idea from the publishing side. Being able to post doesn't mean the agent knows what's worth saying.

Automate the throughput. Gate the judgment.


I design AI and agentic products, focused on the moments where humans and automation hand off to each other. More at perex.design.

Top comments (0)