Skip to content
Jev Guide

Noul

Check a citation.

A generated sentence arrives with a source attached. The source is real, the sentence is plausible, and nobody checks whether the passage actually says what the sentence claims. A Noul question asks one yes/no question and returns the probability of yes. Here it asks whether this passage supports this claim, judged only against the passage itself.

Noul

Check a citation

Run with

Shows recorded and illustrative answers. This site's own live testing is unavailable.

Sample
Source passage

Read-only while live testing is unavailable.

Claim

Read-only while live testing is unavailable.

Total

261/1200 characters combined

Run
Live testing is currently unavailable on this deployment.
Output

Probability: 0.96

Source supports the claimJev Guide's label, not TypeSafe's

  1. Yes96.0%

Jev returns only the probability above; the plain-language label is this page's own reading of it, not an official threshold. This checks the claim against the pasted passage only. It is not a fact check, and it does not say which part of the claim failed. Jev returns a probability, not a generated explanation.

Illustrative example

Not a live or recorded response. Shown to illustrate the shape of an answer.

Build this

citation-check.ts
import { noul, TypeSafeClient } from "@typesafe-ai/sdk";
 
const client = new TypeSafeClient(); // reads TYPESAFE_API_KEY, defaults to jev-latest
 
const source = "In the 2023 fiscal year, Northwind reported revenue of $4.2 billion, up 7 percent from the prior year. Growth was driven primarily by the company's logistics division, which grew 19 percent over the same period.";
const claim = "Northwind's revenue grew 7 percent in fiscal 2023.";
 
const { answers } = await client.systemOne({
state: { source_passage: source, claim: claim },
model: "jev-latest",
questions: {
supports_claim: noul(
"Does the source passage support the claim? Judge only against what the passage itself states. Do not use outside knowledge, and do not treat a claim as supported because it is plausible or widely believed.",
{
true: "Everything the claim asserts is stated in the passage, or follows directly from what the passage states",
false: "The passage does not state the claim, contradicts it, or supports only a narrower version of it",
},
),
},
});
 
const { noul: supported } = answers.supports_claim;
 
// A value near 1 is a strong yes, near 0 a strong no, near 0.5 means Jev is unsure.
if (supported >= 0.7) {
console.log("Source supports the claim.", supported);
} else if (supported <= 0.3) {
console.log("Source does not support the claim.", supported);
} else {
console.log("Unclear, read the passage yourself before citing it.", supported);
}

Type-checked against @typesafe-ai/sdk 0.6.0 as part of this site's build. Not executed against the live API by this guide.

npm install @typesafe-ai/sdk. Requires Node.js 20+. Set TYPESAFE_API_KEY in your environment.

Keep TYPESAFE_API_KEY on the server. Never embed it in client code or ship it in a browser bundle.

Reading the three samples

Stated outright. The passage gives the revenue growth figure and the claim repeats it. Nothing has to be inferred, so the probability should sit near the top of the range. This is the case that needs no scrutiny, and the one a check like this should get out of the way cheaply.

Not in the source. The passage is about session counts and adherence. The claim is about sleep duration. It is the kind of sentence that reads well and cites a real study that never measured the thing being claimed, which is exactly the failure this recipe exists to catch.

Broader than the source. The passage supports a narrower statement: 62 percent of surveyed North American teams. The claim drops the sampling frame and says “worldwide”. This recipe's criteria count a claim the passage supports only in a narrower form as a no, so the answer should land low. It is still the case worth watching, because the passage does support part of the claim, and that overlap can pull the probability up toward the middle. A value near 0.5 does not mean half supported. It means Jev is not committing either way, and that is your signal to read it yourself.

Where this fails

It judges only the passage you paste. If your retrieval step returned the wrong passage, a perfectly sound claim will look unsupported, and this recipe cannot tell you that the problem was retrieval. If you are filtering retrieved context in the first place, that is a different question.

It is not a fact check. A passage can support a claim while both are wrong. This asks whether the citation holds, not whether the world agrees.

It returns one number and no explanation. Jev does not say which part of the claim failed, and this page does not invent one, because presenting a generated rationale as the model's reasoning would be misleading. When the probability is low or middling, read the passage.

How the TypeSafe cookbook differs

TypeSafe's double-checking citations cookbook solves this with a Choice question over three outcomes: the section supports the claim, contradicts it, or says nothing about it. That separates a citation that argues the opposite from one that is merely silent. This page collapses both into a single low probability, which is easier to threshold but tells you less. Read the cookbook when you need to know how a citation failed and not only whether it did.

Wondering whether a call like this one should use Jev or a general-purpose LLM in the first place? See Jev vs LLMs: when to use TypeSafe AI.