Rensei docs

Authoring Interview Workflows

The Interview palette group and its nodes: how to build start-with-conversation and conditional-interview workflow archetypes.

The interview workflow nodes and the archetypes described on this page are in beta. Node configurations and template shapes may change before general availability. Install the interview-v1 template to try the start-with-conversation archetype today; the conditional archetype (interview-conditional-v1) ships alongside it.

This page is for workflow authors - org admins or developers who build and maintain workflows on the canvas. If you are a participant looking for the end-user experience, see Running an Interview.

The Interview palette group

Interview nodes appear in their own Interview group in the node palette (between Composition and Orchestration). Open the palette, scroll to Interview, or type interview in the palette search.

The group contains seven nodes:

NodeKindPurpose
Interview ConfigFoundationalDeclares the interview's model profile, persona, capacity pool, and phase list
Interview PhaseFoundationalDefines a single phase; wire several into an Interview Config
Create Interview IssueActionCreates a tracker issue from the completed User-Spec
Interview StartedTriggerCanvas placeholder for the interview-started event
Interview LaunchActionMints an interview, notifies the recipient, and passes the interview id downstream
Interview GateGateSuspends the workflow until the interview completes, then routes to complete, abandoned, or timeout
Emit Gate CompletedActionVisible bridge node that signals the outer workflow after the inner interview finishes

Node reference

Interview Config

Node id: interview.config

The Interview Config node is the central declaration for a conversation. It carries the model profile, persona card, capacity pool, and the ordered list of interview phases. Other nodes (Interview Phase, Interview Launch) reference it by wiring into its input ports.

Input ports

PortTypeRequiredDescription
modelModel refNoLLM model profile to use. When left unconnected, set inline via the Model picker in the config panel.
personaCardAgent profile refNoThe persona card that shapes the interviewer's tone and approach. Select from your org's system personas.
capacityPoolCapacity pool refNoThe sandbox pool the interview agent runs in. Defaults to the org interview pool.
phasesPhase ref arrayNoAn ordered list of Interview Phase nodes to use. When left unconnected, define phases inline in the config panel.

Each input port has a Wire / Inline toggle in the config panel. In Inline mode you edit the value directly in the panel. In Wire mode the inline controls lock and the port expects an upstream edge - the compiled definition reads the wired value.

Output ports (result paths)

PortTypeDescription
completeInterviewResultRefCarries the assembled User-Spec when the participant finishes all phases and submits.
abandonedInterviewResultRefReserved for a future abandonment path; authorable but not yet produced in v1.
timeoutInterviewResultRefTaken when the interview exceeds its configured maximum duration.

The complete/abandoned/timeout ports on Interview Config are display-only hints showing the interview result shape. They do not produce real branches at runtime - Interview Config is a foundational node, not a gate. Real result-path routing goes through Interview Gate (the A5 archetype) or the built-in rensei.wait gate inside the interview-v1 template (the A4 archetype). See Archetypes below.

Phase composition: Wire-or-Inline

The phases slot supports two authoring styles:

  • Inline phases (default). Open the config panel, go to the Phases section, and click + Add Phase. You can choose from the six canonical phases (Context, Users, Core Problem, Features, Constraints, Success Criteria) or add a custom phase. Each phase has a title, orienting headline, rubric, and optional chip hints. Phases are reorderable with the up/down arrows on each row.
  • Wired phases. Drop one or more Interview Phase nodes on the canvas, connect their output ports to the phases input port of the Interview Config node, and set the phases slot toggle to Wire. The compiled definition reads phases in wire order. Use wired phases when you want to share a phase definition across multiple configs or when a phase is generated upstream.

Config panel sections

SectionControls
Model & InferenceModel picker + auth mode
Persona & PoolPersona card picker + capacity pool picker
Interview LogicCompletion criteria, max duration, repository
PhasesInline phase list with reorder / add / remove
Result PathsDisplay-only labels for complete, abandoned, timeout

Interview Phase

Node id: interview.phase

Defines a single phase of the interview. Use when you want to wire distinct phases into an Interview Config rather than edit them inline.

Ports

