Repository navigation
Recipe 06: Multiple topic labels #6
Copy link
Copy link
Closed
Labels
cat: language & contentCategory: Language & contentCategory: Language & contentdecision: noulUses a Noul questionUses a Noul questionlevel: 1 beginnerOne bounded judgment over a short prepared inputOne bounded judgment over a short prepared inputpriority: p1Next up once unblockedNext up once unblockedsize: SAbout half a day for one agent or personAbout half a day for one agent or personstatus: blockedWaiting on the issues listed under DependenciesWaiting on the issues listed under Dependenciestype: recipeA cookbook notebook recipeA cookbook notebook recipe
Milestone
Description
Recipe 06 of 60 · Level 1 (Beginner) · Language & content ·
Noul
Use case
Tag customer feedback with every applicable topic by asking an independent yes-or-no question for each predefined label.
What to build
The folder recipes/06-multiple-topic-labels/ with notebook.ipynb, README.md, and fixtures/, meeting the recipe contract. Start from python tools/new_recipe.py 06 and the template in recipes/_template/.
Build notes
- One independent Noul per predefined topic label, all sent in a single request.
- Fixtures need multi-label gold sets, including items with no label and items with three or more.
- Explain why this is not one Choice: labels are not mutually exclusive.
- Python applies a per-label threshold and assembles the tag set.
Decision design
- Noul. Write each proposition as a statement that is true or false. One independent question per label or concern, sent together in one request. Noul has no confidence field, so each threshold is chosen from examples and evaluated.
Level 1 scope
One bounded judgment over a short prepared input with direct inspection of typed results.
Acceptance criteria
-
recipes/06-multiple-topic-labels/notebook.ipynbruns top to bottom offline, with no key and no network, and its outputs are committed - Live mode is opt-in (
JEV_COOKBOOK_LIVE=1withTYPESAFE_API_KEY) and uses the same question definitions as the offline run - Fixtures are synthetic, include the hard cases named in the build notes, carry gold labels, and pass the fixture validator
- Every response fixture records its provenance, and the notebook states which mode it ran in
- Evaluation: Per-label precision and recall, micro and macro F1, and exact-set match.
- A reader with basic Python can follow it end to end; every new term is explained where it first appears
- At least three individual typed answers are displayed and discussed before any aggregate metric
- No statement about Jev's quality, latency, or cost appears without recorded live inference; in a synthetic run, metrics are labelled as pipeline checks
-
recipes/06-multiple-topic-labels/README.mdsays what the recipe teaches, how to run it, and what was and was not measured live - The pull request changes only
recipes/06-multiple-topic-labels/and CI is green
Dependencies
- Blocked by Foundation: CI executes every notebook offline and validates fixtures #69 (CI executes every notebook offline and validates fixtures)
- Tracked in Epic: Level 1 · Beginner recipes #75
Sources
Read these before writing the questions.
- S02 · TypeSafe AI: Primitives (Questions): Choice, Noul, Score, independent questions, and dependent follow-up calls.
- S03 · TypeSafe AI: Confidence: Distribution-derived confidence and task-specific thresholds informed by observed outcomes.
- S07 · TypeSafe AI: Jev 1.13 jaggedness: Version-specific limitations affecting arithmetic, context selection, adversarial content, and generation.
Out of scope
- Changes to shared code, the catalog, or the root README. If the shared package is missing something, open a foundation issue and link it here.
- Real side effects of any kind. Actions are simulated.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
cat: language & contentCategory: Language & contentCategory: Language & contentdecision: noulUses a Noul questionUses a Noul questionlevel: 1 beginnerOne bounded judgment over a short prepared inputOne bounded judgment over a short prepared inputpriority: p1Next up once unblockedNext up once unblockedsize: SAbout half a day for one agent or personAbout half a day for one agent or personstatus: blockedWaiting on the issues listed under DependenciesWaiting on the issues listed under Dependenciestype: recipeA cookbook notebook recipeA cookbook notebook recipe
Activity
CompleteDotTech commentedon Oct 8, 2026
Orchestrator note for the brief of this Noul recipe (from the review of recipe 02, #136): add S03 (Confidence, https://docs.typesafe.ai/confidence.md) to the sources — a Noul recipe's certainty is
|2p − 1|per that page and the recipe must state it; design an explicit uncertain/review outcome (the Noul page's three-path pattern) unless this issue rules it out; flagged items land in ajev_cookbook.simulation.ReviewQueuethe notebook shows; validation probabilities must populate the band the threshold is chosen from; every validation number and figure carries the selection label. The shared helper is being corrected under #140; do not start before it merges.Recipe 06: Multiple topic labels (#158)
Fix round 1: address Opus review MC1-MC3 and cheap suggestions on PR #…
Merge origin/main (3c5e188) into foundation/sweep-163-b
Fix round 1: re-execute recipes 06 and 08 notebooks (text-only changes)
Merge origin/main (a9c9360) into foundation/sweep-163-b
Sweep: recipes 06-10 aligned with the current contract and guard (#197)
Recipe 35: Semantic feature extraction (#237)
Recipe 37: Research domain tagging (#236)