# jevascript

> Semantic values for deterministic TypeScript. `is`, `score` and `choose` next to `string`, `number` and `boolean`. The model supplies the judgement; your code decides the consequence.

HTML: https://jevascript.org · Docs: https://jevascript.org/docs · Machine-readable index: https://jevascript.org/llms.txt

## Install

```bash
npm i jevascript
```

## The idea

```ts
import { semantic } from "jevascript"

const urgency = await semantic(ticket)
  .score("A human needs to act on this urgently.")

if (urgency > 80) {
  pageOnCall()
}
```

Ordinary code can test what a value contains. It cannot test what a value means. jevascript is a semantic runtime: judgements that do not come from a property become ordinary values in ordinary control flow, backed by a decision model that returns calibrated probabilities and generates no text.

## Three primitives

```ts
await semantic(ticket).is("This describes a security problem.")
await semantic(ticket).score("The customer is frustrated.")
await semantic(ticket).choose(["billing", "technical", "sales"])
```

## Ask everything at once

Every question created in one synchronous turn travels in one request.

```ts
const t = await semantic(ticket).batch({
  urgency: score("A human needs to act on this urgently."),
  frustration: score("The person writing this is frustrated or angry."),
  security: is("This describes a security or access-control problem."),
  team: choose(["billing", "technical", "security"]),
})
```

Measured on a short support ticket with seven questions (2026-09):

|  | Batched | Sequential |
| --- | --- | --- |
| Requests | 1 | 7 |
| Tokens | 490 | 2440 |
| Latency | 801 ms | 2572 ms |

5.0× cheaper, 3.2× faster.

## Learn more

- [Documentation](https://jevascript.org/docs/index.md)
- [Quick start](https://jevascript.org/docs/quick-start.md)
- [API reference](https://jevascript.org/docs/api.md)
- [GitHub](https://github.com/hakantapanyigit/jevascript) · [npm](https://www.npmjs.com/package/jevascript)
