{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EvalLoop AI Compare A vs B result",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "winner",
    "confidence",
    "dimensions",
    "key_differences",
    "issues_a",
    "issues_b",
    "recommended_response",
    "recommendation",
    "improvements"
  ],
  "properties": {
    "winner": {
      "type": "string",
      "enum": [
        "A",
        "B",
        "Tie"
      ]
    },
    "confidence": {
      "type": "string",
      "enum": [
        "Low",
        "Medium",
        "High"
      ]
    },
    "dimensions": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "factuality",
        "relevance",
        "instruction_following",
        "completeness",
        "safety",
        "clarity"
      ],
      "properties": {
        "factuality": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        },
        "relevance": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        },
        "instruction_following": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        },
        "completeness": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        },
        "safety": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        },
        "clarity": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "a_score",
            "b_score",
            "better"
          ],
          "properties": {
            "a_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "b_score": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "better": {
              "type": "string",
              "enum": [
                "A",
                "B",
                "Tie"
              ]
            }
          }
        }
      }
    },
    "key_differences": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "issues_a": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title",
          "severity",
          "quote",
          "why",
          "suggested_fix"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "Low",
              "Medium",
              "High"
            ]
          },
          "quote": {
            "type": "string"
          },
          "why": {
            "type": "string"
          },
          "suggested_fix": {
            "type": "string"
          }
        }
      }
    },
    "issues_b": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title",
          "severity",
          "quote",
          "why",
          "suggested_fix"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "Low",
              "Medium",
              "High"
            ]
          },
          "quote": {
            "type": "string"
          },
          "why": {
            "type": "string"
          },
          "suggested_fix": {
            "type": "string"
          }
        }
      }
    },
    "recommended_response": {
      "type": "string",
      "enum": [
        "A",
        "B",
        "Tie"
      ]
    },
    "recommendation": {
      "type": "string"
    },
    "improvements": {
      "type": "string"
    }
  }
}