jevrecipes

Recipe catalog / review-recommendation-kind

Classify a peer review's recommendation

What recommendation does the wording of review express: accept, minor revision, major revision, or reject?

An editor or review-management tool needs to read the recommendation implied by a free-text review, for example when the reviewer skipped the form field or when the text and the ticked box disagree.

Explore this recipe interactively ยท Source and implementation guide

Use review-recommendation-kind in TypeScript

Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.

import { reviewRecommendationKind } from 'jev-recipes/review-recommendation-kind';

const result = await reviewRecommendationKind({
  "review": "The paper addresses an important question and the experimental setup is generally careful. However, the central claim in Section 5 rests on the independence assumption introduced in Section 3, which the authors never test, and the baseline comparison omits the two strongest recent methods. I would need to see the assumption validated and the comparison extended before I could support publication. The writing issues I noted in the margins are secondary and easy to fix.",
  "minConfidence": 0.8
});
console.log(result);

Input contract

FieldTypeNeeded
reviewstringRequired
minConfidencenumberOptional
Full input and result schemas
{
  "input": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "review": {
        "type": "string"
      },
      "minConfidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      }
    },
    "required": [
      "review"
    ]
  },
  "result": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "model": {
        "type": "string"
      },
      "usage": {
        "type": "object",
        "properties": {
          "input_tokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "output_tokens": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "input_tokens",
          "output_tokens"
        ],
        "additionalProperties": false
      },
      "status": {
        "type": "string",
        "enum": [
          "ready",
          "review"
        ]
      },
      "verdict": {
        "type": "string",
        "enum": [
          "accept",
          "minor_revision",
          "major_revision",
          "reject",
          "unclear"
        ]
      },
      "confidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "probabilities": {
        "type": "object",
        "propertyNames": {
          "type": "string",
          "enum": [
            "accept",
            "minor_revision",
            "major_revision",
            "reject",
            "unclear"
          ]
        },
        "additionalProperties": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "required": [
          "accept",
          "minor_revision",
          "major_revision",
          "reject",
          "unclear"
        ]
      }
    },
    "required": [
      "model",
      "usage",
      "status",
      "verdict",
      "confidence",
      "probabilities"
    ],
    "additionalProperties": false
  }
}

Saved example result

This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo review-recommendation-kind.

{
  "model": "demo-fixture",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "status": "ready",
  "verdict": "major_revision",
  "confidence": 0.86,
  "probabilities": {
    "accept": 0.01,
    "minor_revision": 0.04,
    "major_revision": 0.86,
    "reject": 0.07,
    "unclear": 0.02
  }
}

Evaluation evidence

Fixture only

No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.

Use the evaluation guide to measure this decision on your own labeled cases.

Limitations

Related recipes