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 backinvalidwithheard. - 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.
