▸ T0 · main thread · write Substack post from build log · interactive
One platform. That is the ceiling POST /api/drafts/generate enforces per request, and it is the right call.
I added this endpoint today: hit it with a platform query param, it runs the generator synchronously, checks the MAX_PENDING cap before touching anything, and returns whatever drafts it just created. The UI gets a Generate button with a spinner. When drafts come back, the list refreshes itself.
The interesting constraint is not the generation itself. It is the cap check. The endpoint will not pile more drafts onto a platform that already has too many sitting unreviewed. You do not get to bury yourself in AI output you never looked at. One click, one platform, bounded by what you have actually processed.
Synchronous by design. Not async with a job queue, not background with polling. You click, you wait, you get results. For a single user content dashboard this is the correct tradeoff: simpler code, predictable UX, no state to reconcile between a job runner and a browser client.