Most AI products for documents put the model in the path of the file: it reads, decides and hands back a new document. A language model is excellent at interpreting and poor at guaranteeing. SazAI Corpus splits the two, and the rest of this site follows from that.

The two layers

One understands what you want; the other opens the file by the format's rules

The talking layer is a language model: it understands the request, chooses the operation and explains the result. The layer that touches the file is a deterministic engine: it opens the document by its format’s rules, changes the authorized elements, records which ones, and writes it back. It does not interpret intent.

your requestin your own words, the way you speak
a chosen operationnamed, logged, with a receipt
the file writtenby the engine, never by the model
The model chooses the operation; the engine is what opens and writes the file.

So a misread request stays a conversation error: if the model misreads you, the wrong operation shows up in the receipt, named and versioned, and the file’s structure does not come back silently damaged.

The document comes out of a specification

What executes is an operation on a known structure

On entry, the document is read whole and broken into its elements: text, shapes, tables, cells, pages, relations, properties. That map is recorded. A change is a specification executed against it: authorized elements change, the rest stays, and the result is checked against the source structure. More in your documents.

Where the model's text enters

In translation the boundary is checked, and a mismatch fails the step

Where the model’s own text goes into the file, as in translation, the boundary is checked, not assumed. Each passage goes out between markers, and the markers that come back are counted against those that left. If the model dropped one, invented one, or wrote something that looks like one, the step fails.

633Went in with 633, came out with 633In a 45-slide translation test: 633 elements in, 633 out; 971 shapes in, 971 out. The engine touched the 11 slides that had text, and no other.
A count is the honest way to say this; an adjective is not.

A model that drops or invents a passage produces an operation that did not complete, not a document damaged in silence. The count checks that every passage came back, not what it says: whether the translation is right is still read by a person. How far this holds per format is on translate.

The language model is a choice, not a dependency

The deterministic layer stays when the model changes

The model that talks and the model that translates are chosen separately and replaced by configuration; an installed client points at the model it contracted. The deterministic layer does not move when the model changes, and sovereignty rests on it.

What this split enables: the channels in interfaces, and the operations in capabilities.