Skip to main content
SpecWeave / JevA small model for a defined choice

Small decisions.
Clear boundaries.

Use Jev when the possible answers are known, but the language is not. Route a request, classify a failure, or suggest a model tier—then let your code decide what happens.

Optional. Paid API. Off by default. Your main coding model still writes the code.

An orange path passes through a precise branching structure
Choose from known paths. Keep authority in code.
01 / A concrete job

A coach asks differently.
The route still matters.

EasyChamp has existing routes for leagues, teams, and standings. Exact phrases are cheap to match in code. Paraphrases and other languages are the gap worth testing.

Explore the recorded callsAuthored test inputs · not live chat
Could I see the leagues available to me?
Regex baselinefallback
Integrated resultget_leagues
Reported confidence0.96

The Python regex falls back. Jev selects the existing league read with 0.96 confidence, above the 0.95 gate. In this replay, the integration routes directly instead of asking a generative model to choose a tool.

1 / CODE FIRST

Keep exact matches

Existing regex routes stay first. No model call for a decision code already handles.

2 / CLASSIFY THE GAP

Try a read route

For unmatched requests, Jev can select an allowed read operation. Confidence and policy gates can reject it.

3 / DEFER SAFELY

Keep the fallback

Ambiguity, timeout, or an unsupported operation returns to the existing chat path. Access checks stay in the application.

02 / Open the evidence

Measured calls.
Honest limits.

A useful result needs its denominator, baseline, and failures. These measurements come from live API calls on synthetic, author-labelled messages.

Latest: actual Python integration replay · September 22, 2026 UTC

Five extra reads routed without a generative routing call.

In 62 authored cases, the new regex-first integration added five correct direct reads. All five came from the 36 held-out cases, fixed before this run. This is an observed routing result in a replay, not a measured production productivity gain.

5 addedCorrect direct read routes
41 callsJev requests across 62 cases
289 msJev API latency, median
$0.000862Reported API cost for the replay

Sequential live requests · jev-1.13 · confidence gate 0.95 · p95 437 ms · regex baseline median 0.07 ms. This replay measures routing only. A separate controlled handler comparison appears below; production API latency is not included.

A narrow, testable improvement

Correct routing decisions improved from 45/62 to 50/62, counting both direct reads and required fallbacks. Held-out decisions improved from 24/36 to 29/36. Jev introduced zero wrong accepted read routes in this run.

Inspect all 62 cases and source revision (JSON) ↗

The remaining cost and risk

41 API calls produced five added routes. Most calls still fell back, adding latency and cost. The classifier used 12.9 seconds across the replay: each of the five recovered routes would need to avoid more than 2.58 seconds of work to offset that total latency. Three wrong direct routes in the existing regex remained unchanged. A small, authored corpus cannot establish production accuracy.

Integration defaults to off. Multilingual requests still use the existing English response templates. No measured production time savings, retention gain, or end-to-end chat speedup. Before enabling it for users, measure fallback volume, corrections, total latency, and total cost.

Controlled comparison · live models, fixture data

What changed in the actual chat handler?

For “Could I see the leagues available to me?”, the existing Gemini fallback could not list leagues. With Jev enabled, the same Python handler reached its existing league read and returned the fixture result.

Jev off · 1.99 s
I'm sorry, I can't retrieve a list of all available leagues. I can only provide information for a specific league if you give me its name or ID.
Gemini 2.5 Flash · no list API call
Jev on · 0.307 s
I found 1 league(s):
Demo Community League
Existing read route · no generative model call

This is one selected demonstration, not an independent speed benchmark. The fallback currently lacks a general list tool; exposing that tool is another improvement to test. Five previously successful cases were rerun: four routed directly; one fell below the confidence gate. Network model calls were real, but EasyChamp API data was a fixture. Production HTTP, authorization, database latency, and billed Gemini cost were not measured.

Read all five paired runs and full outputs (JSON) ↗
Earlier benchmark: 26 intent labels, a different question

The September 21 benchmark classified broad intent labels, including writes. Jev matched 25/26 labels; the ported JavaScript regex matched 12/26. Median API latency was 258 ms; total cost was $0.00073853.

Its broad labels and the new integration’s restricted read-or-fallback decisions are different tasks, so their accuracy figures are not directly comparable. The interactive examples above use the newer Python replay.

Inspect the earlier 26-call dataset (JSON) ↗
03 / Pick the right work

Use a model
where meaning matters.

If a rule or lookup already gives the answer, keep it. A smaller model is still slower and more expensive than no model call.

Good candidates

A finite set, varied language

  • Suggest a read route for an unfamiliar phrase.
  • Classify a test failure for human triage.
  • Suggest a task’s model tier, with a fallback.
Keep deterministic

Rules, facts, and authority

  • Permissions, payments, and write approvals.
  • Date arithmetic, counting, and exact lookups.
  • House policy, required checks, and release gates.
Keep generative

Work without a closed answer set

  • Write code, specifications, or explanations.
  • Review an implementation or investigate a bug.
  • Resolve a request that needs more context.
Is browser delegation a proven speedup?

Not in our EasyChamp check. Jev twice selected “done” on the homepage before reaching the requested competition listing. The completion verifier rejected both attempts. Treat navigation as experimental and verify the actual destination; do not equate a model’s “done” with completed work.

What leaves my machine?

The state you submit is sent to your configured provider, OpenRouter or TypeSafe. That can include prompts, task text, shell commands, or page content. SpecWeave masks common secret patterns, but masking is best effort. Do not submit data you are not allowed to share.

Can a high confidence score make a decision safe?

No. Confidence is a model output, not authorization or proof. Validate allowed outcomes, retain deterministic access checks, measure errors on your own data, and route uncertain cases to the existing fallback.

What happens if Jev is unavailable?

SpecWeave’s Jev commands return exit code 4 when disabled, unconfigured, or unreachable. Continue with the existing workflow. The optional shell guard fails open on provider errors; it is advisory protection, not a security boundary.

Will installing SpecWeave change my model or send my project?

Jev is off by default. Setup requires a provider key and an explicit opt-in. Tier routing is a suggestion; it does not silently replace your coding model. Each enabled call sends the state supplied to that call.

04 / Start with one decision

Test the gap.
Keep what helps.

Choose a repeated classification. Label a representative sample. Compare your current route with Jev before enabling it for users.

specweave jev setupspecweave jev doctorspecweave jev usage

New to SpecWeave? Install the CLI first. No Jev key needed for the local planning workflow.