PortDirectionTypeDescription
inputinputInterview Config refOptional back-reference from an Interview Config node (for grouped display).
outputoutputInterview Phase refThe phase definition; wire to the phases input port of an Interview Config.

Config fields

FieldDescription
PhaseOne of the six canonical phases, or custom
TitleShort display label shown to the participant
Orienting headlineOpening sentence the agent uses to introduce the phase
RubricInternal instruction for what depth of information the phase should capture
Extraction fieldsStructured keys the agent writes into the phase summary card
Chip hintsOptional MoSCoW-style quick-reply chips shown in the chat UI

Create Interview Issue

Node id: interview.create_issue

Creates a tracker issue from the completed User-Spec. Appears in both the Interview and Issue Tracking palette groups.

Ports

PortDirectionTypeDescription
inputinputAnyReceives upstream data; carry at minimum issueDescription and interviewId.
outputoutputIssue resultThe created issue's tracker-native id and URL.

Key config fields

FieldDescription
issueDescriptionThe User-Spec markdown to set as the issue body. In the A4 archetype bind to {{ nodes.<gate>.output.issueDescription }}; in A5 bind to {{ nodes.<gate>.output.spec }}.
issueIdTracker-native or synthetic issue id. A4: {{ trigger.data.issueId }}. A5: {{ nodes.<gate>.output.interviewId }}.
interviewIdThe canonical interview id used for idempotent delivery (prevents double-writes on re-delivery). A4: {{ trigger.data.interviewId }}. A5: {{ nodes.<gate>.output.interviewId }}.

The node is idempotent on interviewId: if the interview has already produced a tracker issue, the node returns the stored issue id without writing again.


Interview Started (trigger)

Node id: trigger/interview.started

A canvas placeholder that makes the interview-started event visible in the workflow definition. It appears in the Triggers palette group (not Interview).

This node does not register a live webhook subscription. Interviews are launched imperatively - either by a participant opening the interview URL or by an Interview Launch node inside a running workflow. The trigger node exists so the interview-v1 template canvas is readable and the trigger envelope shape is visible to authors inspecting the YAML.

Trigger envelope output

FieldDescription
interviewIdThe canonical interview id
issueIdThe synthetic issue id (itvw-<interviewId>)
issueDescriptionThe full User-Spec markdown
userIntentA one-sentence summary for the research agent
projectNameThe project slug
organizationIdThe org id

Interview Launch

Node id: interview.launch

An action node that mints a new interview instance, notifies the recipient, and passes the interview id to downstream nodes - specifically to a paired Interview Gate. Use this node in the conditional archetype (A5) when an agent's fail path should route through a user interview before continuing.

Ports

PortDirectionTypeDescription
configinputInterview Config refOptional: pin a specific interview definition.
recipientUserIdinputUser refThe org member who will receive the interview. This is the interviewee, which may differ from the workflow trigger user.
outputoutput{ interviewId, recipientUserId }Wire this to the Interview Gate node immediately downstream.

Config panel fields

FieldDescription
RecipientThe org member who receives the interview invitation.
Model profileOptional override for the interview model. If empty, the project's published interview definition is used.
Interview definitionOptional pin to a specific interview definition version.
TimeoutDuration (in seconds) before the downstream gate times out. Projected onto the gate's gateConfig.timeoutMs.

Hard precondition

Interview Launch hard-fails at runtime if the project does not have a published interview-v1 template. Without it, no inner interview instance runs, the gate never receives a completion signal, and the workflow would stall indefinitely. Install and publish interview-v1 on the project before activating any workflow that uses Interview Launch. See Interview Template.


Interview Gate

Node id: interview.gate

A gate node that suspends the workflow until the interview launched by an upstream Interview Launch node finishes. On resume it routes to a named output handle based on the outcome.

Interview Launch and Interview Gate are always used as a pre-wired pair. The interview-conditional-v1 template drops them together. You can also wire them manually: connect the output port of Interview Launch to the input port of Interview Gate, then wire the complete, abandoned, and timeout handles to downstream nodes.

Ports

