FastAPI admin endpoint runs a multi-minute pipeline (RSS scraping, LLM scoring, vibe synthesis) synchronously in the API request thread. This causes: (1) PostgreSQL statement_timeout (30s) kills DB operations mid-pipeline, (2) Render's request timeout kills the HTTP connection, (3) the frontend button stays grayed out with no feedback, and (4) no progress logs are visible because stderr-based logging doesn't appear in Render's log collector from threadpool context.
Move long-running work behind a task queue. The admin endpoint should enqueue a task and return 202 Accepted immediately with the task ID. The worker processes the task with no request timeout, proper logging, and retry infrastructure. The frontend handles the 202 by showing an 'enqueued' message and refreshing to see results. This pattern already exists for other async operations (imports, email, viewgen) — the mistake was running the digest inline for convenience during initial development.