,

Jev + Claude Code Prompts: Copy the Exact AI Customer Support Build

Glowing 3D Jev sculpture on a pedestal with the words AI that decides., from the Jev and Claude Code customer support build

These are the exact prompts typed into Claude Code to build the Jev Support Router in the video, copied from the build’s own Claude Code session log from 8 October 2026. Nothing is cleaned up: the lowercase one-liners and the typos are exactly what was typed. Paste them in order into Claude Code, or another coding agent, in an empty folder and you get the same app. Jev decides where each customer support ticket goes, and the app asks a human when Jev isn’t sure.

Want the why and the real numbers first? Read AI customer support that stops guessing: the full Jev + Claude Code breakdown.

Key takeaways

  • Six prompts and two one-line follow-ups build the whole app, from the .env file to the Jev vs Claude Opus comparison.
  • Prompt 2 does most of the work. It defines the four decisions (one Choice, one Score, two Nouls) and makes Claude Code explain the architecture before it writes code.
  • Prompt 3 is the safety net. Below 0.80 confidence, no ticket is routed automatically.
  • Prompt 4 makes it measurable. Run your own labeled tickets through the exact production setup before you trust it.
  • Every prompt has a copy button, and there’s a build checklist at the end.

What do you need before you paste anything?

  • Node.js 21.7 or newer. The app Claude Code wrote targets it. Check with node -v.
  • VS Code with Claude Code. The video used Claude Code with Opus 5.5. Codex or another coding agent should work too.
  • An OpenRouter account and a new API key just for this project, with a few dollars of credit. The whole 100-ticket batch cost $0.0036 in Jev calls.
  • An empty folder. The video used one called Jev_support_router.

Pin the model. The build pinned Jev 1.13 (OpenRouter served typesafe/jev-1.13-20260917) so results don’t shift in the middle of the project. As recorded, Jev 1.13 had a 32,000-token context window and charged for input tokens only. Check the live model page before you rely on prices.

Prompt 1: create the .env file

In the video: 6:28. Open Claude Code inside the empty folder and ask for the file that will hold your key. Paste your OpenRouter key into it, save, then clear the session with /clear so the big prompt starts fresh.

Prompt 1 · .env file
make .env file, i want to input my openrouter api key for this project

Prompt 2: build the Jev Support Router

In the video: 6:28. This is the main prompt. It names the four judgments Jev makes, keeps the API key on the server, and tells Claude Code not to auto-route when confidence is low. The last two lines matter most: Claude Code explains the architecture and the exact Jev request before it writes any code, so you can check it first.

Prompt 2 · main build
I want to build a local web application called "Jev Support Router".

Purpose:
A user pastes a customer support message. The app sends the message to TypeSafe Jev through OpenRouter and gets structured decisions.

Use Jev for exactly these judgments:

CHOICE — department:
billing
technical_support
sales
account
other

SCORE — urgency:
normal
elevated
urgent
critical

Each score level must have a clear natural-language definition.

NOUL — refund_requested:
Determine the probability that the customer is asking for a refund, reversal, or money back.

NOUL — human_review_needed:
Determine whether this ticket has ambiguity, financial risk, threats, security implications, or another reason a human should review it.

Architecture requirements:

Keep the OpenRouter API key server-side only.

Use an environment variable.

Never send the secret to client-side JavaScript.

Add proper error handling.

Display raw Jev probabilities as well as the final decisions.

Add a configurable human-review threshold.

If confidence is too low, do NOT auto-route the ticket.

Instead mark it "Needs Review".

Log latency and estimated input cost for each analysis.

Keep Jev logic separated into its own module.

Build the simplest clean UI possible.

Do not invent explanations that Jev did not return.

Before coding, explain the architecture and the exact Jev request you intend to send.

Then build it.

