Recipe catalog / evidence-independence
Compare the origins of two pieces of evidence
Check whether supplied provenance shows shared or separate evidence origins for one claim, or leaves their relationship unresolved.
You need to check whether two reports rely on the same underlying source before treating them as corroboration.
Explore this recipe interactively ยท Source and implementation guide
Use evidence-independence 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 { evidenceIndependence } from 'jev-recipes/evidence-independence';
const result = await evidenceIndependence({
"claim": "The service outage began at 09:00.",
"firstProvenance": "Report A copies the start time from status notice N17 published by the service operator.",
"secondProvenance": "Report B cites Report A and repeats the start time from the same operator notice N17."
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| claim | string | Required |
| firstProvenance | string | Required |
| secondProvenance | string | Required |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"claim": {
"type": "string",
"description": "One claim that defines which supporting evidence origins matter."
},
"firstProvenance": {
"type": "string",
"description": "The first report's supplied source chain, observations, data collection, or other origin details for the claim."
},
"secondProvenance": {
"type": "string",
"description": "The second report's supplied source chain, observations, data collection, or other origin details for the claim."
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"claim",
"firstProvenance",
"secondProvenance"
]
},
"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": [
"shared_origin",
"separate_origins",
"unclear"
]
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"probabilities": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"shared_origin",
"separate_origins",
"unclear"
]
},
"additionalProperties": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"required": [
"shared_origin",
"separate_origins",
"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 evidence-independence.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"verdict": "shared_origin",
"confidence": 0.98,
"probabilities": {
"shared_origin": 0.98,
"separate_origins": 0.01,
"unclear": 0.01
}
}
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
- Evaluates supplied provenance descriptions only. It does not fetch sources, verify provenance, or discover hidden dependencies.
- Separate origins are not a guarantee of statistical independence, reliability, or truth.
- The claim scopes material overlap. Shared background unrelated to the claim is not sufficient for a shared-origin label.
Related recipes
- passage-duplicate: Use passage-duplicate to compare information overlap in passages, not the origins of their evidence.
- attribution-match: Use attribution-match to check a named statement attribution against a source excerpt.
- evidence-conflict: Use evidence-conflict to compare what sources say; conflicting reports can still share an origin.