PortDirectionTypeDescription
inputinputLaunch output refReceives the interviewId from Interview Launch.
completeoutputInterviewResultRefTaken when the participant finishes all phases and the inner instance writes the tracker issue. Carries spec, userIntent, and interviewId.
abandonedoutputInterviewResultRefReserved; authorable but not produced in v1 (see note below).
timeoutoutputInterviewResultRefTaken when the gate's configured timeout elapses without a completion signal.

The abandoned handle is present on the canvas and serializes correctly, but no event produces it in v1. Stopping an in-progress interview pauses it rather than abandoning it, and does not emit a completion signal. Wire the abandoned handle to a safe terminal (a no-op or a notify node) to prevent an unrouted edge. A full abandonment path is planned for a future release.

Referencing gate output downstream

Downstream nodes (typically Create Interview Issue, agent dispatch) read the gate's result using {{ nodes.<gateNodeId>.output.<field> }} expressions:

{{ nodes.interview_gate.output.spec }}
{{ nodes.interview_gate.output.userIntent }}
{{ nodes.interview_gate.output.interviewId }}

Auto-bind does not derive these expressions automatically - you must author them explicitly in the downstream node's config panel or YAML.


Emit Gate Completed

Node id: interview.emit_gate_completed

A thin action node that emits the inner-to-outer completion signal. It appears at the end of the inner interview-v1 template canvas, wired after Create Interview Issue.

