The core technique here is deceptively simple: instead of asking an LLM to write a paragraph explaining its answer, you force it to emit a single letter (A, B, C) and then read the probability distribution across all possible letters. Each letter maps to a predefined option. The result is a structured classification with confidence scores, not a chatbot response. This is the trick behind Jev, a lightweight classification framework, and the author has extended it with vision model support. The extension to vision models is the genuinely interesting move. By adding an attachments field that accepts base64-encoded images, the same question-and-answer scaffolding works against multimodal models. The author's demo captures webcam frames and classifies them on three axes simultaneously — person visible, indoor/outdoor, brightness level — running at about 1 FPS with Gemma 4 12B on an RTX 3090, or 0.2 FPS through OpenAI's gpt-6-luna endpoint. The engineering is clean and minimal. The entire implementation is a single Python script using only OpenCV for webcam access — no computer vision libraries doing the actual classification work. Questions are defined in a JSON structure with three types: boolean (noul), multiple choice, and ordinal score. The wrapper handles the prompt construction, API call formatting (different paths for llama.cpp vs OpenAI), and probability normalization automatically. Performance numbers reveal the real constraints. Three questions per frame means three separate API calls per frame, and KV-cache prefix sharing could theoretically help but the author hasn't implemented it for the OpenAI path. The 0.2 FPS on OpenAI versus 1 FPS locally tells you most of the latency is network and connection overhead, not inference. Specialized CV models would crush these numbers, but that misses the point — the value proposition is flexibility through natural language question definitions. The probability normalization math is worth noting. The code handles missing tokens (options the model didn't return logprobs for) by checking whether their combined estimated probability exceeds 1e-6, raising an error if they're non-negligible. This is a practical guard against silently bad classifications when the model's vocabulary tokenization doesn't align perfectly with the expected option letters. What makes this generative rather than just clever is the composability. Any question expressible as a multiple-choice prompt becomes a structured classifier with confidence scores. Change a condition by editing a text string, not retraining a model. The Jev ecosystem (OpenJev, SemIf) is building on this same foundation for text-only classification; adding vision is a natural and useful extension that the original format didn't contemplate. The limitation is equally clear: you're paying full LLM inference cost for what amounts to a classification task. At 1 FPS with three questions, this is viable for monitoring and alerting, not real-time video processing. The approach sits in a useful niche between 'build a custom CV pipeline' and 'just ask ChatGPT' — structured enough to be programmatic, flexible enough to iterate in plain English.