Build Log
Commons Ideate ships, then pivots the same day
July 28, 2026
A freeform AI chat for shaping half-formed Commons ideas was built, used, and rejected by Zeb within one day — rebuilt around the real differentiator: synthesizing a conversation someone already had elsewhere, not out-chatting a chat.
Timeline
What shipped
Commons "Ideate" entry point (/commons/ideate) — a conversational surface for non-technical contributors to shape a half-formed idea before any Mission exists
commonsIdeationSessions + commonsIdeationTurns schema, Crucible-pressure-tested (architect persona) to confirm this always produces a review artifact (Mission with origin='commons_propose', visibility='private'), never a contributor-originated live Mission
First build: a freeform live chat loop — shipped, used, and found to provide no real value over a generic AI chat the contributor already has access to
Reworked ideation-engine.ts into two narrower AI jobs: analyzeIdeationInput (reads pasted text, names at most 1-2 genuine gaps) and synthesizeIdeationSession (converts the full transcript into a structured Mission draft) — the synthesis half was unchanged from the first build, only the chat loop around it was replaced
Reworked ideation-actions.ts and IdeateChat.tsx to a paste-in flow: submit pasted text -> get gap analysis -> optionally answer up to 2 gap questions -> synthesize into a Mission draft
IdeateSubmittedPage (/commons/ideate/submitted/[missionId]) — contributor-facing confirmation page, deliberately not the Workbench-side Mission detail view, scoped by primaryStewardId not ownerId
Rate-limited submission (forgekit-ai/rate-limit's createRateLimiter, reused unchanged)
“it didn't provide any suggestions of value, it couldn't do any research that I asked... I'd rather use chat.”