As a workflow author you will not need to drop this node manually - it is pre-wired in the interview-v1 template. It is visible on the canvas so that the cross-instance signal (the bridge that resumes the outer workflow's Interview Gate) is explicit rather than hidden inside the issue-creation step.

The node is a no-op when no outer gate is waiting, so installing interview-v1 on a project that has no A5 workflows is safe.


Archetypes

Archetype A4 - Start with a conversation

Use this pattern when the primary entry point for a project's work is a user interview: the participant starts the interview, works through all phases, and the platform creates a tracker issue and dispatches the research → backlog pipeline automatically.

This is the default interview-v1 template. Install it on the project and it handles the full flow without canvas editing.

Canvas shape (simplified):

[trigger: interview.started]

[interview.config]   ←  optional: wire model/persona/pool/phases

  (built-in gate: waits for interview completion)

[interview.create_issue]
  issueDescription = {{ nodes.interview_v1_wait_gate.output.issueDescription }}
  interviewId      = {{ trigger.data.interviewId }}

[agent dispatch: research]

[agent dispatch: backlog-writer]

Flow:

  1. A participant opens the project's interview URL or is directed there by the platform.
  2. The agent guides them through the configured phases.
  3. The participant clicks Send to Rensei at the end of the six-phase conversation.
  4. Create Interview Issue writes the User-Spec to the tracker.
  5. The research → backlog-writer chain runs automatically.
  6. The finished backlog item advances to Triage, where the standard SDLC takes over.

When to use it: the spec does not yet exist and needs to be elicited from a non-technical stakeholder. Works well for new features, scoping sessions, and discovery work.


Archetype A5 - Conditional interview (fail-path elicitation)

Use this pattern when a running agent lacks sufficient context and needs to pause and gather requirements from a user before continuing. An agent processes an issue, determines it cannot proceed (missing context, ambiguous requirements, no spec), and routes its fail path into an interview. When the user finishes the interview the outer workflow resumes with the gathered spec.

This is the interview-conditional-v1 template.

Canvas shape:

[trigger: agent.exit]
      ├─ success ──→ [continue / close]
      └─ fail    ──→ [interview.launch]
                           ↓ (plain edge)
                     [interview.gate]
                        complete │  timeout │  abandoned │
                            ↓          ↓          ↓
                    [interview.create_issue]  [escalate]  [terminal]
                      spec       = {{ nodes.interview_gate.output.spec }}
                      interviewId = {{ nodes.interview_gate.output.interviewId }}

                    [agent dispatch: research]

                    [agent dispatch: backlog-writer]

Flow:

  1. An agent processes an issue and returns a fail result (missing context or explicit handoff signal).
  2. Interview Launch mints a new interview instance and sends a notification to the designated recipient.
  3. The outer workflow suspends at Interview Gate.
  4. The recipient opens the interview URL, completes all phases, and submits.
  5. The inner interview-v1 instance writes the tracker issue, then emits the completion signal.
  6. Interview Gate resumes and routes to complete.
  7. Create Interview Issue receives spec and interviewId from the gate's output.
  8. The research → backlog-writer chain runs with the fresh spec.

Setup requirements:

  • interview-v1 must be installed and published on the project (Interview Launch hard-fails otherwise).
  • The Interview Launch node's Recipient field must identify the org member who will be interviewed. This person receives an in-app notification when the interview is ready.
  • Wire the timeout handle to a meaningful fallback - at minimum an escalation or a closing action.

Result path bindings (copy these into the downstream node's config):

Downstream nodeFieldExpression
Create Interview IssueissueDescription{{ nodes.<gateId>.output.spec }}
Create Interview IssueissueId{{ nodes.<gateId>.output.interviewId }}
Create Interview IssueinterviewId{{ nodes.<gateId>.output.interviewId }}
Agent dispatchuserIntent{{ nodes.<gateId>.output.userIntent }}

Replace <gateId> with the node id shown in the canvas - hover the Interview Gate node and copy the id from the config panel header.


Result paths and downstream routing

Both archetypes produce a User-Spec that downstream nodes consume. The result shape is the same regardless of archetype:

FieldDescription
specThe full User-Spec in Markdown format. Set as issueDescription on Create Interview Issue.
userIntentA concise one-sentence summary suitable for the research agent's userIntent input.
interviewIdThe canonical interview id. Use for idempotency on Create Interview Issue.

Routing the timeout path

When a gate times out without a completion signal:

  • The timeout output carries an empty spec and userIntent.
  • Do not wire a Create Interview Issue node on the timeout path - an empty spec produces a low-quality tracker issue.
  • Recommended: wire to an escalation node (email, Linear comment, or Slack notification) that tells the requestor the interview timed out and needs to be restarted.

Routing the complete path

The complete output carries the full spec. The canonical downstream sequence is:

[complete] → [interview.create_issue] → [agent.dispatch_stage: research]

                                        [agent.dispatch_stage: backlog-writer]

Installing the built-in templates

interview-v1 (A4 archetype)

The interview-v1 template is the canonical start-with-conversation workflow. Install it on any project where interviews are the entry point for new work. An operator installs it from a platform checkout:

pnpm tsx scripts/install-authored-interview-v1.ts --org my-org --project my-project

Verify in the project's Workflows → System Templates panel - interview-v1 should show as Published. See Interview Template → Installing for the full install reference (there is no self-serve install UI or rensei CLI command for template installs today).

interview-conditional-v1 (A5 archetype)

The interview-conditional-v1 template is the conditional fail-path archetype. It ships with Interview Launch and Interview Gate pre-wired and result-path bindings pre-authored. The same installer handles it via --template:

pnpm tsx scripts/install-authored-interview-v1.ts --org my-org --project my-project --template interview-conditional-v1

interview-v1 must also be installed on the same project - the conditional template depends on it for the inner interview instance.


Common authoring mistakes

MistakeWhat goes wrongFix
Wiring downstream Create Interview Issue to Interview Config's complete portConfig result ports are display-only; the edge serializes to step.next not step.branches, so all three result paths fan-out to the same next node regardless of outcome.Use Interview Gate for real result-path routing.
Forgetting to set interviewId on Create Interview IssueRe-deliveries write duplicate tracker issues.Always bind interviewId = {{ ... }} (see the bindings table above).
Leaving the abandoned handle unwiredNo current v1 path fires abandoned, but if a future release adds an abandonment event, an unwired handle would leave the workflow in a hung state.Wire to a benign terminal (a no-op or notify node).
Using Interview Launch without interview-v1 publishedInterview Launch hard-fails immediately; the outer workflow errors before the gate is ever registered.Install and publish interview-v1 on the project first.
Putting Interview Gate without Interview Launch upstreamThe gate's signalFilter references the upstream launch node's output. Without the launch node, the filter cannot resolve and the gate hangs forever.Always use the pre-wired pair from the template, or wire them manually in order.

On this page