Runtime as featured inForbesRead the article

How to Use Jev with Claude Code and Codex for KYC, KYB, and AML

Use Jev, TypeSafe's System One model, to triage onboarding applications, KYB and KYC reviews, sanctions and adverse media hits, and AML alerts, then hand the right cases to a Claude Code or Codex agent in a Runtime sandbox.

Updated September 23, 202614 min readworkflowsBeginner
jevtypesafeclaude-codecodexkyckybaml-investigationscustomer-onboardingcomplianceai-agents

Jev is a model from TypeSafe AI that reads text, like an onboarding application, an adverse media article, or an alert summary, and returns typed decisions instead of prose: a category, a score, or the probability that a statement is true. It answers in well under a second at a fraction of a cent, so you can run it on every case that enters a compliance queue.

Compliance work has a volume problem. Most screening hits and monitoring alerts close without action, and every one of them still waits in line with the few that matter. An analyst opens them in the order they arrived, not the order of risk.

This is a guide to fixing that with two layers: Jev as a pre-trigger that sorts and ranks every onboarding application, KYB and KYC review, sanctions and adverse media hit, and AML alert, and a Claude Code or Codex agent running in a Runtime sandbox that prepares the evidence for the cases Jev puts first. Your compliance team makes every decision.

The short answer. Send each case to Jev with a few questions your compliance team wrote: what kind of case is this, how much review does it need, is a specific red flag present. Code applies thresholds and decides which cases an agent prepares first. The agent gathers evidence from your verification, screening, and monitoring tools and drafts a packet. Jev never approves, declines, clears, or files anything.

What it does. High-risk applications and alerts reach an analyst first, already prepared, instead of sitting behind a hundred name-match false positives.

What it is not. It isn't a decision engine, a screening vendor, or a replacement for your procedures. Every material improvement comes from a human questioning a premise. Plan for that.

What Jev returns

Jev answers three kinds of questions: a choice from a list you define, a score across levels you describe (numbered from 0), and a noul, the probability that a statement is true. Here is the difference in practice:

Without Jev
reply = llm.generate(
  "Does the website match the "
  "application? " + application
)
returns
Mostly no. The site seems to
sell CBD, which may be restricted
depending on your policy.

A hedge, not a value

With Jev
result = client.system_one(application, {
  "mismatch": Noul(instructions=
    "Website and application differ"),
})
returns
{
  "mismatch": {"noul": 0.89}
}

A probability you can route on

Sample data. llm.generate stands for any chat model. The Jev call uses TypeSafe's Python SDK; the response is trimmed.

The rule that matters most

Jev ranks. It never disposes. This is stricter than in a support queue, for three reasons.

No rationale. Jev returns probabilities, not reasons. A closed alert, a cleared sanctions match, or a declined application needs a documented reason that a reviewer, an auditor, and an examiner can follow. A score of 0.91 isn't one.

Fair treatment. Onboarding decisions affect who gets access to financial services. Simon Willison's early review of Jev raised bias concerns for exactly this kind of sensitive ranking. Keep Jev's output on questions about the business and the activity, never on personal characteristics, and test for skew across segments before you rely on it.

Model governance. In April 2026, US bank regulators replaced SR 11-7 and the 2021 BSA/AML model statement with revised model risk guidance. It excludes generative and agentic AI from its scope. Jev returns probabilities rather than text, so your model risk team may treat it like a classification model. If you run a program with a sponsor bank, expect the bank's own model governance to apply. Either way, document how you tested it.

A ranking mistake delays a case. A disposition mistake can become a finding. Keep Jev on the ranking side.

How the pre-trigger works

"Software consulting LLC." Website attached.
Illustrative example · Sample data

Jev reads every case and orders the queue. The agent prepares the cases that cleared your threshold. The compliance officer sees a finished packet and makes the call.

The stack

