Documentation Index
Fetch the complete documentation index at: https://docs.corti.ai/llms.txt
Use this file to discover all available pages before exploring further.
[
{
name: "interviewing-expert",
type: "reference",
}
]
The Interviewing expert manages questionnaire-style interviews with the user. Use this expert whenever the user is answering or progressing through a questionnaire — always pass the questionnaire data_part (and its ID) when available so the expert can follow the correct structure and logic.
When invoking this expert, set the text argument to the raw content of what the user just said or answered, with no extra commentary, prompts, or instructions.
Capabilities
The Interviewing expert can:
- Drive structured interviews that follow a provided questionnaire definition
- Guide the conversation question-by-question and adapt based on responses
- Track answers and resolve conditional flow (
next, defaultNext, conditions)
- Return structured
questionnaire_response artifacts the orchestrator can consume
Use cases
- Patient intake and history-taking
- Clinical assessments and screening questionnaires
- Research and survey data collection
- Any structured, multi-step information-gathering workflow
Documentation
Questionnaire
questionnaireId: string (required)
version: string | number (required)
startQuestion : string (required, but will be optional soon; ID of a question)
questions: Question[] – list of unique IDs (required)
title, description, meta: optional
Question (Discriminated by type)
Common fields for all question types:
id: string (required, unique)
type: one of the literals below (required)
boolean
text_short
text_long
number
date_time (with mode: date | time | datetime)
scale (with min, max, optional step, optional labels[])
single_choice (with options[])
multi_choice (with options[], optional maxSelections)
text: string (required)
guideline: string (optional, instructs model to provide guidelines to the end user, can be used to augment question text)
facets: string (optional, hints for the LLM on how to populate and interpret user answers)
required: boolean (optional; if true, agent must collect a valid answer)
conditions: Condition[] (optional; controls visibility/flow)
defaultNext: string (optional; ID of the next question if no option-level next applies)
meta: object (optional)
Options (for choice questions)
value: string | number | boolean
label: string
guideline: string (optional)
next: string (optional, overrides defaultNext when chosen)
Conditions
Operators: =, !=, <, <=, >, >=, contains, not_contains, in, not_in, exists, not_exists
question: string – the source question ID to evaluate
operator: as above
value: required for all operators except exists/not_exists
Example requests
1. Initial Request
User provides an incomplete or ambiguous answer (starts the flow):
{
"message": {
"role": "user",
"kind": "message",
"messageId": {generateUUID()},
"parts": [
{
"kind": "text",
"text": "Answer to the questionnaire: I'm ok satisfied"
},
{
"kind": "data",
"data": {
"type": "questionnaire",
"questionnaire": {
"questionnaireId": "sleep-survey-v1",
"version": "1.0",
"startQuestion": "question-1",
"questions": [
{
"id": "question-1",
"type": "scale",
"text": "How satisfied are you?",
"min": 1,
"max": 5
},
{
"id": "question-2",
"type": "scale",
"text": "How many hours of sleep did you have?",
"min": 0,
"max": 12
},
{
"id": "question-3",
"type": "text_short",
"text": "How well rested do you feel?"
},
{
"id": "question-4",
"type": "single_choice",
"text": "How many interruptions did you have?",
"options": [
{"value": "none", "label": "None at all"},
{"value": "few", "label": "A few"},
{"value": "lots", "label": "Lots"}
]
}
]
}
}
}
]
}
}
Agent response
{
"task": {
"id": "<task_id>",
"contextId": "<context_123>",
"status": {
"state": "completed",
"message": {
"role": "agent",
"parts": [
{
"kind": "text",
"text": "Thanks, how many hours of sleep did you have?"
}
],
"messageId": "<message_id>", // For client use to track messages
"taskId": "<task_id>",
"contextId": "<context_123>",
"kind": "message"
}
},
"artifacts": [{
"artifactId": "<artifact_id>",
"parts": [
{
"kind": "data",
"data": {
"answers": {
"question-1": 3
},
"is_completed": false,
"next_question_id": "question-2",
"questionnaire_id": "sleep-survey-v1",
"version": "1.0"
},
"metadata": {
"type": "questionnaire_response"
}
}
]
}],
"history": [
// ...
],
"metadata": {
// contains metadata related to task execution
// not relevant for purposes of input/output
},
"kind": "task"
}
}
2. Second Request
User clarifies and completes the missing information:
{
"message": {
"role": "user",
"kind": "message",
"messageId": {generateUUID()},
"contextId": "<context_123>",
"parts": [
{
"kind": "text",
"text": "I had 7 hours of sleep"
}
]
}
}
Agent response
{
"task": {
"id": "<task_id>",
"contextId": "<context_123>",
"status": {
"state": "completed",
"message": {
"role": "agent",
"parts": [
{
"kind": "text",
"text": "Thanks, how many interruptions did you have while sleeping?"
}
],
"messageId": "<message_id>", // For client use to track messages
"taskId": "<task_id>",
"contextId": "<context_123>",
"kind": "message"
}
},
"artifacts": [{
"artifactId": "<artifact_id>",
"parts": [
{
"kind": "data",
"data": {
"answers": {
"question-1": 3,
"question-2": 7
},
"is_completed": false,
"next_question_id": "question-3",
"questionnaire_id": "sleep-survey-v1",
"version": "1.0"
},
"metadata": {
"type": "questionnaire_response",
}
}
]
}],
"history": [
// ...
],
"metadata": {
// contains metadata related to task execution
// not relevant for purposes of input/output
},
"kind": "task"
}
}
3. Final Request
User clarifies and completes the missing information:
{
"message": {
"role": "user",
"kind": "message",
"messageId": {generateUUID()},
"contextId": "<context_123>",
"parts": [
{
"kind": "text",
"text": "I feel well rested and was not interrupted"
}
]
}
}
Agent response (final result):
{
"task": {
"id": "<task_id>",
"contextId": "<context_123>",
"status": {
"state": "completed"
},
"artifacts": [{
"artifactId": "<artifact_id>",
"parts": [
{
"kind": "data",
"data": {
"type": "questionnaire_response",
"answers": {
"question-1": 3,
"question-2": 7,
"question-3": "Well rested",
"question-4": "none"
},
"is_completed": true,
"next_question_id": null,
"questionnaire_id": "sleep-survey-v1",
"version": "1.0"
},
"metadata": {
"type": "questionnaire_response"
}
}
]
}],
"history": [
//...
],
"metadata": {},
"kind": "task"
}
}