Recipe catalog / headline-fit
Check headline fit
Does headline accurately represent what body says, without promising more than the body delivers?
You publish or review articles and want to catch headlines that overstate, contradict, or misdirect from the body before they go live.
Explore this recipe interactively ยท Source and implementation guide
Use headline-fit 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 { headlineFit } from 'jev-recipes/headline-fit';
const result = await headlineFit({
"headline": "New Study Proves Coffee Cures Depression",
"body": "A small observational study of 212 adults published this week found that participants who drank two or more cups of coffee a day reported fewer depressive symptoms over a six-month period. The authors caution that the design cannot establish causation and that unmeasured lifestyle factors may explain the association. They call for randomized trials before drawing clinical conclusions.",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| headline | string | Required |
| body | string | Required |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"headline": {
"type": "string"
},
"body": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"headline",
"body"
]
},
"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"
]
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"verdict": {
"type": "string",
"enum": [
"accurate",
"misleading"
]
}
},
"required": [
"model",
"usage",
"status",
"probability",
"confidence",
"verdict"
],
"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 headline-fit.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"probability": 0.08,
"confidence": 0.92,
"verdict": "misleading"
}
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
- Judges the headline against the supplied body only; it does not check whether the body itself is true.
- Does not measure engagement, search ranking, or style. Editorial house rules and length limits belong in code.
Related recipes
- summary-coverage: Use summary-coverage to judge whether a longer summary captures the main points of a source.
- attribution-match: Use attribution-match to check whether a quoted claim is attributed to the source that actually made it.