The problem
Owned-media works, but only for people who can publish weekly without burning out. Most builders, founders, and consultants have plenty to say and zero capacity to write it down on a schedule. We wanted a pipeline that handled the unsexy 80% — topic research, structure, draft, polish, scheduling — while leaving the editorial taste at the start (what topic) and the end (does this go out as-is).
What we built
Ghost Writer scrapes Hacker News, Reddit, and Dev.to on a cron, scores topics for relevance against a per-account profile, and queues the winners for drafting. Claude writes a 1,500-word article in the configured voice with structured sections and a working hook. The draft passes through six independent quality gates — grammar, originality, AI-detector resistance, on-page SEO, link integrity, and brand-voice match — and only ships if all six pass.
Publishing happens through the LinkedIn and Medium APIs with rate limiting, retry, and human approval as an optional gate. A FastAPI dashboard shows the pipeline live: topic queue, draft status, QA results, scheduled posts, and historical performance pulled back from each platform.
The AI angle
Generation is the easy part. The hard part is the QA pipeline. We treat each quality check as a small, focused Claude call with its own prompt and pass/fail rubric, and we keep the prompts versioned in Git with a regression test set of articles that should pass and articles that shouldn’t. Every change to a prompt has to keep the matrix green before it ships. That’s how we keep quality from drifting as Claude itself changes underneath us.
How it’s used
- Solo operators get a publishing cadence they couldn’t maintain by hand.
- Agencies use it as a draft factory, with their writers becoming editors instead of typists.
- Personal-brand builders stay top-of-feed without giving up their evenings.
What it taught us
That AI content only earns trust when the failure modes are visible. The dashboard makes the rejected drafts as prominent as the published ones — you can read why a piece failed AI-detector or originality and what the draft looked like. Hiding the misses would have been faster to build and slower to win confidence.