Your First Hour With TypeSafe Jev: From API Key to Typed Answers

Stackademic

A practical on-ramp to Jev: playground, one HTTP call, Python SDK, and the three primitives you’ll use on every project.

If you learn best by shipping a working call before reading a manifesto, this is the path.

TypeSafe’s Jev is a System One model: you send state + typed questions, you get structured answers. No completion to parse. Official quickstart: docs.typesafe.ai/introduction/quickstart.

0–10 minutes: feel it in the Playground

  1. Open the TypeSafe Playground and sign in.
  2. Paste a short support ticket as state — something like: “I’ve been trying to connect Stripe for three days and I’m losing sales. Help ASAP.”
  3. Add a Noul: instructions = Does this message express urgency?
  4. Add a Choice for department (billing / technical / sales) and a Score for frustration levels.
  5. Run once. Notice you get probabilities (and confidence on Choice/Score) without asking the model to “respond as JSON.”

That mental model is the whole product.

10–25 minutes: one HTTP request

Endpoint:

POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer $TYPESAFE_API_KEY
Content-Type: application/json

Minimal body:

{
  "model": "jev-latest",
  "state": "Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP.",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "The message conveys urgency or time-sensitivity"
    }
  }
}

Useful model IDs (as of mid-September 2026 docs/community writeups):

  • jev-latest — alias; moves when new versions ship
  • jev-1.13.0 — pin this in production when you need repeatability
  • jev-preview — preview track

The response includes the resolved versioned model id, answers, and usage. Log the resolved model.

List aliases with GET https://api.typesafe.ai/v1/models.

25–45 minutes: Python SDK

pip install typesafe-sdk
export TYPESAFE_API_KEY=...
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

client = TypeSafeClient()  # defaults to jev-latest

ticket = (
    "Hi, I've been trying to connect my Stripe account for 3 days "
    "and the integration keeps failing. I'm losing sales. Please help ASAP."
)

response = client.system_one(
    state=ticket,
    questions={
        "department": Choice(
            instructions="Which team should handle this",
            criteria={
                "billing": "Payment or subscription issues",
                "technical": "Bugs or integration problems",
                "sales": "Pricing or account questions",
            },
        ),
        "frustration": Score(
            instructions="How frustrated the customer appears",
            criteria=[
                "Calm, just stating facts",
                "Frustrated but civil",
                "Very angry, strong language",
            ],
        ),
        "is_urgent": Noul(
            instructions="The message conveys urgency or time-sensitivity",
        ),
    },
)

print(response.answers["department"].choice)
print(response.answers["frustration"].score)
print(response.answers["is_urgent"].noul)

JavaScript teams: @typesafe-ai/sdk (Node 20+). Agent-heavy workflows can install TypeSafe’s agent skill via npx skills add typesafe-ai/skills --skill typesafe-ai.

45–60 minutes: design habits that actually stick

Before you invent a taxonomy of twenty departments, internalize TypeSafe’s guidance:

  • One judgment per question. Decompose “rate this pitch” into market, feasibility, differentiation — then weight in code.
  • Filter state first. Large blobs full of irrelevant detail hurt accuracy (jaggedness notes).
  • Keep arithmetic in code. Jev is not your calculator.
  • Gate on confidence for Choice/Score before you auto-act (confidence-gated routing).

Career tip

Learning Jev is less about memorizing another prompt template and more about practicing product judgment as software design: closed option sets, explicit rubrics, and escalation rules. Those skills transfer whether your next employer uses TypeSafe or rolls its own classifiers.

When you’re ready for a worked example that wires thresholds into routing, build a confidence-gated support router next — same primitives, production-shaped control flow.

Comments

Loading comments…