jevrecipes

Recipe catalog / task-duplicate

Compare tasks for duplicate work

Decide whether two tasks request the same outcome, overlapping work, or distinct work.

You need to detect duplicate tasks before adding more work to a queue or plan.

Explore this recipe interactively ยท Source and implementation guide

Use task-duplicate 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 { taskDuplicate } from 'jev-recipes/task-duplicate';

const result = await taskDuplicate({
  "firstTask": "Write a summary of the supplied onboarding guide for new hires.",
  "secondTask": "Summarize the same supplied onboarding guide for new hires and translate the summary into Spanish.",
  "context": "Both tasks require the same English summary; only the second also requires a Spanish translation."
});
console.log(result);

Input contract

FieldTypeNeeded
firstTaskstringRequired
secondTaskstringRequired
contextstringOptional
minConfidencenumberOptional
Full input and result schemas
{
  "input": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "firstTask": {
        "type": "string",
        "description": "The first task and its intended outcome."
      },
      "secondTask": {
        "type": "string",
        "description": "The second task and its intended outcome."
      },
      "context": {
        "type": "string",
        "description": "Relevant targets, scope, time periods, and constraints for the comparison."
      },
      "minConfidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      }
    },
    "required": [
      "firstTask",
      "secondTask"
    ]
  },
  "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": [
          "duplicate",
          "overlapping",
          "distinct",
          "unclear"
        ]
      },
      "confidence": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "probabilities": {
        "type": "object",
        "propertyNames": {
          "type": "string",
          "enum": [
            "duplicate",
            "overlapping",
            "distinct",
            "unclear"
          ]
        },
        "additionalProperties": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "required": [
          "duplicate",
          "overlapping",
          "distinct",
          "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 task-duplicate.

{
  "model": "demo-fixture",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "status": "ready",
  "verdict": "overlapping",
  "confidence": 0.96,
  "probabilities": {
    "duplicate": 0.013333333333333334,
    "overlapping": 0.96,
    "distinct": 0.013333333333333334,
    "unclear": 0.013333333333333334
  }
}

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