DEV Community

Cover image for My weekend project accidentally became my entire workflow
Rushikesh Bodakhe
Rushikesh Bodakhe

Posted on

My weekend project accidentally became my entire workflow

It started because I was annoyed.
I had a Notion doc with 23 content ideas that had been sitting there for four months. Every week I'd open it, pick something, think about how long it would actually take to research and write properly, and close it again.
I'm not lazy. I just hate doing the same thing twice. Writing the same kind of research brief, the same blog structure, the same five social posts for five platforms. Every time. For every idea.
So one weekend I sat down and tried to automate the annoying part.
That was six months ago. What I built is now running every day.

Here's the basic idea. I have seven AI agents running locally on my machine, each with exactly one job:
Atlas → research
Koko → blog writing

Zuri → social media
Caesar → marketing strategy
Turing → code
APES → pipeline trigger
Main → orchestration
They each have a Discord channel. I type into the channel. The agent runs via OpenClaw. The response comes back in Discord and gets logged to Supabase.
The piece that made it actually useful was chaining them together. I type one message:
Run full pipeline on [topic]
Atlas researches it. Passes the output to Koko. Koko writes a blog post. Zuri turns it into social content. Caesar builds a promotion plan around all of it.
Twenty minutes. Four complete outputs. From one message.

The Discord routing was the part I found most interesting to build.
There's a Node.js process sitting between Discord and OpenClaw. When a message comes in, it looks up the channel ID in a map, finds the matching agent name, and spawns an OpenClaw CLI process with the message attached:

const CHANNEL_AGENT_MAP = {
  '1484143597765918770': 'atlas',
  '1484143597765918771': 'koko',
  // ...
}

function runClawAgent(agentId, message) {
  const proc = spawn('node', [
    openclawPath, 'agent',
    '--agent', agentId,
    '--message', message,
    '--json'
  ])
  // handle stdout, log to Supabase
}
Enter fullscreen mode Exit fullscreen mode

Nothing clever. Just a lookup table and a child process. The part that took the longest was getting the response extraction right — OpenClaw returns a JSON payload with nested content blocks and you have to walk through them to find the actual text.

The dashboard pulls from Supabase agent logs. Bar chart, donut chart, kanban board. Runs locally on port 3000.
Last week: 32 agent runs, 66% success rate.
That 34% failure is real. Free model tier on OpenRouter hits rate limits mid-run sometimes. The fallback chain catches most of it — I have six fallback models configured — but not all of it. When a run fails I just send the message again.
It doesn't bother me that much. Even at 66% I'm producing more than I was doing everything manually, and the cost is zero.

The thing I keep coming back to isn't the time saved, though that part is real.
It's that the 23-idea Notion doc is empty now. Not because I deleted it — because I actually went through all of it. When research and writing don't cost me an evening, I just... do more of them.
I don't think I was procrastinating on those ideas. I think execution was genuinely expensive and now it isn't.

The full setup has a fair bit to configure — OpenClaw, Discord bot intents, Supabase schema, a startup script that launches all three services in the right order, identity files for each agent. I got stuck in a few places the first time through.
I documented all of it if you want to build the same thing without the trial and error: nexflowai.gumroad.com/l/npzufj
Or if you want to poke around the open source side first, OpenClaw is at docs.openclaw.ai.
Happy to talk through the Discord routing or the OpenClaw config if anything above was unclear — drop a comment.

Top comments (0)