Adding a QA node
Add a QA node to your workflow from the builder, then write the analysis criteria you want applied. The criteria are a prompt: describe what to look for and what to return. Ask for JSON. These four fields are recognised and shown as structured results:
Anything else you return is kept in the raw response but not broken out separately.
What gets analysed
Analysis is per node, not per call. Each node the conversation passed through is scored on its own, so you can see which part of the workflow went wrong rather than just that something did. A result for one node looks like this:Choosing the model
By default QA uses the same LLM as the workflow. Turn that off to pick a different provider, model, and key for analysis alone — useful when you want a cheaper model for scoring than for talking, or a stronger one. QA analysis is a separate LLM call. Its token usage is added to the run’s usage breakdown underQAAnalysis, so you can see exactly what each analysis cost.
Controlling which calls are analysed
Analysing every call gets expensive at volume. Three settings limit it:
You can also disable a QA node entirely without deleting it.
Viewing results
Open the Run Detail page for any run to see its QA results. If you are reading runs through the API, results live in the run’sannotations field, keyed by QA node. Each node result keeps the model’s raw_response alongside the parsed fields, so you can still see what the model said if the output was not valid JSON.
A result will tell you one of three things:
- Analysis ran — you get
node_resultswith a result per node - Skipped — the reason is included, for example a call below the minimum duration or one excluded by sampling
- Error — analysis was attempted and failed