Choice, Score & Noul — State, Parallel Questions & Typed Answers
System One usefulness lives in three primitives. Mis-picking the type is a common interview fail: using a Noul when you need ordered levels, or a free-form LLM parse when a closed Choice would do. This lesson teaches state, question IDs, criteria, parallel evaluation, and answer shapes — with sandbox mocks and no API keys.
- 1Gist
- 2Maps
- 3Q&A
- 4Sandbox
Voice readout needs Web Speech Synthesis in this browser.
Is the candidate strong in Python?
Prefer
Score levels you own, or a defined Choice
none / familiar / daily / expert is a rubric. A closed Choice works if you truly have a set. Define “strong” in instructions.
- Score may sit between levels; you still own the legend.
- Choice returns the full distribution — useful for switch/case.
- Keep arithmetic and exact magnitudes in code (jaggedness).
Alternative
A Noul, or parse a chat paragraph
Noul 0.5 means equal yes/no probability, not mid skill. Free-form LLM text is not a typed contract.
- Noul has no separate confidence field — gate on distance from 0.5.
- Do not treat P(yes) and 1−P(not) as interchangeable across questions.
- If you needed extraction, propose candidates then Choice among them.
Overview
System One usefulness lives in three primitives. Mis-picking the type is a common interview fail: using a Noul when you need ordered levels, or a free-form LLM parse when a closed Choice would do.
This page teaches state, question IDs, criteria, parallel evaluation, and answer shapes — with sandbox mocks (no API keys). Hub: System One & Jev.
You should be able to:
- Build filtered state and write instructions that cite nested fields.
- Map a judgment to Choice / Score / Noul in one sentence.
- Explain why answers in one call cannot depend on each other.
State
State is the unstructured (or JSON) context: ticket, policy, transcript, feature flags. Jev accepts text / JSON object / array of text (vendor: images / audio not yet). Prefer filtered, relevant fields — large irrelevant state hurts accuracy (jaggedness: context rot).
Reference nested fields in instructions with backtick paths like ticket.messages[0].text.
Three primitives
- Choice — pick one of a closed option set (max 255, vendor). Returns
choice, probabilities over all options,confidence. Use for routing, document type, language. Addother/nonewhen coverage is incomplete. - Score — ordered rubric levels (2–10). Returns
score(can sit between levels),legend, probabilities,confidence. Use for severity, frustration, quality bands — not raw numeric magnitude reconstruction. - Noul — yes/no → probability 0–1 field named
noul. No separate confidence. Near 0.5 = uncertain, not “medium skill.” Clarifycriteria.true/criteria.falsewhen needed.
Parallel questions
Send every judgment that shares state in one POST. Types mix freely. Answers are independent — one answer is not hidden context for another.
If B truly depends on A’s value (fetch more data, change option set), make a second request in code; otherwise ask together and ignore unused answers (speculative fan-out — next lesson).
Question IDs are for your code. Put the full question in instructions even if the ID seems obvious.
Architecture (request → typed answers)
Few participants, short labels. One round-trip, then your code branches.
Sequence
- 1
App code
Step 1 - Build state + question map
- 2
App code → POST /v1/systemone
state + Choice/Score/Noul questions
- 3
POST /v1/systemone
Step 2 - Evaluate questions in parallel
- 4
POST /v1/systemone → Jev parallel sampler
same state, N judgments
- 5
Jev parallel sampler → POST /v1/systemone
typed answers by id
- 6
App code
Step 3 - Branch in code
- 7
POST /v1/systemone → App code
answers + usage
Lesson map
Choice, Score & Noul — State, Parallel Questions & Typed Answers
System One usefulness lives in three primitives. Mis-picking the type is a common interview fail: using a Noul when you need ordered levels, or a free-form LLM parse when a closed Choice would do. This lesson teaches state, question IDs, criteria, parallel evaluation, and answer shapes — with sandbox mocks and no API keys.
Architecture. Architecture
Select a node to see why it exists, or an edge to see the protocol, direction, effect, and consequence.
Mermaid export
flowchart TB app["App code"] api["POST /v1/systemone is one of the participants this lesson's sequence actually names."] jev["Jev parallel sampler is one of the participants this lesson's sequence actually names."] app -->|state +| api api -->|same state, N| jev jev -->|typed answers by| api api -->|answers + usage| app
Sandbox: Choice + Score + Noul (Python)
Illustrative shapes matching TypeSafe answer fields. Stub only.
Press Run. Snippets must be self-contained — no network, files, or native modules.
Same gate (TypeScript) — pick the primitive
Press Run. Snippets must be self-contained — no network, files, or native modules.
Comparative: which primitive?
| Primitive | Pros | Cons |
|---|---|---|
| Choice | Maps to switch/case; full distribution | Relative among options; high cardinality needs staging (vendor max 255; wikiracing uses score-then-choice) |
| Score | Between-level scores; rubric you own | Weak for reconstructing exact magnitudes (jaggedness); keep arithmetic in code |
| Noul | Probability as first-class signal; simple if-thresholds | No confidence field; do not treat 0.5 as “medium”; vendor structural-invariance caveat |
Pitfalls
Airline ticket: cancelled flight, angry tone, possible refund vs rebooking vs info. Name three atomic questions, their types, and why they can share one POST. What would force a second call?
Interview Q&A
Choice vs Score for “is the candidate strong in Python”?
Answer
Define “strong,” or use Score levels (none / familiar / daily / expert). A Noul of 0.5 means equal yes/no probability, not mid skill.
Why question IDs are not model prompts?
Answer
IDs are for your code and logs. Put the full question in instructions — even if the ID seems obvious. The model is not required to “understand” your kebab-case key.
When do you split one judgment into many?
Answer
Independent factors (severity, frustration, evidence quality) → atomic questions + weights in code. That is the composite scoring pattern — do not bury a product policy inside one mega-prompt.
Can answers depend on each other in one call?
Answer
No — parallel and independent. Chain a second request only when state or option sets truly need the first answer.
Extraction without generation?
Answer
Regex or an LLM propose candidates; Choice selects among them. Jaggedness: do not force generation via chained choices. Light-link Structured Outputs if the proposal step is schema-constrained text — do not recap it here.
What does a Choice return?
Answer
The chosen option, a probability over all options, and a confidence. Use the pick for switch; keep the distribution for expected value or custom gates.
What does a Score return that Choice does not?
Answer
An ordered rubric. score can sit between levels. Legend is yours. Do not use Score to reconstruct a dollar amount or a date.
How do you gate a Noul?
Answer
There is no confidence field. Use bands (act if noul > 0.85, human if 0.4–0.6, reject if < 0.15) and tune on a labeled set. Depth: confidence routing.
Vendor structural-invariance caveat?
Answer
A separate Noul and Choice on the “same” question need not match. Do not port thresholds across types blindly (jaggedness).
Max Choice cardinality?
Answer
Vendor: 255. Huge sets need staging (score-then-choice, or retrieve-then-choose). Add other / none when the closed set is incomplete.