Skip to content

Ask a yes/no question

Use a predicate decision when a support email must establish one claim, such as whether the writer disputes a charge. Its value is one of the strings "true", "false", or "unknown"—it is not a JSON boolean. Unknown means the supplied evidence supports neither yes nor no.

Save this definition as config/support_triage/triage/dispute.step.yaml and list dispute in that flow's steps. The workflow needs defaults.model, or add model to this step.

type: decision
sources:
  message:
    pointer: /payload/message
question:
  type: predicate
  criteria:
    - Return true for an explicit disputed charge.
    - Return false for an explicit statement that no charge is disputed.
    - Return unknown when neither conclusion is supported.
instructions: Does the writer dispute a charge? Use only the supplied message.

For “I dispute the duplicate charge,” the public record at /flows/triage/steps/dispute can contain:

{
  "status": "completed",
  "result": {
    "questionId": "dispute",
    "type": "predicate",
    "answerability": {"status": "answerable", "issues": []},
    "reason": "The writer explicitly disputes a duplicate charge.",
    "evidence_strength": "strong",
    "answer": {"value": "true"}
  }
}

For “Please send my invoice,” do not infer false merely because no dispute was mentioned. The native result uses answer: {"value": "unknown"}, answerability.status: "not_answerable", and an issue such as no_supported_answer; the step is needs_review. It may still have evidence_strength: "strong" when absence of support under the criteria is clear. Conflicting statements may instead justify conflicting_information. See shared decision rules for reason, strength, status, and multiple questions.

For advanced use, add other named sources, use format: json for structured source data, or use a full question in questions when assessing several claims. Test explicit yes, explicit no, absent evidence, and conflict cases with decision evaluations.