What Claude Code chose in the recording: it called Jev through OpenRouter’s Decisions API (POST https://openrouter.ai/api/alpha/decisions), sending the customer message as the state along with the four questions. It’s an alpha endpoint, so let your agent read the current OpenRouter docs instead of copying that URL.

Run it

In the video: 9:52. Type this in the terminal, then open the local link it prints (http://127.0.0.1:3000 in the video).

Command · terminal
npm start

The four test tickets from the video

Paste each one into the app and compare your result with what Jev returned in the recording.

Ticket 1 · easy billing (9:52)
My card was charged twice for the same order. Please refund the second charge

Expected: billing, refund requested yes. In the first version Jev was certain about billing but only 0.12 confident about urgency, so the app held the ticket for a person.

Ticket 2 · technical support (11:06)
Every time I upload a PDF the dashboard freezes at 92 percent. I've tried Chrome and Edge.

Expected: routed to technical_support, urgency urgent, refund no.

Ticket 3 · the test most tutorials skip (12:09)
I was thinking about upgrading, but your app stopped working yesterday and I'm also not sure why my last invoice is higher.

Expected: Needs Review. Sales, technical support and billing are all reasonable here. Jev leaned toward technical support, and the app still sent the ticket to a human.

Ticket 4 · the angry double charge (0:00 and 18:41)
I've contacted you three times. I was charged twice, nobody has fixed it, and if this isn't solved today I'm cancelling.

Expected: billing, urgent, refund requested, needs human review. Jev decided it in 951 ms.

Prompt 3: add the confidence gate

In the video: 13:32. The first version used one 0.5 threshold for everything. This prompt replaces it with explicit thresholds kept in one file, so you can tune them after you measure.

Prompt 3 · confidence gate
For department routing, automatically route only when the selected choice confidence is at least 0.80.

If it is below 0.80:

set route status to NEEDS_REVIEW

show the top two candidate departments and their probabilities

do not automatically assign the ticket

For high-risk Noul questions, create explicit probability thresholds rather than treating 0.50 as universally correct.

Keep thresholds in one configuration file so we can tune them after evaluation.

What it produced in the recording, in thresholds.json:

Threshold Value What it does
department_min_confidence 0.80 Auto-route only at or above it. Below it: Needs Review, not assigned, top two departments shown
urgency_min_confidence 0.50 Needs Review when Jev’s most likely urgency level is below it
human_review_needed 0.30 Needs Review at or above it. A missed review costs more than an extra one
refund_requested 0.40 Flags “refund requested” at or above it. Doesn’t change the routing

Prompt 4: measure it on labeled tickets

In the video: 14:54. First make a CSV of realistic tickets with the department a person would choose. Include the hard ones: mixed intent, sarcasm, poor grammar, very short messages, multiple requests and vague complaints. This is the format the app used:

eval.csv format
id,message,expected_department
ex-01,How do I export my dashboard to PDF?,technical_support
ex-02,"You charged me twice this month for my subscription. Please refund the duplicate charge.",billing
ex-03,"I'm locked out after resetting my password and the 2FA code never arrives.",account
ex-04,"We'd like a quote for 40 seats on the Business plan, billed annually.",sales
Prompt 4 · evaluation script
Add an evaluation script that reads eval.csv, runs every example through our exact production Jev configuration, compares the department prediction with expected_department, and reports:
accuracy,
number of automatic routes,
number sent to human review,
incorrect high-confidence routes,
average latency,
and estimated Jev cost.

Do not modify prompts while running the evaluation.

In the recording Claude Code built the script but no upload page, so two short follow-ups added one:

Follow-up 1
give me link i will upload myself
Follow-up 2
add an option for upload csv file

Result on 82 hand-labeled tickets: 84.1% department accuracy, 22 tickets routed automatically (90.9% of them correct), 60 sent to a person, 2 routed confidently to the wrong team, 531 ms on average and $0.0029 in total. What those numbers mean.

Prompt 5: let Claude draft the reply

In the video: 18:41. Jev decides and a generative model writes. This prompt adds an optional Draft Reply button that can never change the routing or promise money back.

Prompt 5 · Draft Reply
Add an optional "Draft Reply" button.

Only enable the button after Jev analysis completes.

When clicked, send the original customer message plus Jev's final routing metadata to a generative model.

The generative model may draft a response, but it must not override the routing decision or invent financial actions.

If human review is required, clearly label the generated response as a draft for human approval.

Optional: the batch instruction from the video

In the video: 21:19. The 100-ticket test runs through the same evaluation page with a bigger CSV. If you’d rather have a separate batch page, this is the instruction the video suggests. It’s transcribed from the narration, because it was spoken rather than typed:

Spoken in the video
add a batch analysis page don't make a separate model call if multiple questions can sensibly share the same state and to be evaluated together

Prompt 6: compare it with a big LLM

In the video: 23:42. This swaps the analyzer to Claude Opus 5.5 so you can run the same tickets through a normal generative model. OpenRouter’s Decisions endpoint didn’t accept Claude in the recording, so Claude Code asked Claude for structured JSON with the same departments instead. Copy your project folder first if you want to keep the Jev version, because this prompt replaces Jev as the analyzer.

Prompt 6 · model swap
Now change the Model: jev to claude opus 5.5

Result on the same 8 tickets: both got 8 of 8 right. Jev took about 0.7 to 1 second and about $0.00004 per analysis; Claude Opus 5.5 took 4.6 seconds and about $0.008. The full comparison.

The build checklist

Tick as you go, or copy it into your own notes.

Jev + Claude Code build checklist

Before you start

Build

First tests

Safety and measurement

Drafts and comparison

Before anyone else uses it

Taking it off localhost. The router in the video runs on your own computer. To let a team use it, you need hosting that can run a Node.js app and keep the API key in a server-side environment variable. I host this site on Hostinger, and it can run Node.js apps like this one. If you’re setting up hosting anyway, my Hostinger referral link gives you 20% off. Pick a plan that includes Node.js app hosting. Affiliate link: I may earn a commission at no extra cost to you (disclosure).

Why does this build work?

The prompts are half the story. Why a decision model beats one big LLM for triage, why the gate sits at 0.80, what happened on 82 hand-labeled tickets and a 100-ticket batch, and when not to use Jev at all are in the full article on AI customer support that stops guessing.

FAQ

Are these the exact prompts from the video?

Yes. They were copied from the Claude Code session log of the build on 8 October 2026, unedited, including the lowercase follow-ups. The only exception is the optional batch instruction, which is transcribed from the narration because it was spoken, not typed.

Do I need Claude Code to use these prompts?

No. The video used Claude Code with Opus 5.5, but the prompts are plain English and should work with Codex or another coding agent. You also need Node.js and an OpenRouter API key.

How much does it cost to run this build?

In the recording, Jev calls cost $0.0029 for 82 tickets and $0.0036 for a 100-ticket batch. Optional reply drafts from Claude Opus 5.5 cost about $0.008 each. Prices change, so check OpenRouter before you budget.

Sources

Prompts copied from the Claude Code session log of the build on 8 October 2026. Results are as recorded that day. Models and prices change, so check the live pages.