DeskCurator

AI-powered content pipeline for affiliate publishing

Solo Developer & Architect

Overview

I designed and built DeskCurator end-to-end — an autonomous content pipeline that researches, writes, SEO-optimizes, and publishes affiliate articles for desk and work-from-home products. The system runs with minimal human intervention, using a Discord-based approval workflow as the single point of editorial control before anything goes live.

A topic goes in, and the pipeline orchestrates multiple AI agents to research products via web search, generate long-form articles in three distinct formats, optimize for search engines with structured data for rich snippets, publish to WordPress as drafts, and schedule social distribution across platforms over a 10-day cadence.

The Pipeline in Action

From research to publishing to social distribution — three snapshots showing a single article moving through the pipeline.

Research approval detail
SEO audit detail
Buffer scheduling detail

Architecture

The system is a multi-agent TypeScript architecture running in Docker, deployed via a CI/CD pipeline on a self-hosted GitHub Actions runner. A hybrid sync/async processing model keeps things fast where it matters — synchronous calls for classification and routing, with an async SQLite-backed job queue for parallelized research across multiple products.

🔍

ContentResearcher

Web search and product data aggregation with ChromaDB vector deduplication to prevent repeated coverage.

✍️

ContentWriter

Three specialized generation prompts — roundups, setup guides with tiered recommendations, and single-product reviews.

📈

SEOOptimizer

Metadata, internal linking suggestions, and structured data markup for rich snippet eligibility.

📣

SocialAgent

Converts articles into platform-native threads and posts, scheduling distribution via Buffer over 10 days.

Key Technical Decisions

Draft-first publishing was a deliberate choice — every article lands as a WordPress draft with a Discord notification for human review before going live. This preserves editorial quality without slowing down the pipeline’s throughput.

Building for resumability early on (queue-based processing, idempotent jobs) paid off significantly. When a research step fails mid-run, the system picks up where it left off rather than restarting from scratch. The architecture also supports multi-provider switching for the AI layer, so swapping or A/B testing models doesn’t require reworking the agents.

What I Learned

1

Specialized prompts per content type dramatically outperform a single generic generation prompt. Three tailored prompts produce better results than one flexible one trying to cover every format.

2

Human-in-the-loop doesn’t have to mean human-in-the-way. A lightweight Discord approval step gives editorial control without becoming a bottleneck in the pipeline.

3

Environment separation discipline matters early. Keeping local dev, CI, and production configs strictly isolated prevented an entire category of “works on my machine” deployment bugs.

Stack

TypeScript Node.js Docker SQLite ChromaDB Discord.js WordPress REST API Buffer API GitHub Actions Tavily API Gemini API