# Pattern: Cluster-then-Polish > Local 7B-8B models generate volume. Claude / human polishes signal. ## Problem Open-source LLMs (qwen2.5:7b, llama3.1:8b, hermes3:8b on consumer hardware) are good at: - Classification / categorization - Embeddings / RAG retrieval - Code completion (within trained languages) - Structured output (JSON, tables) - Triage of inbox / queues at volume They are **bad** at: - Narrative copywriting for clients - Strategic analysis without grounded data - Tone / voice consistency - Factual claims — they will hallucinate numbers, dates, names - Anything where wrong output sent externally has cost ## Pattern 1. Cluster generates a first draft with explicit `polish_status: pending` YAML frontmatter 2. Output saved as Markdown file with full metadata (node, model, elapsed_s, prompt, draft_id) 3. Polish review queue tracked in `~/.config/atlas/drafts/_registry.json` 4. Operator OR a stronger model (Claude, GPT-4) reviews + edits + flips frontmatter to `polish_status: polished` 5. Only `polished` items are usable externally (sent to clients, published, etc.) ## Reference implementation `scripts/cluster_then_polish.py` — simple wrapper around any Ollama-compatible HTTP API. ```python from cluster_then_polish import draft, save_draft d = draft( prompt="Schrijf cold-WhatsApp voor Tilburg lunchroom", task='chat', node_pref='pc', purpose='cold_outreach', ) save_draft(d, '~/.config/atlas/drafts/lunchroom_outreach_001.md') # operator reviews -> mark_polished(d['draft_id']) ``` ## Real-world data (production) After 7.5 hours of perpetual loop across 3 nodes: - 1172 autonomy outputs generated - ~5-10% immediately useful (operator polishes light) - ~30% spark a useful follow-up question - ~60% are noise (still saved for pattern detection later) - 0% should be sent externally without review The pattern is not "less work" — it is "different work". Operator becomes editor, not writer. The cluster does the cold-start text generation that's the worst part of writing. ## When NOT to use this pattern - When you have Claude API access and the task is small enough to just call Claude directly - When the output must be perfect (legal documents, financial figures, contracts) - When you don't have a polish step set up — generating drafts you never review is worse than no drafts ## Anti-pattern to avoid Don't trust cluster output because it "looks confident". 7B models will produce well-formatted Dutch with hallucinated company names, wrong euro amounts, invented words. Production example: > qwen2.5:7b output: "Bisogno's marktshare neemt toe met €4.578 miljoen, Inbrengking bleef stabiel" > > Reality: revenue is €4,578 (not millions), "Inbrengking" is not a Dutch word, "marktshare" was confused with revenue concentration percentage. The `polish_status: pending` flag exists because of this exact failure mode.