Guides

What your forecast cannot know

A field note from AgentLink’s design-partner conversations with CPA and fractional CFO practices. It follows What your clients cannot see between check-ins and What your firm cannot see across clients.

Nilanjan Raychaudhuri · Published September 8, 2026 · Last updated September 8, 2026

Several practitioners we spoke with who use automated forecasting have largely solved the mechanical refresh problem forecasting tools were built to solve. The books and the bank are connected. The model rebuilds on a schedule, in some firms daily. The spreadsheet that used to take a day to update now updates itself. Staleness, in the sense the category means it, is largely handled.

And yet the same practitioners described forecasts that were incomplete in ways nobody caught until the next call. Not incomplete because the data was old. Incomplete because something was known that the data could not contain. This guide is about that gap, why it survives automation, and why the fix is not more discipline.

The short answer

A forecast has two kinds of freshness. Data freshness asks when the books and bank activity were last updated. Assumption freshness asks whether the model contains what the client and firm currently know about future timing, commitments and plans. A daily rebuild can solve the first without solving the second.

The forecast blind spot is forward-looking information known to the client or firm but absent from the systems the model can read. It includes decisions, commitments, changed expectations and conditional plans communicated in conversation before any corresponding transaction exists. A client tells the firm on a call that their largest customer is paying two weeks late, that the hire is pushed to November, that a distribution is planned after quarter close. None of these is a transaction. None reaches the books or the bank. The forecast rebuilds on schedule and produces a complete-looking picture that is missing what the firm already knows.

The consequence is a different kind of staleness. A forecast can be regenerated an hour ago and already be stale relative to what the firm knows, because the thing that changed was said out loud rather than posted to a ledger. Refresh frequency does not touch this. What touches it is whether the information was captured at the moment it was shared, in a form the model can use.

This guide draws on qualitative design-partner conversations with CPA and fractional CFO practices. Tool behaviour is described generically; we did not audit any specific product.

What automated forecasting has genuinely solved

It is worth being fair about this, because the argument that follows is not that forecasting tools are inadequate at what they do.

Building a cash model by hand is slow. Keeping it current by hand is slower, and it is the part that gets skipped when a busy week arrives. Tools that connect to the books and the bank and rebuild the model automatically have removed most of that work. A practitioner who once refreshed a client’s forecast monthly, because that was all the time allowed, can now have a current one every morning without touching it.

That is a real improvement and the firms we spoke with valued it. The blind spot is not in what these tools do. It is in what they can see.

The forecast is built from recorded facts

A common automated cash forecast begins with books and bank activity. Some systems accept additional feeds and manual assumptions, but every model is still limited to information that reached one of its inputs. The books tell it what has been invoiced, billed, accrued and owed. The bank tells it what has actually moved. From those it projects forward using patterns, assumptions and whatever recurring items it has been configured to expect.

Everything it knows, it knows because someone recorded it. An invoice was issued. A bill was entered. A payment cleared. The tool is very good at what has been written down.

But a meaningful share of what determines next month’s cash has not been written down. It was said.

The information that never reaches the model

Practitioners described the same pattern repeatedly. On a call, the client mentions something that changes the picture:

  • “Our biggest customer asked if they could pay the March invoice at the end of April.”
  • “We’re going to hold off on the second hire until we see how Q4 lands.”
  • “I want to take a distribution once the tax payment clears.”
  • “The landlord agreed to defer half of next month’s rent.”
  • “We lost the Henderson contract. They gave notice on Friday.”

Every one of these moves cash by a material amount. Not one of them is a transaction yet. The late payment is still an open receivable at its original due date. The deferred hire is not in payroll. The distribution has not happened. The rent is still scheduled at full. The lost contract is still in the revenue run-rate because no invoice has failed to appear yet.

The forecast, rebuilt that night from the books and the bank, reflects none of it. It is recently refreshed but incomplete, and it looks exactly like a forecast that is recently refreshed and complete.

Why this is a blind spot and not a to-do

The natural response is that someone should enter these things. And in a well-run firm, someone does, sometimes. The difficulty is structural, in three ways.

The tool cannot flag what it does not have. A forecast missing something said on a call does not display a gap. There is no empty field where the customer’s late payment should be. The output is complete, plausible and confident. Nothing in it says an assumption is missing, because from the tool’s point of view nothing is.

The input has the wrong shape. “Meridian will pay two weeks late” is not a journal entry. It is a conditional statement about future timing, with a source, a confidence level and a dependency on something the client said rather than something that happened. Forecasting tools accept structured financial data. To reflect it, someone has to translate it into whatever assumption field the model exposes, find that field, and edit it. That translation step is where the information is lost, not because anyone is careless but because it is a small piece of unstructured work competing with structured, deadline-driven work.