JobTools
Fast decisionsJev by TypeSafe logoJev by TypeSafe
Investigating agentClaude Code logoClaude Code Codex logoCodex
Onboarding and KYBAlloy logoAlloy Middesk logoMiddesk
KYC and identityPersona logoPersona
Sanctions and adverse mediaComplyAdvantage logoComplyAdvantage LexisNexis logoLexisNexis
Transaction monitoring and casesUnit21 logoUnit21 Hummingbird logoHummingbird
Activity dataSnowflake logoSnowflake
Or scoped Postgres views
Agent infrastructureRuntime logoRuntime

Runtime is an operating system for coding agents. Each agent gets its own sandboxed computer, a credential vault, network rules, skills that persist between sessions, and a record of what it did. For compliance, that last part matters: you can show which records the agent read for every packet it prepared.

Where Jev fits in compliance

QueueWhat Jev decidesWhat the Runtime agent prepares
Onboarding and KYBIndustry against your restricted and prohibited lists, whether the website matches the stated business, review depthRegistry, ownership, and website evidence, with an EDD packet when needed
KYC manual reviewWhich exception type the vendor raised, so it reaches the right reviewerThe verification results and the specific discrepancy to resolve
Adverse mediaWhether the article describes financial crime, and whether it plausibly refers to your customerDifferentiating identifiers and a side-by-side comparison for the reviewer
Sanctions screeningPriority order only. Never a clearing decision.The potential match details and identifiers that distinguish them
AML transaction monitoringLikely typology and how much review the alert needsA source-linked timeline, customer profile comparison, and draft narrative
Event-driven reviewWhether a customer update or news item should trigger a refreshA summary of what changed since the last review
Narrative QAWhether the agent's draft covers who, what, when, where, and whyNothing. Jev checks the agent's work before a human sees it.

The last row is the second use for Jev. TypeSafe positions it for scoring and checking other models' output, not just routing. A draft narrative that's missing the "why" goes back to the agent before it reaches an analyst.

Step 1: Write the questions (compliance)

The compliance team writes these, not engineering. Jev answers exactly what you ask, literally, and TypeSafe's guidance is to ask one specific thing per question and combine the answers in code.

QuestionTypeWhy it matters
Industry: your restricted and prohibited categories plus "none of these"ChoiceRestricted industries go to EDD, prohibited ones to a named officer
"The website or product pages describe different activity than the application"NoulThe most common KYB red flag, and one a human finds slowly
Review depth, four levels from "standard" to "enhanced due diligence"ScoreSets agent priority and which checklist it loads
"The article describes an allegation of financial crime"NoulFilters out the adverse media hits that are just name coincidences
"The article's subject shares location, age, or employer with the customer"NoulSeparates plausible matches from common names
Likely typology: your monitoring typologies plus "unclear"ChoicePicks the investigation runbook the agent loads

Compute numbers and dates in code. TypeSafe's documentation says Jev struggles with both. Don't ask whether deposits fall just under a reporting threshold or whether a company is less than a year old. Calculate that in code and pass the result as a sentence in the state: "11 cash deposits in 9 days, all between 90% and 99% of the reporting threshold."

Don't use Jev as a name matcher. Name matching across transliterations and aliases is what your screening vendor is built and tuned for. Jev ranks what the vendor returns.

Step 2: Set thresholds, then prove them

Your compliance team writes the routing rules as plain policy that an auditor can read.

If Jev saysThen
Prohibited industry above 0.3Named compliance officer. No agent.
Restricted industry above 0.5, or review depth at the top level (3, since levels start at 0)Agent prepares an EDD packet, priority 1
Adverse media: financial crime allegation and plausible matchAgent prepares a comparison packet, priority 1
Adverse media: no allegation, or implausible matchStays in the analyst queue at lower priority. Never auto-closed.
Any sanctions potential matchAnalyst queue in Jev's priority order. A human clears every one.
Confidence below your floorHuman triage, and saved as a test case

Keep the sensitive thresholds low. A prohibited-industry false alarm costs an officer two minutes. A missed one costs far more.

Then run it in shadow mode. Send several weeks of historical cases through Jev, compare its ranking with what your analysts actually escalated, and pay most attention to the high-risk cases Jev ranked low. That comparison is your validation evidence. Keep it.

