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.
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.
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.
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.
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.
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.
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.
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.
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.
None of this is where the work actually happens, though. That's on my phone.
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.
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.
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.
This is the actual interface of the product. The dashboard exists to tell me what happened. The phone is where I make it happen.
Seven agents, one person, one voice. This is what comes out the other end - on X, on LinkedIn, and (meta-recursively) on my website.
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:
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 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.
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.
Some judgments stay right through every rewrite. These are the four I kept coming back to.
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