The problem
He writes that he has “no ability to make myself post on forums consistently. I’ve known this about myself for years.” He built a system “to do the parts I won’t do.”
The blueprint (as he describes it)
- One folder, plain files. A PLAYBOOK.md holds the voice rules and guardrails. A routines/ folder has markdown files, and each one describes one agent prompt. A state/ folder of JSON and markdown files coordinates between routines. A Python stdlib server at localhost:8781 handles “the one thing that still needs a human.”
- Schedule the routines on cron. The routines run via Claude Code headless:
- weekly-metrics on Mondays.
- registry-sweep, repo-seo and content-writer weekly.
- opportunity-scout daily. He bumped it from twice a week on launch day “because Hacker News threads go cold in hours.”
- issue-responder at 7:26am and 7:26pm.
- Tier 1: fully autonomous. This tier covers developer directories and curated lists, repo SEO, release notes and dev.to articles. The system writes, reviews through a multi-stage pipeline, and publishes without asking him. He says the post itself went through that pipeline.
- Tier 2: draft-only, always. This tier covers Hacker News, Reddit and X. The system writes ready-to-paste drafts, queues them in state/drafts/, and stops. The portal (scripts/portal.py) splits each draft file on a --- separator, with metadata above and the paste-ready body below. It extracts a “Reply to:” URL via regex. It then serves the draft with Copy, Open and Archive buttons, and archiving moves the file to state/drafts/archive/. He says the approval “takes about 10 seconds.”
- Write the reason into the rules. The system’s docs say: “Those platforms shadowban automated self-promotion and the reputational downside is permanent.” The voice rules say: “Never fake community enthusiasm, never astroturf, never post the same text to two places.” He is not planning to move Tier 2 to full autonomy. He writes: “That 10-second friction is doing real work.”
- Disclose the agent on owned channels. On his own platform for agents, the autopilot has a disclosed agent account. “It posts as itself, not as me.”
- Guardrails in the directory sweep. PLAYBOOK.md sets a cap: “Max 3 outbound PRs to third-party repos per sweep”. On the first sweep he reports these behaviours:
- It checked one list’s README, which said it does not accept PRs, before opening anything, and stopped.
- When a site needed his GitHub login and the browser session was dead, it logged “NO SESSION” and fell back to drafts.
- It skipped a registry that required his GitHub identity and left a note in submissions.json.
- It prepared a branch for an archived, read-only list, then deleted the branch unopened.
- Track metrics from public APIs. scripts/collect_metrics.py loops over the projects in portfolio.json. It calls the pypistats.org and api.npmjs.org download endpoints for each package.
- Plan a gradual migration. The longer-term executor is meant to be yantrik-mind, his own agent stack running on a home server. Routines would move one at a time, in risk order, “once shadow runs match production for four consecutive weeks.” No routine has moved yet.
Stated results
- First sweep: 3 PRs opened on two curated lists, then it stopped at the cap.
- Two projects submitted to one directory via web form, with screenshot receipts saved to state/logs/.
- One directory that only accepts submissions by email was found and sent a submission.
- The autopilot’s own summary reported “8 answered issues, what it counted as 4 listing submissions, one new directory discovered and submitted to.”
- This post is dev.to article #1. The content-log.json articles array was empty before this run.
- Tier 2 approval takes “about 10 seconds” per draft.
- Baseline as of 2026-08-09: 15,386 downloads/month (14,389 PyPI + 997 npm) and 483 GitHub stars. These are starting figures, not results.
- 90-day targets (target date 2026-11-07): 31,000 downloads/month, 800 stars, live directory listings from 9 to 16+, and 12 dev.to articles. These are targets, not results.
- Change in downloads, stars or listings since launch: None stated.
Caveats
- He is building icantmarket.com, a product based on this system for “other technical founders who built something real and can’t make themselves promote it.” That is a related commercial interest.
- The post was itself published by his Tier 1 pipeline.
- The post covers the first four days only.
- Metrics failure. The day after launch, the dashboard showed PyPI downloads dropping from 14,389/month to 130. The collector skips failed API calls silently, with “No retry. No alert,” and sums whatever succeeded. He noticed only because the number looked absurd. He proposes flagging any drop of more than 40%, but he says “I haven’t written that yet.”
- Runtime crashes. The Bun runtime hard-crashed twice, during two different routines on different days. He hasn’t filed the bug report.
- Dead ends on the first sweep. One target list was archived. One domain was parked and for sale. One list does not accept PRs. One site’s session was dead. One registry was skipped.
- One plugin, yantrikdb-hermes-plugin, gets 1,831 downloads/month “without a single announcement.” He says that is why the next phase focuses on embedding into frameworks.
- Handles: dev.to @spranab (verified 2026-10-18 via dev.to user API). GitHub github.com/spranab (verified 2026-10-18 via GitHub API, name-match only; not linked from the post). X: none found.
Sources
- https://dev.to/spranab/my-agent-runs-my-marketing-i-mostly-just-hit-approve-4d81 (primary: first-person build write-up on his dev.to account)
Want agents like these working your distribution? See the Agent Stack Teardown. Get new teardowns weekly: subscribe (double opt-in).
Get one teardown a week.
Same format, a new operator every issue. Double opt-in.