Sample the bottom of the queue every week once it's live. The risk with any ranking system is that important cases sink quietly.

Step 3: Build the triage with Claude Code or Codex

Put your TypeSafe API key in an environment variable and ask your coding agent to build it. TypeSafe has Python and TypeScript SDKs and publishes an agent skill, and community projects like jev-code register Jev as a tool inside Claude Code and Codex.

"Build a triage service for our compliance queues. For each new onboarding application, adverse media hit, and monitoring alert, compute the numeric facts in code, then send the text facts to Jev using the TypeSafe SDK with the questions in compliance-questions.md. Apply the rules in routing-policy.md. Log the input, every Jev answer, the model version in the response, and the rule that fired. Never close, clear, or approve anything. Write tests from the labeled cases in /fixtures and report every high-risk case that would have been ranked in the bottom half."

Two habits make these prompts work harder:

  • Say why, not just what. "Log the model version, because we have to re-validate when TypeSafe ships a new one" gets you an audit trail instead of a debug log.
  • Name the failure you're preventing. "A sanctions potential match must never leave the human queue, even with a very low score" exists because that's the finding nobody wants.

Step 4: Create the Runtime template

The template is what the investigating agent boots into when Jev hands it a case: the procedures, tools, and credentials it can use, and the hosts it can reach.

"Create a Runtime template for compliance case preparation. Connect Alloy, Middesk, Persona, ComplyAdvantage, and Unit21 with read-only access. Add a read-only connection to the masked activity view. Allow network access only to those hosts. Load every credential from secrets. The agent can save draft packets but can't change a case status."

Add credentials through the template's secrets in the dashboard, never by pasting them into chat. Give the agent its own identity in each vendor so your access logs show exactly what it read. Then test the limits: ask it to close an alert or approve an application and confirm the request fails.

Attach your procedures as skills: one per typology, one for your restricted industries policy, one for EDD. When Jev says "restricted industry," the agent loads that policy first.

Decide what reaches Jev separately from what reaches the agent. Jev needs a business description, alert facts, or article text. It rarely needs identity documents or account numbers, so leave them out and treat TypeSafe like any other third-party processor in your vendor review.

Step 5: Let Jev start the agent, then check its work

When a rule says "prepare," the triage service starts a Runtime session with the case, Jev's answers, and the rule that fired.

"When the routing rule is 'prepare now,' start a session from the compliance template with the case, the Jev scores, and the matched category. Load the skill for that category. Gather evidence with read-only access and cite every record. Separate facts, supported explanations, open questions, and missing information. Save a draft packet to the case and post a summary to #compliance-onboarding. Don't recommend a disposition. List the questions the reviewer needs to answer."

Before the packet reaches a person, send the draft narrative back to Jev with a short rubric: are who, what, when, where, and why each stated, and does every claim cite a record. Drafts that fail go back to the agent. Analysts spend their time on judgment, not on returning incomplete work.

What stays human

StepWhy
Writing the questions, thresholds, and policiesThat's your compliance program. Jev only applies it.
Approving, declining, or offboarding a customerA decision about access to financial services
Clearing a sanctions matchThe one false negative you can't afford
Closing an alert or deciding to file a SARNeeds a documented rationale and an accountable name
Communications with regulators and sponsor banksObvious, and worth writing down anyway

Where it breaks

Numbers and dates. Structuring patterns, company age, and date-of-birth checks all fail if you ask Jev directly. Compute them first.

Applicants write the input. A business description is written by the applicant, and TypeSafe notes Jev can be misled by adversarial content. That's why the website noul matters more than the stated description, and why no Jev score should ever shorten a review.

Literal reading. "Is this a money services business" and "does this business transmit money for others" get different answers. When routing looks wrong, fix the question before blaming the model.

New model versions. Every response includes a versioned model ID. When it changes, run your shadow set again before trusting the new rankings.

