Use case · risk signals
Jev for fraud signals and KYB review
Reviewed November 10, 2026. jevtypesafe.org is an independent third-party host, not TypeSafe AI or Sardine.
A risk workflow can use a model to interpret evidence without giving it authority to approve a business or reject a customer. Jev can answer narrowly defined questions about supplied findings. Your application collects the facts, applies policy, and sends cases to qualified reviewers.
This page is not financial, credit, fraud-management, or legal advice. The example below does not approve or reject payments, loans, or KYB applications. Do not use an unvalidated model output as the sole basis for a consequential decision.
Third-party case study: what Sardine reported
In a November 2, 2026 Sardine article, Soups Ranjan describes three uses of Jev. These are Sardine's experiments and integrations, not experiments run on jevtypesafe.org.
For one incident, account-link analysis expanded five known bad users into 13 users and 29 fraudulent card transactions. Jev flagged 27 of those 29 transactions. Rules flagged 26, and the Sonnet pipeline flagged 18. The article reports roughly 100 ms per Jev call with fewer than 1,000 input tokens, and about one twenty-fifth of the comparison run's cost.
These numbers describe a known fraudulent set, not overall accuracy across legitimate and fraudulent traffic. They do not establish a false-positive rate. The Sonnet comparison bundled all 29 judgments, which differs from a live per-transaction flow. The article used one broad fraud-risk question and says narrower questions are the next experiment.
Sardine also describes a name/email consistency signal with three outcomes, with married names as an open edge case — a signal, not proof of fraud. For KYB, Sardine's Web360 collects registration, website, search, and review findings; Jev turns supplied findings into structured answers within Sardine Flow — not a claim that jevtypesafe.org provides Web360 or Sardine Flow.
Primary source: Sardine, November 2, 2026.
Separate collection, interpretation, and policy
Jev does not fetch missing records in this pattern. A returned probability is not a factual verification of an external database.
| Work | Owner |
|---|---|
| Obtain registration records and source snapshots | Authorized application services |
| Compute velocity counts, dates, and account links | Application code |
| Judge whether supplied evidence supports entity or activity matching | Focused model questions |
| Determine thresholds, legal requirements, and review priority | Validated policy code and qualified staff |
| Approve an action or make an adverse decision | Authorized process with required human review |
Local illustrative pattern: prioritize a KYB review queue
This independent illustration uses a fictional design studio and two synthetic findings. The host request asks whether the supplied evidence supports an entity match and an activity match. It does not ask “approve this business.”
The assumed response uses Noul fields documented by this host. Probabilities and usage are illustrative, not measured. The offline review_queue function returns only manual-review labels. Missing or invalid judgments go to missing-judgment review. Stale or unconfirmed evidence goes to stale-evidence review. A low match probability flags an evidence gap. Even two high probabilities still go to standard manual review, not automatic acceptance.
The 0.8 boundary is a demonstration, not a risk policy. Missing evidence must not be interpreted as proof of wrongdoing.
Validate before using real applicant data
Evaluate on consented, appropriately protected data and representative legitimate cases, not only known fraud. Separate tuning and holdout sets. Measure false positives, missed cases, calibration, review volume, and errors across relevant language and name patterns.
Keep sensitive records out of public demos. Review data-processing terms for this independent host separately from official TypeSafe terms. Define retention, access controls, audit records, outage behavior, and a model-change review before launch.
Read the judgment-and-code method and the host API contract. The playground is useful for synthetic inputs, not a certified KYB product.
Complete offline example
Synthetic input and assumed response, for illustration only. This code does not call a service or execute business actions.
{
"model": "jev",
"state": {
"business": "Illustrative Paper Lantern Studio",
"findings": [
{
"source_id": "registry_snapshot",
"text": "The registry snapshot lists Paper Lantern Studio LLC as active."
},
{
"source_id": "application",
"text": "The applicant describes a design studio, but has not supplied evidence of the trading-name relationship."
}
]
},
"questions": {
"entity_match": {
"type": "noul",
"instructions": "Do the supplied findings support that the applicant and registered entity are the same legal entity? Judge only the supplied evidence."
},
"activity_match": {
"type": "noul",
"instructions": "Do the supplied findings support that observed business activity matches the stated design-studio activity? Missing evidence does not establish a match."
}
}
}{
"model": "jev-1.14.0",
"answers": {
"entity_match": {
"type": "noul",
"noul": 0.46
},
"activity_match": {
"type": "noul",
"noul": 0.31
}
},
"usage": {
"input_tokens": 240,
"billed_tokens": 240,
"output_tokens": 0,
"remaining_tokens": 11999760
},
"meta": {
"decide_model": "jev",
"credit_multiplier": 1
}
}import math
def probability(response, name):
try:
answer = response["answers"][name]
value = answer["noul"]
if answer["type"] != "noul":
return None
if type(value) not in (int, float):
return None
if not math.isfinite(value) or not 0 <= value <= 1:
return None
return value
except (KeyError, TypeError):
return None
def review_queue(response, facts):
"""Prioritize manual KYB review. Never approve or reject an applicant."""
entity = probability(response, "entity_match")
activity = probability(response, "activity_match")
if entity is None or activity is None:
return "manual_review_missing_judgment"
if not isinstance(facts, dict) or facts.get("evidence_current") is not True:
return "manual_review_stale_evidence"
if entity < 0.8 or activity < 0.8:
return "manual_review_evidence_gap"
return "manual_review_standard"Sources
Referencia de origen:
This is an unofficial community resource. We are not affiliated with TypeSafe AI, Sardine, or Liquid AI.