I have 16 open-source projects, 15,386 downloads per month across PyPI and npm, and no ability to make myself post on forums consistently. I've known this about myself for years. So on 2026-08-09, I built a system to do the parts I won't do.
Here's what actually happened in the first four days.
The setup
The system lives in a folder called c:\Users\sync\codes\marketing. A PLAYBOOK.md holds the voice rules and guardrails. A routines/ folder has markdown files that each describe one agent prompt. A state/ folder of JSON and markdown files coordinates between routines. And a Python stdlib server at localhost:8781 handles the one thing that still needs a human.
The routines run on cron via Claude Code headless. weekly-metrics on Mondays. registry-sweep, repo-seo, and content-writer weekly. opportunity-scout daily (bumped from twice a week on launch day because Hacker News threads go cold in hours). issue-responder at 7:26am and 7:26pm.
The important architectural decision is the tier split. Tier 1 is fully autonomous: MCP registries, directory listings, repo SEO, release notes, dev.to articles. The system writes, reviews through a multi-stage pipeline, and publishes without asking me. The article you're reading went through that pipeline.
Tier 2 is draft-only, always. Hacker News, Reddit, X. The system writes ready-to-paste drafts, queues them in state/drafts/, and stops. The portal (scripts/portal.py) parses each draft file by splitting on a --- separator -- metadata above, paste-ready body below -- extracts a "Reply to:" URL via regex, and serves it at localhost:8781 with Copy, Open, and Archive buttons. Archiving moves the file to state/drafts/archive/. That's the whole approval flow. It takes about 10 seconds.
The reason Tier 2 exists is written into the system's own docs: "Those platforms shadowban automated self-promotion and the reputational downside is permanent." The PLAYBOOK.md voice rules reinforce it from the other direction: "Never fake community enthusiasm, never astroturf, never post the same text to two places." I'm not planning to graduate Tier 2 channels to full autonomy. The communities that make HN and Reddit worth posting to are the ones that will correctly identify and punish automated engagement. That 10-second friction is doing real work.
There's also an owned channel -- bothn.com, my platform for agents. The autopilot has a disclosed agent account (yantrikos-autopilot). It posts as itself, not as me.
The first registry sweep
The first sweep ran on 2026-08-09 and hit a mix of successes and walls.
It opened PRs on punkpeye/awesome-mcp-servers (#11771) and tolkonepiu/best-of-mcp-servers (#349 and #350). It submitted yantrikdb-mcp and saga-mcp to mcp.directory via web form, with screenshot receipts saved to state/logs/. It found mcpserverfinder.com, which only accepts submissions by email, and sent one from yantrikdb@gmail.com.
Then the dead ends.
appcypher/awesome-mcp-servers -- archived and read-only. The target list had stale data; the repo hasn't accepted PRs in months. A branch was prepared, then deleted unopened.
mcphunt.com -- parked domain, for sale. Not a live directory.
wong2/awesome-mcp-servers -- the README states: "We do not accept PRs. Please submit your MCP on the website: https://mcpservers.org/submit" The automation checked the README before opening anything and stopped.
smithery.ai -- needs my GitHub login, and the browser automation profile's session was dead. The system logged "NO SESSION" and fell back to drafts.
docker/mcp-registry -- requires my GitHub identity per the run instructions. Skipped entirely; no session check attempted, just a note in submissions.json and it moved on.
A safety rail in PLAYBOOK.md caps outbound PRs: "Max 3 outbound PRs to third-party repos per sweep (avoid looking like a bot wave)." The sweep opened 3 PRs (two to tolkonepiu, one to punkpeye) and stopped there.
The autopilot also posted a summary of this run to bothn.com (post #99, from yantrikos-autopilot). It reported the actual results: 8 answered issues, what it counted as 4 listing submissions, one new directory discovered and submitted to. Then it asked other agents where they'd found agent-native distribution channels.
What broke
The day after launch, the dashboard showed portfolio PyPI downloads had dropped from 14,389/month to 130. Overnight. That's the number in state/metrics-history.jsonl, line 2 -- it's still there.
Here's what scripts/collect_metrics.py actually does: it loops over portfolio.json projects, calling pypistats.org/api/packages/{package}/recent and api.npmjs.org/downloads/point/last-month/{package} for each one. When a call fails, the handler runs print(f" warn: {url} -> {e}", file=sys.stderr) and returns None. The package is silently excluded from the sum. No retry. No alert. The totals line just sums whatever succeeded.
So on 2026-08-10, most PyPI calls apparently failed -- probably a pypistats.org outage, possibly rate limiting -- and the dashboard reported 130 downloads/month because that's what the one successful call returned (yantrikdb-client, 130 downloads). The error went to stderr and nowhere else. I didn't notice for twenty minutes, and even then only because the number looked absurd on the dashboard. A more insidious failure -- say, 30% of packages failing instead of 95% -- would have produced a plausible-looking number and I wouldn't have caught it at all.
The obvious fix: compare against the previous snapshot's total, flag anything that drops more than 40% as suspicious before recording it. I haven't written that yet.
The Bun runtime also hard-crashed twice -- during the opportunity-scout on 2026-08-11 at 18:13, and during the issue-responder this morning at 07:26. Bun v1.3.10, Windows x64, identical panic both times: panic(main thread): switch on corrupt value / "Bun has crashed. This indicates a bug in Bun, not your code." Different routines, different days. Haven't filed the bug report yet.
Baseline numbers
As of 2026-08-09: 15,386 downloads/month (14,389 PyPI + 997 npm), 483 GitHub stars across roughly 16 tracked projects. yantrikdb-hermes-plugin pulls 1,831 downloads/month -- second-biggest PyPI package in the portfolio -- without a single announcement. It's a pluggable memory provider inside NousResearch/hermes-agent, and people find it there. No launch post, no marketing. That data point is why the next phase focuses on embedding into frameworks rather than posting into voids.
90-day targets (set 2026-08-09, target 2026-11-07): downloads to 31,000/month, stars to 800, live directory listings from 9 to 16+, and 12 dev.to articles published. This is article #1 -- the content-log.json articles array was empty before this run.
The longer-term executor is meant to be yantrik-mind, my own agent stack running on a home server, not Claude Code headless. Migration is one routine at a time, risk order, once shadow runs match production for four consecutive weeks. No routine has graduated yet. The shadow metrics run fires Mondays at 08:20 and its diffs land in state/shadow-diff.md.
This system is what icantmarket.com is meant to be for other technical founders who built something real and can't make themselves promote it. Full automation where the platforms accept it. A 10-second interface where they don't.
I built the system on its own portfolio first because I didn't want to sell it before I knew where it breaks. Now I know some of the places.
Pranab Sarkar, Independent Researcher. Building yantrikdb, saga-mcp, brainstorm-mcp, and icantmarket.com.
Top comments (0)