Skip to main content

Ideas

An Idea is a proposed Work — a title + description + suggested categories / fields / plugins that the platform is offering for you to build into a finished website. Ideas are the queue between "I have a topic" and "I have a Work".

You'll see Ideas at /ideas. They show up from three sources:

SourceWhere it comes from
auto-signupGenerated automatically when you sign up, based on your onboarding answers.
user-refreshYou hit Suggest more on /ideas.
discoverSurfaced from the platform's discovery feeds (curated catalogs, trending topics).
scheduledA scheduled refresh job (account-level cadence).
user-manualYou typed one directly via the + Add button or /new → Idea chip.
missionSpawned by a Mission tick — carries a missionId back-reference.

All sources produce the same Idea shape; only the source field on the Idea distinguishes them.

Idea lifecycle​

StatusWhat it means
PENDINGNew, waiting for you to act on it.
QUEUEDYou hit Build. Sits in the WorkAgent queue waiting for a free slot.
BUILDINGA WorkAgent worker is actively generating the Work.
ACCEPTEDA Work was successfully built (or manually linked). The acceptedWorkId points at the Work.
FAILEDBuild hit an error. The Idea row carries failureKind (transient vs permanent) + failureMessage.
DISMISSEDYou said "not interested". Won't resurface on refreshes. Not reversible from the UI.

Build vs Accept​

Two ways an Idea turns into a Work:

  • Build — the common path. Hands the Idea to the WorkAgent, which spawns a fresh Work and runs the generation pipeline with the Idea's prompt + suggested categories pre-filled. Use when you want the platform to do the work.
  • Accept — manual link to a pre-existing Work you already built. Use when you've already built the thing and just want the Idea row to point at it so the catalog reflects that the proposal is done.

The Build button on an IdeaCard is the primary CTA. Accept lives on the Mission detail page for Ideas spawned by a Mission, when you want to link to a Work you built outside the queue.

Neither always means a human pressed something. When the spawning Mission has auto-build Works turned on, every Idea that Mission spawns is queued for build into its own Work on the same tick that created it — nobody clicks Build. It is the same Build path with the same per-Mission and account-wide budget caps: when a cap is hit the build is skipped, not retried. See Auto-build Works.

Pressed or automatic, every build runs through one gate (Accept does not — it only links a Work you already have): Enable Work agent on /settings/work-agent is unchecked on every new account, and while it is off the API answers 400 "Work agent is disabled." — the Idea still commits its PENDING → QUEUED transition, but no build request is created and nothing generates. See Autonomous Operation for all three gates, or Build a Site Fully Autonomously from a Template for the walkthrough.

Refreshing Ideas​

The Suggest more button on /ideas triggers the AI research job to generate fresh proposals based on your account context (existing Works, accepted Ideas, dismissed Ideas — the model uses all three to lean adjacent to wins, away from rejections).

The refresh is rate-limited per account (currently one refresh per N minutes, surfaced as rate-limited on the button when blocked). When the cap is hit the page swaps in a friendly "try again soon" subtitle rather than erroring.

Refreshes pull from your account's research context, not from any individual Mission. To generate Mission-specific Ideas, run a Mission tick (auto on the Mission's cron, or via Run now).

Failed Ideas​

When a build fails, the Idea moves to FAILED and carries diagnostic info:

Failure kindWhat to do
transient-networkHit Retry — usually self-heals on the next try.
transient-rate-limitWait, then Retry. The upstream provider is throttling.
transient-upstream-5xxHit Retry. External AI/search provider returned a 5xx.
transient-pluginPlugin glitched. Retry; if it persists, check the plugin's health.
permanent-invalid-inputThe prompt or suggestion can't be built. Edit the Idea or Dismiss.
permanent-unknownEdge case the classifier didn't recognize. Rebuild (fresh attempt).

Retry transitions the same Goal back to QUEUED with the previous attempt's context intact. Rebuild spawns a fresh Goal with no carry-over — use it when you suspect the previous attempt's context is the problem.

Mission-spawned Ideas​

Ideas spawned by a Mission carry a missionId back-reference and show up both:

  • On the global /ideas page (alongside non-Mission Ideas).
  • On the Mission's detail page, filtered to just that Mission's Ideas.

Use the Mission detail page when you want context — you can see the Mission's description and the Ideas it produced side-by-side. Use /ideas when you want to triage everything at once.

If that Mission has auto-build Works on, its Ideas do not wait for you at PENDING — each one is queued for build as soon as it is spawned, so you will meet most of them already QUEUED, BUILDING or ACCEPTED.

Cost & budget​

Every build costs AI credits. Per-Idea spend rolls up against the Mission (if Mission-spawned) and your account-wide cap. See Budgets & Usage for how to set caps and what happens when one is hit.

API​

The same verbs are reachable via the API + MCP server:

VerbEndpoint
List IdeasGET /api/me/work-proposals?statuses=…
Get oneGET /api/me/work-proposals/:id
Create user-manualPOST /api/me/work-proposals
RefreshPOST /api/me/work-proposals/refresh
BuildPOST /api/me/work-proposals/:id/build
Retry / RebuildPOST /api/me/work-proposals/:id/{retry,rebuild}
DismissPATCH /api/me/work-proposals/:id/dismiss
AcceptPOST /api/me/work-proposals/:id/accept
Per-Idea budgetGET /api/me/work-proposals/:id/budget

Same routes are exposed as MCP tools (list_ideas, build_idea, etc.) for external MCP clients — see the MCP Server docs.