Nothing explains itself. Log every input and answer next to the case. When an examiner asks why a case waited three days, you need to show what Jev said and which rule applied.

Measuring it

  • Time to first review for high-risk cases. The number a pre-trigger exists to move.
  • High-risk cases found in the bottom of the queue. From your weekly sample. The target is zero.
  • Analyst minutes per case. Split by queue, since EDD packets and name-match hits aren't comparable.
  • Packets returned for missing evidence. Before and after the narrative check.

Measure the current queue first, or you won't be able to show what changed.

A realistic timeline

StageTime
Runtime template and a working agentMinutes on Runtime; days if you build the infrastructure yourself
Questions and routing policyA week with compliance, including sign-off
Shadow mode on historical casesSeveral weeks, and keep the results as validation evidence
Live ranking for one queueAfter shadow mode and your model risk review
Additional queuesOne at a time, each with its own shadow run

The point

Compliance doesn't lack judgment. It spends it in the wrong order. When sorting a case costs almost nothing, every application and alert can be ranked the moment it arrives, and the analyst's first hour goes to the case that deserves it.

Jev ranks, the agent prepares, and your compliance team decides. Keep those three jobs separate and the whole thing stays defensible.

Back to the case.

For the same pattern in support and payment ops, see how to use Jev with Claude Code and Codex for triage. For the investigation agent itself, see the compliance alert and KYB and KYC review guides.

Frequently asked questions

Can Jev be used for KYC and KYB?

Yes, as a triage layer. Jev can classify an onboarding application's industry against your restricted and prohibited lists, flag when a website doesn't match the stated business, and score how much review a case needs. It shouldn't approve or decline an application. Use it to decide which cases a Claude Code or Codex agent prepares first, and keep the onboarding decision with your compliance team.

Can Jev clear AML alerts or sanctions matches?

Don't let it. Jev returns probabilities without a written rationale, and a closed alert or cleared sanctions match needs a documented reason a reviewer and an examiner can follow. Use Jev to rank alerts and group related ones, then have an agent prepare the evidence and a human make the disposition.

How do I use Jev with Claude Code for AML investigations?

Ask Claude Code to build a triage service that sends each alert's narrative facts to Jev with a few typed questions, such as the likely typology and how much review it needs. Compute amounts, counts, and dates in code first, because Jev handles numbers poorly. Route high-priority alerts to an agent running in a sandbox such as Runtime, with read-only credentials, that gathers the evidence and drafts a case narrative for an analyst.

How do I use Jev with Codex for onboarding reviews?

The same way as with Claude Code. Codex can build the triage script from TypeSafe's SDK or call Jev through a community MCP server. The questions, thresholds, and routing rules are written by your compliance team and stay the same whichever coding agent you use, and both can run in a Runtime sandbox with the same read-only access rules.

What does the investigating agent need to run safely on compliance data?

Read-only, per-vendor credentials so your access logs show exactly what the agent read, network rules limiting it to your verification and screening tools, and a full record of every source it touched for every packet it prepared. That record is what lets you show an examiner why a case was ranked and prepared the way it was. Runtime provides that sandboxed environment for Claude Code and Codex agents, with sessions started directly from a routing rule.

Does Jev fall under model risk management?

Ask your model risk team. US bank regulators replaced SR 11-7 with revised model risk guidance in April 2026, and that guidance excludes generative and agentic AI from its scope. Jev returns probabilities rather than text, so it may be treated more like a classification model. Sponsor banks often apply their own model governance to fintech programs, so document how you validated it either way.

Is it safe to send customer data to Jev?

Treat TypeSafe like any other third-party processor. Review its security and data terms with your vendor management process before sending production data, and send only the fields a question needs. Most triage questions work on business descriptions, alert facts, and article text, without full identity documents or account numbers.


Prepare compliance cases with an agent you can audit

Runtime gives every agent a sandbox, scoped read-only credentials, network rules, and a record of every source it touched, so Jev can hand it cases without a human in the middle. Spin one up yourself, or get a free consultation with the founders on setting it up.