Skip to content · تخطَّ إلى المحتوى
نبرة Nabra

Using the API

Validation and anti-hallucination

Why the model can never add information that was not said.

Language models read dialect well and admit uncertainty badly. So the model only proposes values; an independent, deterministic layer decides what survives. It never adds information beyond what it can prove from the transcript.

  • Phones — only digits that were spoken. «صفر سبعة تسعة…» is normalized; a number that was never said is rejected, one a digit short comes back invalid.
  • Names — «المستلم أحمد» gives أحمد; أحمد محمد would be rejected. Never spelling-corrected.
  • Money and numbers — «ستاشر دينار» is 16; any amount not said is rejected. Money asks for confirmation by default.
  • Dates — «بكرا» is resolved only with a referenceTime; otherwise it comes back invalid with heard.
  • Choices — an enum option picked without its words being said is uncertain (mapped_by_model), never presented as fact.
  • Lists — an item that wasn't said is dropped and reported; an invented quantity falls back to the default and is reported.
  • Text — no time, size, count or instruction that wasn't said.

Measured behaviour

On the Jordanian evaluation set — 18 delivery cases (including transcripts of real recordings) and 8 cases across the restaurant, appointment, field service and HR schemas — the default local model (qwen2.5:7b) passes every case with no values outside what was said. The set is small; a larger multi-speaker evaluation is on the roadmap.