By the time it surfaces, it is already old. The late payment is discovered when the receivable ages past due. The lost contract is discovered when the invoice does not go out. The distribution is discovered in the bank feed after it clears. At each of these points the forecast catches up, but it catches up after the fact, which is exactly when a forecast is least useful. The window in which the firm could have advised the client on the consequence has closed.

This is why the problem survives automation. Automation can solve mechanical refresh. It does not automatically solve the capture of information shared in conversation, and the two are different acts.

A note on alerts

Threshold alerts are useful, but they inherit the model’s assumptions. An alert fires on the model the tool has, and if the model does not include what the client said yesterday, the alert is confidently evaluating a picture built from incomplete assumptions. An alerting layer on top of an incomplete forecast is not attention. It is a second opinion from the same blind spot.

What this looks like across a portfolio

For one client, a partner can hold the unrecorded information in their head and mentally correct the forecast when they look at it. Many practitioners told us that is exactly what they do: read the tool’s number, then adjust for the three things they know it does not.

Across a growing portfolio that mental correction becomes unreliable, because it requires remembering which three things apply to which client, and remembering that they were never entered. The forecast for the client the partner spoke with yesterday is corrected in the partner’s head. The forecast for the client they spoke with three weeks ago is not, and it has been rebuilt twenty-one times since without anyone noticing what it lacks.

This is the firm blind spot applied to forecasting. The capability that closes the gap for one client is a person’s memory. That does not scale, and the tool cannot tell you where it has failed.

What has to change

The tempting fix is process: after every call, update the forecast assumptions. Firms that try this report that it holds for a few weeks. A separate after-the-fact entry step can degrade under load in a busy practice. The information arrived in conversation; recording it is a separate task that comes later, and later is where things fall.

The durable fix has two parts, and neither is a discipline instruction.

Capture at the point the information is shared, not afterward. Whether it is said on a call, written in an email or mentioned in passing, it needs to become an input at the moment it exists. If it depends on someone remembering to go somewhere and enter it, it will be entered for the clients who are top of mind and missed for the rest.

The tool has to accept the shape of the input. A spoken commitment or plan is a sentence about the future, not a number in a cell. A forecasting tool that can only be updated through structured assumption fields will always require the translation step, and the translation step is where the information is lost. The model needs to take it in something close to the form it was shared, understand what it implies for timing, and carry it as an explicit assumption that can be seen, questioned and verified when the money does or does not move.

Accepting conversational input is not enough. The extracted assumption should preserve its source, amount, timing and confidence, and the firm should be able to confirm or correct it before a material change enters the forecast. Natural language is where the information lives; it is also where amounts and dates get misheard.

One thing to say plainly: this applies to any system, including ours. A tool that depends on someone entering the information after the call fails the same way a spreadsheet does. Capture has to be a byproduct of the conversation, not a task that follows it.

Where AgentLink fits

AgentLink treats forward-looking information as forecast inputs. When a client’s commitment or a change in timing surfaces, through a call, a message or a question, it is captured as an explicit assumption with its source, folded into the forecast, and held open until actual activity confirms or contradicts it. The firm can see which assumptions the forecast rests on, where each one came from, and which have not yet been verified.

What it does not do is decide. Whether a client should take the distribution, whether the deferred hire is wise, whether the customer’s late payment should change the firm’s advice: those remain partner questions. The software keeps the forecast honest about what it knows and what it has been told. The judgement about what to do with that stays with the firm.

Frequently asked questions

Our forecasting tool refreshes every day. Is this still a problem?

Potentially. A daily refresh keeps connected records current, but it cannot include material information that has not reached those systems. Refresh reads the books and the bank, and the information described here is in neither.

Can’t we just add a step to update assumptions after each call?

You can, and it helps for the clients you speak with most often. In practice it degrades under load, because it is a separate task performed after the moment the information appeared. The firms we spoke with that relied on this described it as working for their top clients and quietly lapsing for the rest.

Isn’t this just a data-entry problem?

Partly, but the deeper issue is that the input has no natural home. A spoken commitment is not a transaction, so there is nowhere obvious to put it and nothing to prompt its entry. A tool that requires it to be translated into structured fields has made the data entry harder than it needs to be.

Does this mean the forecast is useless without it?

No. A forecast built from books and bank is a good picture of recorded reality, to the extent the books are reconciled and transactions categorised, and it is far better than none. The point is that it should not be mistaken for a picture of what the firm knows. The gap between those two is where clients get surprised.

About the author

Nilanjan Raychaudhuri is the founder of AgentLink (Tublian LLC, Columbus, Ohio), which builds controller-layer software sold through CPA and fractional CFO firms. He has spent the past year interviewing practitioners at fractional CPA and CFO practices about how advisory work is actually delivered. Team page

The practitioner observations in this guide come from design-partner conversations and are used with permission where attributed. Tool behaviour is described generically and as practitioners experienced it; we did not audit any specific product. Corrections to nilanjan@agentlink.finance.