Blog
What a reducer is, and what it is not
A reducer takes one unit of data, asks it typed questions in one request and writes the answers back as data. Not a summary, not MapReduce’s reduce.
In short
- A reducer = one unit, one request, typed answers back.
- Not a summary. Not MapReduce’s reduce. Not a threshold.
- Independent questions share one request.
A reducer is the evaluate stage in a jevreduce workflow. It takes one unit, a record or a group of records, binds it into a single request, asks Jev a fixed set of typed questions, and writes the answers back as data. The name is a nod to MapReduce. The nod stops there.
What goes in
- The unit. You choose it: one ticket, one customer with all of their tickets, one call transcript, one candidate pair. “Per customer” means grouping by the customer key and declaring which tickets go into the state. It does not mean renaming per-ticket scores as customer risk.
- The state. The fields from that unit the model is allowed to see, bound explicitly. Jev fetches nothing. A dataset reference in the instructions is not content.
- The questions. Each has a type with a fixed answer shape. Each is written to name the fields it is about, because the model never sees your question IDs.
Northstar
Ticket T01
Ticket T02
Customer signals
- Cancel intent
- Noul
- Concern
- Choice
- Severity
- Score
Typed answers
A probability
A category
A score
What comes out
| Type | Jev primitive | Stored answer |
|---|---|---|
| binary | Noul | The probability the proposition is true. No separate confidence field. |
| categorical | Choice | The selected option, the full distribution over up to 255 options, a confidence figure. |
| ordinal | Score | The expected position over 2 to 10 ordered levels, the level distribution, a confidence figure. |
Confidence is a statistic of the returned distribution. It is not a measured accuracy rate on your data, and it is not comparable across model families.
Every answer is stored in long form, keyed by run, stage, unit and question, next to the raw response. Adding a question does not change a database schema.
What a reducer is not
- Not a summary. Jev does not generate text. If you need a paragraph, that is a different model in a different stage, with citations back to the evidence a reducer selected.
- Not MapReduce’s reduce. A model judgment is not associative. Judging two halves of an account history and averaging the answers is not the judgment of the whole. When a group does not fit the context limit the unit fails loudly, and you design a bounded evidence stage instead. Nothing is truncated on your behalf.
- Not a threshold. A binary answer is a probability. “High risk” is a filter you write with a number in it, and the probability stays in the record so you can move the line later without a rerun.
- Not a stage per question. Independent questions over the same state travel in one request. A question is not a stage covers when a second reducer is worth it.
Limits worth knowing
- Jev 1.13 is text only. Extraction or transcription runs first and produces text you can read.
- Published request limits at review time: 64k tokens for state plus all questions, 32k for state plus the longest question. Oversized states fail. They are never trimmed silently.
- Independence in execution is not statistical independence. Do not multiply two probabilities and call the product the probability of both.
Next: open the app, load the ticket example, click a Customer signals node and switch the inspector to Raw input. That is the request.