Why Ask Dibein cites its sources — and what that costs us in latency
We almost didn't ship a chat interface. A look at the grounded-retrieval architecture behind Ask Dibein, and the two-to-five-second cost of refusing to guess.
Before we built Ask Dibein, we spent a few weeks trying three general-purpose AI assistants against our own company's financial data, mostly out of curiosity about whether we even needed to build anything ourselves. All three were fluent. All three were confident. Two of them gave us a wrong answer to a simple question about our own runway, stated with exactly the same tone of certainty as the correct answers next to it. That experience shaped almost every architectural decision that followed.
The failure mode we were designing against
A general-purpose language model answering a finance question from a document or a data export is doing something closer to educated pattern completion than calculation — it's producing text that looks like a plausible answer, and it's often right, because the patterns it learned during training are often a good guide. "Often right" is not a bar a number in a board deck should have to clear. The failure mode that worries us isn't the assistant being wrong; it's the assistant being wrong in a way that's indistinguishable, in the moment, from being right.
Grounded retrieval instead of free generation
Ask Dibein doesn't generate an answer from a language model's general knowledge and then decorate it with your numbers. The question is first parsed into a structured query against your connected data — the same forecast, ledger, and transaction tables that power Cash Flow Copilot and Anomaly Radar — that query is executed, and the answer is composed from the actual result set. The language model's job is narrower than it looks from the chat interface: understand what's being asked, translate it into a query the underlying systems can actually answer, and phrase the result in plain language. It is deliberately not the source of the numbers themselves.
That's what makes source citation possible as more than a UI flourish. Because every number in an answer traces back to a specific forecast row or a specific set of transactions, we can link directly to them — not because we added a citation-generation step on top of a free-form answer, but because the architecture never produced an ungrounded number to begin with.
What we do when the data isn't there
The harder design decision was what happens when a question can't be answered from connected data with confidence — a question about a bank account that isn't connected, or a forward-looking question that genuinely requires a scenario model rather than a lookup. The tempting failure mode here is to answer anyway, using general knowledge to fill the gap plausibly. We built the opposite behavior deliberately: Ask Dibein says what's missing and, where relevant, opens a pre-filled Scenario Studio draft instead of a guess. It's a less impressive-looking demo. It's also the only version of this feature we were willing to put in front of a customer's actual board numbers.
The cost: two to five seconds
Grounded retrieval is slower than free generation, and there's no way around that honestly. A free-form answer from a language model can start streaming tokens within a few hundred milliseconds. Ask Dibein's typical response takes two to five seconds, because the question has to be parsed into a query, the query has to execute against potentially large transaction and forecast tables, and the answer has to be composed from a real result rather than predicted token by token from the start. We measured this early and debated it seriously — a few seconds of latency is a real, felt cost in a chat interface, where users have been trained by consumer AI products to expect near-instant responses.
We kept the slower, grounded version. The reasoning was simple once we stated it plainly: nobody has ever told us a two-second wait for a cash number was the reason they didn't trust it, and multiple people, including us, have been burned by a fast, wrong number that looked exactly as confident as a correct one. For a category where the answer is going into a board deck or a hiring decision, we think that trade is not close.
The live playground includes a scripted version of Ask Dibein on a sample dataset — every answer states its source, the same way the production version does.
Spent a decade building time-series forecasting systems before Dibein. Writes about infrastructure, integrations, and product architecture.