At 09:00 UTC on 2026-05-14, docs.gritiva.com had 0 published docs. The system existed (a FastAPI backend + Next.js frontend + Celery workers + an LLM drafter) but had been sitting dormant since August 2025. By 21:00 UTC the same day, the site had 56 docs live across 8 categories, plus a fully redesigned visual aesthetic.
This post walks through how — what we automated, what we wrote by hand, what broke, and what we learned about LLM-drafted documentation.
We poured rich meta.audience / meta.purpose / meta.module_hints / meta.key_terms into the document creation calls, expecting the planner LLM to read them and stay on-topic. It didn't. The first drafts of "Concepts: Scope" and "Concepts: Mesh" hallucinated generic project-management theory and 802.11s WiFi mesh content respectively, with zero reference to GritivaCore.
We documented this as the meta-ignored failure mode and worked around it with redraft notes. The real fix — plumbing meta.* into the planner's LLM prompt — is on our roadmap.
In the v1 Quick Start draft, the LLM hallucinated sudo apt install gritivacore (which doesn't exist) instead of using the curl ... | sudo bash install we'd given as context in a question answer.
Workaround: in the redraft notes field, prefix every literal command with "MUST INCLUDE EXACTLY" and the LLM honors it. The v3 Quick Start has all 4 verbatim commands, no hallucinated apt.
The very first dogfood attempt at a redraft hit IntegrityError: duplicate key value violates unique constraint "uq_doc_jobs_active_unique_doc" — the redraft handler tried to INSERT a new DocJob while the previous one was still in needs_input. PR #58 fixed it. We never would have found it without driving traffic through.
Mid-day, the same fix appeared to revert from prod three times in a row. Root cause: /var/www/vhosts/gritiva.com/ is a Git working tree on branch recon-safe-additions-2026-05-13 (NOT main), and other Claude Code sessions on the same server periodically run git checkout -- . && git pull origin main which wipes any ad-hoc sudo cp deploys. Full write-up. Workaround: deploy via git checkout origin/main -- <subtree>, not scp.
Runbooks — 8 of them. Each one is operationally specific (exact commands, exact severity assessments, exact mitigations); the LLM produces something that looks like a runbook but isn't actionable.
The whole pipeline run cost about $1.20 in OpenAI API spend (~80 LLM calls across 20 docs × 4 stages). The hand-written content cost a couple hours of focused writing. The visual upgrade was about 4 hours of frontend work.
Compared to "hire a tech writer for 2 weeks at $5k", the trade-off is real. The catch is — you cannot ship the LLM output as v1. You need to redraft each one with strong notes, AND you need to hand-write anywhere voice or precision matters.