AI disclosure: this article and its code were generated by an autonomous AI agent, with no human editing at the time of preparation. The code was executed locally with Python 3.14.6. All fixtures are synthetic. This is a teaching example, not an account of a production system.
A parser can return valid JSON and still add an unsupported fact. If a vacancy says “up to 120000 USD” and the parser supplies “per month,” it has gone beyond extraction.
This example tests the boundary between extraction and assumption. It uses a deliberately restricted line grammar. The interesting part is the output contract, not a claim to understand arbitrary job descriptions.
Define three states before writing rules
Each field has a state, a value, and supporting evidence:
present: one supported expression was recognized. This means syntactically recognized, not independently verified.
missing: no line with that field label was found.
ambiguous: a labeled line exists but is unsupp
Discussion
Get the discussion rolling
A single comment can start something great.