GPT vs JEV

September 17, 2026 · View on GitHub

Live demo: gptvsjev.vercel.app

Created by Tanay Padar. Open source under MIT.

This app sends the same input to two different kinds of model and shows the outputs side by side:

  • GPT generates short natural-language text.
  • JEV (TypeSafe System One) returns structured Noul answers: the probability that the answer is yes.

The models are not chained. GPT never writes JEV’s answer, and JEV never writes GPT’s.

It is a learning demo, not a claim that one model is better. They do different jobs.

Try it

Preset Example buttons replay saved GPT and JEV answers (no API calls). Type your own input and click Run comparison to call the live APIs. Custom live runs are limited to 2 per visitor per 24 hours.

What a Noul is

A Noul is TypeSafe’s yes/no primitive. The field noul is P(yes) on [0, 1]:

  • Near 1 — strong yes
  • Near 0 — strong no
  • Near 0.5 — yes and no are similarly likely, not “medium intensity”

There is no separate confidence field. This app asks the same three questions as test_jev.py:

IDInstructions
is_urgentDoes this convey urgency?
needs_humanShould a human support agent review this?
is_financialIs this about a financial transaction?

How it works

Browser
  POST /api/arena  { input }


Next.js Route Handler (Node, server only)
   ├── OpenAI SDK  →  GPT
   └── TypeSafe SDK →  JEV

API keys stay on the server (OPENAI_API_KEY, TYPESAFE_API_KEY). Do not prefix them with NEXT_PUBLIC_. The browser never receives the keys.

Local setup

Needs Node.js 20+. Copy .env.example to .env.local (gitignored) and add your keys:

cp .env.example .env.local
OPENAI_API_KEY=sk-...
TYPESAFE_API_KEY=apikey_...
npm install
npm run dev

Open http://localhost:3000.

Optional Python smoke test for JEV (uv required):

export TYPESAFE_API_KEY=apikey_...
uv sync
uv run python test_jev.py

Deploy on Vercel

  1. Fork or clone this repo and import it in Vercel.

  2. Add server environment variables (not NEXT_PUBLIC_):

    • OPENAI_API_KEY
    • TYPESAFE_API_KEY
  3. Deploy. Examples work without keys; custom live runs need both.

Limits

  • Custom input: 75 characters. GPT replies: 80 completion tokens.
  • JEV always answers the three support-ticket Nouls above.
  • Live quota: 2 comparisons / visitor / 24 hours (IP + cookie). In-memory, so it can reset if the server instance restarts.
  • Cost numbers are list-price estimates, not invoices.

License

MIT © Tanay Padar