jevrecipes

Recipe catalog / outcome-framing

Identify gain and loss framing

Label whether wording presents a specified outcome through gains, losses, both, or neither.

You need to label gain and loss wording in a decision prompt or research stimulus.

Explore this recipe interactively ยท Source and implementation guide

Use outcome-framing 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 { outcomeFraming } from 'jev-recipes/outcome-framing';

const result = await outcomeFraming({
  "text": "You keep 80 of your 100 points.",
  "outcome": "The player's points after the round; more points are better."
});
console.log(result);

Input contract

FieldTypeNeeded
textstringRequired
outcomestringRequired
contextstringOptional
minConfidencenumberOptional
Full input and result schemas
{
  "input": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "text": {
        "type": "string",
        "description": "The wording presented to the decision maker."
      },
      "outcome": {
        "type": "string",
        "description": "One focal outcome, including whose outcome it is and what counts as a benefit or harm."
      },
      "context": {
        "type": "string",
        "description": "Supplied references or baseline information needed to interpret the wording."
      },
      "minConfidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      }
    },
    "required": [
      "text",
      "outcome"
    ]
  },
  "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": [
          "gain",
          "loss",
          "mixed",
          "neutral",
          "unclear"
        ]
      },
      "confidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "probabilities": {
        "type": "object",
        "propertyNames": {
          "type": "string",
          "enum": [
            "gain",
            "loss",
            "mixed",
            "neutral",
            "unclear"
          ]
        },
        "additionalProperties": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "required": [
          "gain",
          "loss",
          "mixed",
          "neutral",
          "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 outcome-framing.

{
  "model": "demo-fixture",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "status": "ready",
  "verdict": "gain",
  "confidence": 0.96,
  "probabilities": {
    "gain": 0.96,
    "loss": 0.01,
    "mixed": 0.01,
    "neutral": 0.01,
    "unclear": 0.01
  }
}

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