Skip to content
Firmspace
Back to blog

The Answer the Model Never Writes: Why Some AI Replies Skip the Second Round

A person in a warehouse opens the assistant and asks, by voice, how much the firm still owes and what is running out on the shelf. The assistant has to do two different jobs: understand the request and choose the right tools, then turn the tool result into a short spoken answer. The first job needs a model. The second one does not always need one.

In many assistants the second job is another full model call. The model receives the tool output and writes a sentence about it. That round is the part users feel as a pause, and it is also a chance for a number to be paraphrased, rounded or attached to the wrong invoice. Firmspace keeps the model for the part that needs judgment and lets ordinary server code write the answer when the shape of the result is known.

This is not a smaller model or a hidden shortcut around the data. It is a formatter. For a small set of read-only tools, the server knows exactly which fields come back and how a spoken summary should sound. The model still decided to call the tool; the data still comes from the CRM; only the last sentence is written by code.

The set is deliberately small: navigate, list_invoices, finance_summary and list_products. They cover four common voice requests: open a page, show unpaid or overdue invoices, give an accounting overview, and show what is out of stock or running low. These are bounded results — counts, sums per currency, dates, product names. There is no room for interpretation in the shape.

The shortcut is allowed only under conditions. The conversation must be in voice mode. The last step must have no write proposal, no executed change, no failed tool and no text already written by the model. The request must be a summary question, or the only action must be a page navigation. If any condition fails, the normal model answer is used. Speed never overrides a confirmation or an explanation.

The summary question is the delicate part. The server checks the wording for signals such as how many, unpaid, overdue, running out, summary or total, and it excludes requests that point at a document: download, PDF, open the last invoice, a specific invoice number. The distinction is practical. «Tell me the total» can be answered from a list. «Take me to that invoice» needs the model to continue until the document is actually open.

What the formatter says is narrow and factual. For invoices it gives the count, the open sums per currency and the oldest overdue invoice with its days. For the finance overview it gives unpaid and overdue counts, the sums per currency, money received this month and expenses this month. For stock it gives the number of products that are out and running low, plus the first names. For navigation it says, in the language of the request, that the page is opening.

It also knows when to say nothing extra. An empty list becomes none, not a sentence about a clean pipeline. A zero sum is left out instead of being printed as a false precision. The formatter cannot add a customer, a reason or a recommendation, because those fields are not in the tool result. That is the point: the answer is as boring as the data, and that is what makes it trustworthy.

Language is handled by a small detector, not by a translation model. Ukrainian is recognised by its letters, other Cyrillic as Russian, German by umlauts and common German words, and everything else falls back to English. The formatter has separate phrases and separate day forms. The answer follows the language of the request, not the language of the interface — which matters when a German interface is used by a Ukrainian team.

Navigation has its own small version of the same idea, and it works in text as well. When the model's only action is to open a page, the server can answer opening plus the page name without another round. If the same request also asks for data, the shortcut is off, because the answer now needs a summary rather than a label. The user sees the page either way; the difference is only who writes the sentence.

Write actions follow a stricter version. In voice mode, if every executed change succeeded, nothing is waiting for confirmation and the model wrote no text of its own, the server answers done in the language of the request. If a confirmation is needed, there is no shortcut: the assistant says what it prepared and the application asks the person. The fast path never confirms anything on someone's behalf.

The queue uses the same principle. When one message contains several jobs, the assistant puts them in a queue and works through them one by one. The summary — how many were completed, how many wait for confirmation, how many failed — is composed by the server in the language of the request. Each job still goes through the model; only the closing report is deterministic.

The daily AI limit is charged once, when the chat request arrives, not once per model round. A server-composed answer therefore does not consume an extra request. This is worth saying plainly because speed features often hide a cost. Here the saving is real: fewer model rounds for the same answer and the same plan limit.

Why not use this for everything? Because a formatter cannot explain why an invoice is overdue, which customer to call first, whether a dispute is already noted on the card, or what a half-written instruction really means. Those questions need the model, with all its cost and latency. A short deterministic answer to a question that needed judgment would be worse than a slower good one.

The trade-off is honest. The fast path reads only the fields the tool returned; it cannot notice a note that changes the meaning, and it can miss a paraphrased summary question, in which case the slower model answer takes over. It covers four tools, not the whole CRM. It is a voice convenience, not a second source of truth: it is built from the same records the model would have read.

The lesson is larger than one feature. An AI assistant in a business process is not only a model answering questions. It is a division of labour: the model for intent, ambiguity and judgment; deterministic code for known shapes and known words; the database for facts. Some of the best answers in the product are never written by the model at all.

Let us automate your next process together.

Describe a recurring workflow to us. Together we will check whether and how it can be automated sensibly.