Skip to content

04 Dimensions

Config reference

The JSON structure of a prompt, field by field, with a complete example.

Optional. You don't need this to get started. Back to the quickstart

You don’t have to write this JSON by hand. Turn on Prompt Designer in the agent’s settings and the agent writes it with you from a description of the Dimensions you want, or you can paste JSON in this shape into that chat and ask the agent to save it. Saved prompts are listed on the Prompts tab. See Design custom Dimensions.

A prompt is a JSON object with four top-level fields. It is shaped like a function definition: a name, a description, the instructions, and the fields to fill in.

FieldRequiredWhat it is
nameYesA function-style name, such as extract_support_ticket_info
descriptionYesOne sentence on what the prompt extracts. Metadata only.
contextYesThe instructions sent with every conversation. See Write the context.
parametersYes{ "type": "object", "properties": { ... }, "required": [ ... ] }

Each key is a Dimension name in snake_case. Each value has a description and a type:

Output typeJSON
Fixed category"type": "string", "enum": ["billing", "delivery", "none_detected"]
Dynamic label"type": "string"
Verbatim quote"type": "string"
Score"type": "integer"
Boolean"type": "boolean"

List every Dimension in required, scores included. For a score, say in its description when to leave it empty, for example “Leave empty if there is not enough signal”. See Predicted scores.

  • Valid strict JSON. A line break typed inside a string value makes the file invalid; write \n instead.
  • Every category list ends with none_detected, with no duplicates, in snake_case.
  • Every Dimension in properties is also in required.
{
"name": "extract_support_ticket_info",
"description": "Why customers contact support, whether the issue was resolved, and their own words.",
"context": "Input:\nEach record is one support ticket thread between a customer and our agents.\n\nRules:\n- Use only what the text states.\n- If there is no signal, return 'none_detected'.",
"parameters": {
"type": "object",
"properties": {
"issue_category": {
"description": "The customer's main issue.\n- 'billing': charges, refunds, invoices.\n- 'technical': the product is not working.\n- 'account_access': login, password, locked account.\n- 'none_detected': no issue stated.",
"type": "string",
"enum": ["billing", "technical", "account_access", "none_detected"]
},
"resolved": {
"description": "true if the thread ends with the issue fixed or the question answered.",
"type": "boolean"
},
"effort_1to5": {
"description": "How hard the customer had to work to get help, 1 = effortless, 5 = very hard.",
"type": "integer"
},
"issue_verbatim": {
"description": "The customer's own words describing the issue, copied exactly, at most 30 words. If none, return 'none_detected'.",
"type": "string"
}
},
"required": ["issue_category", "resolved", "effort_1to5", "issue_verbatim"]
}
}