cd /news/large-language-models/your-model-doesn-t-need-to-write-the… · home › topics › large-language-models › article
[ARTICLE · art-150965] src=dev.to ↗ pub= topic=large-language-models verified=true sentiment=· neutral

Your model doesn't need to write the answer. It needs to point at it.

A developer argues that many LLM calls are effectively multiple-choice or extraction tasks and should be handled by pointer-style models that score spans or labels already present in the input rather than generating text token by token. The post cites Pointer Networks (2015), SQuAD (2016) and BERT's start/end scoring as precedent, and points to ScaleDown's four Constrained Decoding Models launched October 13, which return top_label scores or start/end offsets. It notes that pointing yields verifiable outputs — an offset can be sliced and checked — while cautioning that ScaleDown publishes no calibration numbers and that Classify always returns a winner, so an 'other' label and local measurement are needed.

by read3 min views1 publishedOct 15, 2026

You gave the LLM the answer. So why is it writing it out from scratch?

Send a model a support ticket and four labels, and ask which one fits. It writes back {"label": "billing"}, one token at a time. The word "billing" was in your prompt the whole time.

Extraction is the same. The invoice number is in the PDF, and the model types it back to you. Usually it types it right.

An LLM reads your prompt in one pass, then writes the answer one token at a time, each token another trip through the model. That's also why output costs more: on Anthropic's price list, Sonnet 5.5 is $2 per million input tokens and $10 per million output.

For a short label the cost isn't the real problem. The problem is that a writer can write anything: "Billing", "billing_dispute", "Sure! The label is billing." So you add a parser, a retry, a schema. JSON mode helps, but it's "a format constraint, not a correctness guarantee," as one guide puts it. A pointer works differently. It reads the input once and scores what's already there: each of your labels, or each possible span of the document. The answer can only be something from the input.

This isn't new. Pointer Networks (2015) picked elements of the input as output. SQuAD (2016) defined every answer as "a segment of text from the corresponding reading passage." BERT answered it by scoring each token as a possible start or end of the answer. Named entity recognition still returns start and end offsets today.

ScaleDown launched four small task models on October 13 and calls them Constrained Decoding Models. Their partner post with LangChain sums up the idea: "a CDM is trained for one task and only returns answers that task allows, like a label from your list or spans of the input."

Going by ScaleDown's docs:

top_label plus scores that sum to 1.0. start/ end offsets. So the idea holds for two of the four. One naming note: "constrained decoding" usually means masking a normal LLM's tokens so it can't break your schema (Outlines, XGrammar). Here it's a product name.

Speed is nice. The bigger deal is that a pointed answer comes with proof. If Extract says the invoice number sits at characters 8 to 17, you slice your own string and check. A written answer with two digits swapped looks exactly like a correct one.

Not instead of your main LLM. Around it. Small models do the routine jobs and the general model does what actually needs writing.

The loop check comes from LangChain's example: stop the run when Classify scores "looping" above 0.8. That only works if 0.8 means something on your data. ScaleDown doesn't publish calibration numbers, and Classify "always returns a winner - even if the model is uncertain," so add an other label and measure on a few hundred of your own examples.

TypeSafe's Jev, OpenAI's Decisions API and Cloudflare's Clef all answer typed questions with probabilities. That's the Classify half. None of them document pointing at spans.

Want the deeper dive? Check out the detailed blog with interactive examples here: smiit.in/writing/answer-is-in-the-input Which of your LLM calls are secretly multiple choice? Tell me in the comments.

── more in #large-language-models 4 stories · sorted by recency
── more on @scaledown 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/your-model-doesn-t-n…] indexed:0 read:3min 2026-10-15 · —