3 browser-native chat surfaces (atlas-chat / atlas-hud / atlas-command, no build step) + 11 Python automation scripts (cluster, tray, finance, reminders, autonomy loops) + 2 patterns documented (cluster-then-polish, anti-impulse R1-R10) MIT licensed, anonymized from production stack.
2.8 KiB
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
- Cluster generates a first draft with explicit
polish_status: pendingYAML frontmatter - Output saved as Markdown file with full metadata (node, model, elapsed_s, prompt, draft_id)
- Polish review queue tracked in
~/.config/atlas/drafts/_registry.json - Operator OR a stronger model (Claude, GPT-4) reviews + edits + flips frontmatter to
polish_status: polished - Only
polisheditems are usable externally (sent to clients, published, etc.)
Reference implementation
scripts/cluster_then_polish.py — simple wrapper around any Ollama-compatible HTTP API.
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.