Skip to main content
Feature deep research runs a four-stage pipeline — scope, gather, analyze, synthesize — that examines how competitors have implemented specific features. For each feature you pass in, the pipeline identifies which competitors have built it, scrapes their implementations, analyzes patterns and edge cases, and produces a blueprint with recommended build order and a risk matrix. You can start a job manually or let it auto-chain from a completed mode=feature market research run.

Start feature deep research

Rate limit: 5 requests per minute.
object[]
required
The features to analyze. Each object must have an id, a name, and a source.
string
required
The product idea that provides context for the analysis. Maximum 5,000 characters.
string
UUID of the project to associate this job with. Pass null for unattached jobs.
string
UUID of the market research run that produced the features. Providing this gives the pipeline additional context.
202 response
Stream progress from GET /feature-research/{job_id}/events. Poll status from GET /feature-research/{job_id}/status.

Get job metadata

Returns lightweight metadata about a feature research job. Safe to poll while the job is running.
200 response
string
required
One of queued, running, completed, failed.
string
required
Current stage in the pipeline: queued, scope, gather, analyze, synthesize, completed.
object[]
The features the pipeline is processing, with their resolved IDs and names.
object
string
Present only on failed status. Human-readable description of what went wrong.

Get job status (lightweight)

Returns only the status fields without the feature list. Suitable for frequent polling.
200 response
Use last_event_seq as the cursor when reconnecting to the events stream.

Get full results

Returns the complete analysis output. Only available once the job has status: completed.
200 response
object
The competitor set the pipeline identified for each feature during the scope stage.
object[]
Per-feature analysis. Each entry contains implementations found in the wild, common design patterns, technical approaches, edge cases discovered, and the open-source landscape.
object
object[]
Web sources the pipeline consulted during the gather stage.
Returns 409 if the job has not yet completed. Poll GET /feature-research/{job_id}/status first and only call this endpoint when status is completed.

Stream feature research events

Subscribe to live progress for a feature research job. The stream uses cursor-based replay — reconnect at any sequence number and receive all missed events before switching to live delivery.
number
default:"0"
Resume from this event sequence number. Set to 0 to start from the beginning.
Each line is a JSON object with shape {"v": 1, "event": "<type>", "data": {...}}. The event types are:
If you connect with cursor=0 to a completed job, the server fast-paths and returns the full result as a single result event. You don’t need to replay the full event log.

Auto-chaining behavior

Feature deep research can be triggered automatically in two ways: From market research: Call POST /research with "mode": "feature". When the market research pipeline completes, it automatically starts a feature deep research job on the top 5 features it identified. You don’t need to call POST /feature-research manually. From build graphs: Call POST /build-graphs without a feature_research_id. The server automatically detects the latest completed feature research job for the project and injects its data into the LLM prompt.
When a feature deep research job completes, the platform fires a push notification with type: "feature_research_complete". If you’re building a mobile client, listen for this notification to know when results are ready.