My Content Machine · Open Source

I couldn't keep writing.
So I built seven agents to do it for me.

A personal content pipeline that turns quick thoughts into polished posts. Built by a designer who can't hire a content team, for the founder who is that designer.

7
Agents
24/7
Runs while I sleep
Phone
Native approval
The starting point

A founder's content dilemma.

Running Chiblu. Running DWB. Shipping side projects on weekends. And trying to share what I'd learned along the way. Writing was what connected all of it - and the first thing to slip when the week got tight.

Three options I actually had:

The third one. What follows is the team I built.

A team made of Agents

Seven roles. Zero hires.

Every agent below is a role I'd hire if I could. Together they run the content ops I don't have time to run myself.

Me approves
Scout
research
Writer
ghostwriter
Editor
polish
Messenger
telegram
Publisher
x + linkedin
Analyst
metrics
SEO
website

Each agent stores its own context. Scout remembers which kinds of sources I approve. Writer remembers what I've greenlit. SEO reads my site's voice. The team gets smarter the more I use it.

The dashboard

Where the machine lives.

Most interactions happen on Telegram - that's the next section. But the desktop dashboard is where the machine's operating state is visible when I need to check the pulse. Four screens, each answering one question.

Agents - is the team working?

One row per agent. A green pulse means running. Idle means waiting. Paused means I paused it for an hour, six hours, a day, or a week. The ⋮ menu opens pause options; ✕ clears stuck state.

Agents
7 agents · 2 running · 1 paused
Scout
research intern
Ran 12 min ago
Running
Writer
ghostwriter
Ran 14 min ago
Running
Editor
content editor
Ran 2h ago
Idle
Messenger
telegram bot
Always on
Listening
Publisher
x + linkedin
Last post 3h ago
Idle
Analyst
analytics intern
Ran 6h ago
Idle
SEO
web manager
Ran yesterday
Paused 1h

Flow - the editorial desk.

Each pill is a piece of content in motion. Columns are stages - Scouted → Drafting → Review → Approved → Posted. Amber pills are things waiting on me. Green pills are things that went live.

Flow
12 items · 3 awaiting approval
Scouted
CLI tools without a user
HN · 234 pts
Invisible design decisions
reddit · r/ux
Drafting
"Writing was the first thing to slip…"
Writer · 2m ago
Review
"Indian retail has been burned by signal-sellers…"
Editor · in progress
Approved
"The dashboard isn't where the work happens…"
approved 2h ago
Posted
"A designer redrew the screens…"
posted 3h ago
Voice examples > prompts
posted 6h ago

Approval - one card per draft.

This card is what arrives in Telegram when there's something to look at. It also lives here, in the browser. X and LinkedIn tabs preview each platform's version. ✎ Edit opens a textarea. ✨ Tweak with AI offers five presets - Shorter / More casual / Lead with number / First person / Stronger hook - or a free-text prompt.

Draft · awaiting approval
from Writer · 2m ago
X (post)
LinkedIn
Writing was the first thing to slip when the week got tight. So I built seven agents to do it. Not to replace my voice. To protect it - by taking the parts that don't need me, and leaving the part that does.

Connections - BYOK for every channel.

Every channel uses your own account. X, LinkedIn, Telegram, GitHub - all connected with your own keys. Saving a Telegram token auto-registers the bot webhook; the whole thing works within seconds.

Connections
4 of 4 channels connected
X (Twitter)
@pradeepsiddappa
✓ Connected
LinkedIn
personal + page
✓ Connected
Telegram
bot webhook active
✓ Connected
GitHub
pradeepsiddappa.com
✓ Connected

None of this is where the work actually happens, though. That's on my phone.

One tap, on Telegram

Where the work actually happens.

The dashboard is for checking on things. The phone is where the thing actually runs. Every approval lives here. Every draft arrives here. Every "did it post?" answers here.

The approval round-trip.

Writer finishes a draft. Messenger pings me with the preview and an inline keyboard. I tap ✓ Approve. Publisher cross-posts to X and LinkedIn. Analyst starts the 24-hour metrics watch. Total time from ping to posted: under a minute, usually done while walking somewhere.

PA
Personal Agent
bot
New draft · Writer
"Writing was the first thing to slip when the week got tight.

So I built seven agents to do it.

