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
| Field | Type | Needed |
|---|---|---|
| firstTask | string | Required |
| secondTask | string | Required |
| context | string | Optional |
| minConfidence | number | Optional |
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
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
- Assesses described work only; does not merge queue entries, cancel tasks, or prove that an external action is safe to repeat.
- Shared topics or similar titles are insufficient to establish duplicate work.
Related recipes
- repeated-attempt: Use repeated-attempt to compare the methods of two attempts toward one objective.
- task-dependency: Use task-dependency to check whether one task must finish before another starts.
- ticket-match: Use ticket-match to compare reported issues rather than requested work.