GhostWriter
An AI-assisted editorial pipeline for discovering stories, scoring relevance, generating drafts, and keeping human judgment in the loop.
What it is
GhostWriter is an internal AI-assisted editorial pipeline. It monitors Neowin’s archive and RSS feeds, generates a style profile from past writing, scores candidate stories for editorial relevance, drafts articles for review, and hands off to a human for the final editorial call. It does not auto-publish.
Why I built it
I write under time pressure, so I built a system that handles the repetitive parts of discovery and drafting while leaving taste, context, and the final call to me.
GhostWriter is not an autopilot. It is a newsroom assistant: it watches the feed, finds candidates, drafts from a style-aware prompt, and leaves judgement with the editor.
What it does
- Neowin archive scraping to build a corpus of past writing.
- Style profile generation so drafts read like the author, not like a generic LLM.
- RSS monitoring of candidate sources for fresh stories.
- Relevance scoring to rank candidates by editorial value.
- Draft generation through the current internal model pipeline, with fallback paths when a model is unavailable.
- Telegram commands to review, approve, edit, or reject drafts from a phone.
- Human approval gating. Nothing publishes without an explicit editorial yes.
Stack
- Python for the pipeline and orchestration.
- FastAPI for the API surface.
- PostgreSQL with pgvector for semantic search and deduplication.
- Redis for queue state.
- Celery for scheduled and background tasks.
- Claude as the primary drafting model in the current setup.
The hard part
Scoring drafts is harder than generating them. The hard part is teaching the system what “good enough to surface” means. The scoring has to be inspectable, or the editor stops trusting the queue.
What I learned
- Automation should stop before publish.
- A style profile is what turns a generic draft into something that reads like the author wrote it.
- Editorial taste is the part you cannot automate, and that is the point.
Current status
MVP. Running on the KeplerClaw infrastructure alongside the news intelligence pipeline. Internal, not a public product.
Links
- Source is currently private. Reach out for a walkthrough.