Not to replace my voice - to protect it by taking the parts that don't need me, and leaving the part that does."
Platform · X post
✓ Approve
✎ Tweak
✗ Skip
12:47 PM
✓ Approve
12:48 PM
Posted
Posted to X
Posted to LinkedIn
Analyst watching · results in 24h
12:48 PM

Texting ideas.

Any text I send the bot can become a post, without opening the dashboard. Prefix shortcuts route the message: TWEET:, THREAD:, BLOG:, SYNTH:, IDEA:, PROMOTE:, DRAFT:. Or I just send a thought and the bot asks what to do with it. Writer drafts. Editor polishes. The result comes back as another approval card.

PA
Personal Agent
bot
TWEET: legibility is the trust protocol. showing your work is the only thing that separates you from every signal-seller who doesn't.
3:12 PM
Got it
Sending to Writer for a draft. I'll ping you when it's ready to approve.
3:12 PM
20 min later
Draft ready · Writer
"Legibility is the trust protocol.

Every signal-seller has confidence. Only the ones showing their work have evidence.

Show your work. It's the only thing you've got."
Platform · X post
✓ Approve
✎ Tweak
✗ Skip
3:32 PM

This is the actual interface of the product. The dashboard exists to tell me what happened. The phone is where I make it happen.

What it makes

The output.

Seven agents, one person, one voice. This is what comes out the other end - on X, on LinkedIn, and (meta-recursively) on my website.

Image cards.

Publisher generates a branded image card alongside most posts - five kinds (stat, quote, milestone, lesson, poster). Each kind has its own canvas and layout. Four recent ones:

Long-form + chained threads.

Publisher formats multi-post threads for X and long-form posts for LinkedIn - hook placement, line breaks, the whole structure. When Writer produces a piece longer than a tweet, Publisher decides: thread, long-form, or both. Usually both.

The meta twist - SEO edits my own website.

The SEO agent audits pradeepsiddappa.com, proposes HTML edits, and when I tap ✓ on Telegram, commits them to GitHub directly. The same repo that hosts the case study you're reading. The machine maintains its own storefront.

main
a7f3e92
SEO: sharpen hero copy, consolidate redundant meta description
SEO
seo-agent committed 2 hours ago · approved by pradeep on Telegram
index.html +2 -2
@@ -146,3 +146,3 @@
- <h1>Welcome to my website</h1>
+ <h1>A designer who builds. For the stuff that wouldn't exist otherwise.</h1>
<p class="tagline">
- I'm Pradeep. I design and build products across industries.
+ Designer. Founder. Builder. Currently running Chiblu & DWB.
</p>
What emerged

The system learned me because I used it.

None of this was designed upfront. But three things happened on their own, once I'd been using it long enough.

Writer got closer to my voice. Every approved draft became a voice example. Every Tweak fed the prompt. After three weeks, Writer was producing drafts I'd approve without edits about half the time. After three months, it stopped asking me "too formal?" and started making that call itself.

Scout stopped surfacing noise. I started with a wide net - HN, Reddit, Dev.to. My thumbs-up/thumbs-down became training data. The net narrowed on its own. Most days now Scout surfaces three or four items, and I write about one.

SEO figured out my cadence. Early proposals felt generic - meta description fixes, alt text additions. Over time, SEO started proposing edits that sounded like me: rewording hero sections, catching casing drift, even pruning words I'd stopped using. It reads my approved drafts, too.

The team got better because I kept using it. Not because I trained it. Use is the training.

Notes from the work

Four things that held up.

Some judgments stay right through every rewrite. These are the four I kept coming back to.

01
The phone is the interface. If the interface asks me to open an app, I don't do it. My attention is already on my phone, so approval lives there. One tap reviews the draft, one tap posts it.
02
Voice examples beat prompt engineering. Writer reads my approved drafts, voice examples, and past posts. The system prompt is three lines. The drafts sound like me because the evidence it reads is me.
03
Seven small agents beat one big one. Each agent has one job and remembers one kind of thing. Scout remembers sources. Writer remembers voice. Narrow memory gets sharp.
04
Open source was the epilogue. I built this to solve my content problem. Open source came after.
The takeaway

I didn't build a product.
I built a team made of Agents.

Seven roles, one approval channel, for the voice that kept slipping. Built for me. Extractable for you.

Alpine.js + Vercel + Supabase + Claude · Open source at github.com/pradeepsiddappa/personal-agent