Recipe catalog / task-complexity
Grade task complexity
How complex is task, from a single lookup to open-ended work, on a five-level rubric?
You need to size a task before choosing a model, a plan depth, a time budget, or whether to ask for help.
Explore this recipe interactively ยท Source and implementation guide
Use task-complexity 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 { taskComplexity } from 'jev-recipes/task-complexity';
const result = await taskComplexity({
"task": "Migrate the billing service from the legacy payments API to the new provider, keeping existing subscriptions active and reconciling any invoices that fail during the cutover.",
"context": "The service has 40,000 active subscriptions and no staging replica of production data.",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| task | 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": {
"task": {
"type": "string"
},
"context": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"task"
]
},
"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"
]
},
"score": {
"type": "number",
"minimum": 0
},
"level": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"complexity": {
"type": "string",
"enum": [
"trivial",
"simple",
"moderate",
"complex",
"open-ended"
]
}
},
"required": [
"model",
"usage",
"status",
"score",
"level",
"confidence",
"probabilities",
"complexity"
],
"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-complexity.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"score": 3.04,
"level": 3,
"confidence": 0.84,
"probabilities": {
"0": 0,
"1": 0.01,
"2": 0.09,
"3": 0.84,
"4": 0.06
},
"complexity": "complex"
}
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
- Grades the described work, not the effort a specific system will spend. Map levels to budgets in code.
- Does not detect whether the task is possible or permitted.