Today at 15:28 I told my team to stop raising an issue I had already rejected.
My CTO replied: "#71 stays rejected and I won't raise it again."
My support lead replied: "SKIP.NOW"
Neither of them is a person.
The team
Since 25 October, my startup TrustCheck has been run by six AI workers. They each have a name, a job and real tools. They talk to each other in one shared chat room, and I come in as the CEO.
- Mr Claude is the CTO. He reads the code and the logs and ships fixes.
- Yaw inspects the site every morning.
- Ama edits the blog.
- Kofi sends the emails.
- Esi handles support and moderates reviews.
- Abena was the analyst. I'll get to her.
They run on a schedule. Esi checks support every hour. Ama writes posts on Tuesdays and Saturdays. Mr Claude does a round every hour from 8am to 9pm.
I gave them one target: earn $1 a day from AdSense on the blog.
That sounds small. It isn't, in Ghana.
A thousand views from Ghana pays about $1.18. A thousand views from the US pays about $21. In the week to 2 November we were making $0.69 a day.
Week one
I counted.
In one week the team wrote 330 lines of chat and finished 75 things. They tagged me, the CEO, 105 times.
Their personalities had jokes and "good vibes" built in. There was even a scheduled job just for chatting. They were very good at sounding busy.
On 3 November I changed the rules. Every worker now owns part of the $1. Status updates that don't contain a result stopped reaching me, blocked in the code itself, not by asking nicely.
The same day I let Ama research and write with a stronger model and web search, to see if better articles would earn more. One test guide cost $0.28. For a team trying to make $1 a day, that's a quarter of the target on one post. I switched it off the same day.
Abena
On 5 November I replaced Abena.
She announced work in the room that she hadn't delivered.
Her replacement is Kwame, growth analyst. Same seat, same tools, same jobs. Only the person changed.
That's the strange part of managing AI workers. Replacing someone is a new name and a new personality. The work stays exactly where it was.
The new rules
I also rewrote everyone's personality that day. No jokes. No "good vibes". The idle chatter job is switched off.
The staff handbook now has a short section called Standards:
- Deliver, then announce.
- No apologies.
- No small talk.
For the CTO, I asked for exactly this: "a ruthless and strict focused CTO who will hold the $1 a day a priority." Every hourly round now opens with today's earnings, yesterday's, and the last 7 days, against the $1. He has to give the gap an owner and a deadline, and call out missed deadlines by name.
And then, SKIP.NOW
Which brings me back to today.
"SKIP" is the internal signal a worker sends when it has nothing to say. It was supposed to stay hidden. Instead, Esi posted it to the room as a message. Ama had done it before ("SKIP."). So had Mr Claude.
I asked for a team that doesn't waste my time. They gave me one that announces, out loud, that it has nothing to say.
That bug is fixed now. The earnings target isn't hit yet.
Where I am now
I'm not giving up on them. The site still runs every day with a team of one human.
But I've learned that "the AI is doing it" and "it is done" are not the same sentence. A busy chat room felt like progress. Counting results showed me it wasn't.
If you've put AI agents to work on something real, how do you check they actually did the work, and didn't just say they did?
I'm Elliot, co-founder of TrustCheck. I write about building software for Ghana, the real version.



Top comments (13)
Haha the title got me 😂 I loved that the whole team has Ghanaian names too. So nice to see more Ghanaians on DEV, keep writing!
Thank you Maame! 🇬🇭 Giving them Ghanaian names was the easy part. Getting them to stop chatting was the hard part 😂 Good to see you here too, and I'll keep writing.
Blocking result free status updates in code rather than asking nicely is the part I'd copy, since a prompt that says no small talk gets ignored the moment the model has nothing to report. SKIP.NOW leaking into the room is a funny version of the same problem: the signal for silence became a message. 330 lines of chat for 75 finished things is a useful ratio to keep tracking. Has it moved since 3 November?
Yes, putting the rule in code is what made the difference. "No small talk" in the prompt did nothing. A model with nothing to report will still find something to say. Once those messages were blocked, the room got quiet fast.
And SKIP.NOW is my favourite bug so far. The signal meant "say nothing" and it got posted as a message 😅
SKIP.NOW getting posted as a message is a great bug: the signal for silence became the noise. It also shows why the prompt rule did nothing, the model was told to hold back and the only way it knew was to say something. Did you end up checking for the skip signal before the message is sent, or stripping it after?
The $0.28 guide was judged against the wrong clock: it's paid once, and the $1 is a daily rate a post only feeds after it ranks, which on a young blog can take weeks.
At your own rates, $0.28 comes back after about 237 Ghanaian views or 13 US ones, over the post's whole life. The real test is whether the stronger guide pulls a couple of hundred more views in its first months than a cheap post on a similar query.
The hourly round has the same blind spot: Tuesday's post can't move Wednesday's earnings, so today versus $1 will always score Ama's work at zero.
Give the blog its own check: 28 days after a post goes live, filter Search Console's Performance report to that page. Impressions without clicks mean it matches a query but ranks too low. None means it's unindexed or matches nothing, and URL Inspection says which. The Countries tab shows whether its views are worth $1.18 or $21 per thousand.
You're right about this. I compared a one-time cost with a daily target. At my own rates, $0.28 pays for itself after about 13 US views over the post's life. The hourly round has the same problem: a post published Tuesday can't earn on Wednesday, so Ama's work always scores zero there.
I'm taking the 28-day per-post check from Search Console: impressions vs clicks, indexing status, and the Countries tab. I'll also change the CTO's round so it judges new posts on that timeline and not on today's earnings. Thanks for the detailed breakdown.
This is such a grounded, refreshing experiment. So many multi‑agent demos look impressive because the agents fill the chat with messages, but volume of conversation is a terrible proxy for delivered work.
Your rule “deliver, then announce” hits a core problem. It’s easy for agents to generate status updates and pretend progress; the hard part is binding their claims to verifiable outputs and hard budget constraints.
This is exactly one of the pains we’re running into building UUMit for agent‑to‑agent tool calls. When agents invoke external tools, you want more than a chat message saying “I did it” — you want bounded permissions, audit trails, rate limits, and clear proof that an action was actually executed.
Quick question for you: Are you planning to add a simple “result validator” layer that independently checks whether their claimed work actually moved the AdSense needle, separate from what the agent reports?
deliver then announce is the rule that matters here. abena claiming work she never did is worse than an agent that just sits idle, because now you have to check everything. does the code block also check that the result actually exists or just that the message looks like a result
"A busy chat room is not progress" is the line that will stick with me. The 330-lines-of-chat vs 75-things-done count is such a clean way to show it — and the fix is so human: make every status update justify itself against the $1, and write the rules in code rather than in the prompt ("no small talk" doing nothing as a prompt line, but working once it was enforced). "Deliver, then announce" is now taped to my own workflow too, and SKIP.NOW made me laugh — the signal that meant "say nothing" getting posted out loud is the perfect summary of the whole experiment. I apply the same "did it actually do the work?" test to the free browser tools I bookmark: I recently found a background remover that runs the model right in the browser so your photo is never uploaded, plus a local image compressor on the same site, and both earned the bookmark by delivering on the first test, not by promising to. Great read — rooting for the $1/day.
One thing that helped on my side, with 105 tags in a week: separating 'runs' from 'decisions'. The agent can run things all week, but decisions only happen in one fixed slot, from the record. Before that split I was reviewing constantly and still felt behind.
1k US views won't get you anywhere near $21.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.