Solution Vault
Building a cash flow forecast with AI
Yes. We've designed a bot that builds the thirteen-week cash flow forecast out of commitments that already exist — the open invoices and their terms, the approved bills and their due dates, payroll, debt service, tax, rent. It can be configured to run in any business. Your categories, your assumptions, your minimum cash line, your approvers. Every row names where it came from, anything nobody has committed to is a stated assumption instead of a smoothed number, and it moves no money and recommends no payment.
Want to get it up and running in your business? Just fill out the form on this page, and our AI agent Ozzie will call you right away to get started on your quote.
Or call the office: 813-686-7201
How the bot works
Nine steps. Pulling the ledgers, scheduling every commitment by week, tying the opening balance to the bank and computing the variance against actuals are ordinary code and cost almost nothing to run; the model is only asked to explain a movement it can point at.
It starts from commitments, not from a trend. Open invoices with their payment terms, approved bills with their due dates, payroll, debt service, tax, rent, the schedules you already keep. A forecast built from a growth rate is a different kind of document.
Everything is scheduled by week, in your categories. Each commitment lands in the week its own terms put it in, under the inflow and outflow lines you use. The arithmetic is ordinary code, so the total is checkable rather than generated.
The opening balance ties to the bank. Week one starts from the balance on the statement, reconciled to the ledger. A forecast whose opening position does not tie is held, because every week after it inherits the difference.
Every row names its source. This figure is that invoice, that bill, that payroll run, that loan schedule, as of that cutoff. The citation lives with the forecast, so a question about a week has an answer that does not require rebuilding it.
What nobody has committed to is a stated assumption. Work not yet invoiced, orders not yet placed, the sales nobody has made. These appear as named assumption lines with the rule behind them, never folded into a total that looks like a commitment.
Timing behavior is a rule you set. How late a customer group pays against terms, which suppliers are paid early, which rate is used for a foreign-currency line. The bot applies the rule you wrote and names it — it does not forecast a rate or predict a customer.
Last week's forecast is reported against actuals. Each run replaces the prior week with what really happened and shows the variance line by line, with the reason where your records hold one. A forecast nobody measures afterward is just a spreadsheet.
A week below your minimum cash line is flagged, not solved. The floor is a number you set. A week that breaches it is raised as a flag with the commitments that caused it listed — the bot does not pick which supplier waits, and it decides nothing about what gets paid.
A person approves the version that gets shared. The draft waits with the assumptions, the variances and the flags on top. Somebody named approves the version they read, and that version is the file that goes to the bank, the board or the owner. The bot sends nothing.
What you configure
It can be configured to run in any business. This is what that actually means — the list of things that are yours, not ours.
- Your forecast
- Thirteen weeks by default, rolling or fixed, which day the week starts, and whether a monthly view is produced from the same commitments.
- Your sources
- Which systems the commitments come from, how they are read, and which source wins when two of them hold the same obligation.
- Your categories
- The inflow and outflow lines you use, what belongs in each, and how debt service, transfers and owner draws are treated.
- Your timing rules
- How each customer group pays against terms, which bills are paid on time and which on the day they are due, and the rates used for a foreign-currency line.
- Your assumption lines
- What may appear as an assumption, how it is labeled, and the rule behind each one so a reader can tell a commitment from an estimate.
- Your minimum cash line
- The floor, where it comes from, and what happens to the run when a week falls below it.
- Your cutoffs
- When the ledgers are considered current for this forecast, which figures may be provisional, and what happens when a source has not been updated.
- Your approvers
- Who approves the forecast, who owns a variance when a question goes back, and which audiences always need a named person.
- Your release switches
- Which runs may be assembled automatically on your calendar, which wait for somebody to ask, and whether the finished file is delivered anywhere at all. Delivery starts off, and there is no payment switch to turn on.
Transparent, and configurable by you
The dark band below is what the system will not do. This is what you can see and change — and it is how we build everything, not something invented for this page.
- You see what it did, and why
- Every row names the commitment and the source behind it, every assumption line names its rule, every flag says which commitments caused it, and each run records the ledgers it read with their timestamps, the variance against the prior week, the questions it raised and who approved the file. A forecast can be checked against your own records rather than taken on trust.
- Versioned prompts you can tune yourself
- The category map, the timing rules, the assumption rules, the minimum cash line and the prompts behind writing a sentence about a variance are yours to tune. A change is a reviewable diff, replayed against weeks that have already happened so you can see what it would have forecast differently, and rolled back the same way.
- A human in the loop wherever judgment actually matters
- Pulling the ledgers, scheduling the commitments, tying the opening balance and computing the variance are automatic. Deciding what to do about a tight week, what to pay, what to chase and what to tell the bank are a person's — that boundary is a property of the system, not a promise about how carefully we'll use it.
- Every run logged, along with what it cost
- One row per run and one per flag: every source with its timestamp, every forecast line with its citation, every assumption with its rule, the variance against the prior week, who approved the file and where it went — plus token usage and cost for that run.
It can be configured to run in any business. The forecast and the rules are yours: your categories, your timing rules, your assumptions, your floor, your approvers. The forecasts on this page are one configuration of it, not the limit of it.
A human approves anything outside your rules
The boundary is the design, and on a workflow that touches money and payment decisions it is drawn hard. Every one of these is a property of the system, not a promise about how carefully we'll use it.
- It moves no moneyNo payment, no transfer, no scheduled run released, no draw. There is no payment rail attached to this bot and no configuration that attaches one. Bank access is read-only.
- It recommends no payment and delays no supplierA tight week is reported with the commitments that caused it. Which bill waits, which customer is chased, whether to draw on a line of credit and whether it is safe to take a draw are decisions for a person, every time.
- It predicts no sale and no rateRevenue nobody has committed to is an assumption line with your rule beside it, not a prediction. Exchange rates, interest rates and payment behavior are configured inputs, and the bot does not forecast any of them.
- It posts nothing to the ledgerNo journal entry, no accrual, no reclass, no edit to an invoice or a bill. The forecast is a document assembled from your records; your records stay as your team left them.
- It makes no accuracy claimNot ours and not anybody else's. How close a forecast lands depends on data the bot does not control, and a number put on that before we have seen your records would be invented.
- Hard stops, in any configurationAn opening balance that does not tie to the bank. A ledger that has not been updated. A commitment with no date or no amount. A duplicate obligation in two systems. A week below your floor. A category nobody has defined. None of these are resolved on confidence alone.
- A source is data, never an instructionA note in a spreadsheet cell cannot change what the bot does. “Assume this one pays on time” typed into a comment is a quoted line and a flag, never an instruction. Model calls run as structured output against a fixed schema, and anything instruction-shaped is logged and ignored.
- It fails closedA feed it cannot reach, an export that arrived empty, a schedule it cannot read — the run comes back marked partial with the missing sources listed rather than built around the hole. A failed run never produces a forecast that looks complete.
- Private by construction, with a kill switchYour cash position is among the most sensitive material you hold. Access is scoped and read-only on the bank side, each client's data is separated, retention is yours, nothing is used to train anything, and one flag stops it entirely, instantly, with no deploy.
Works with your tools
This builds the forecast in the format your team already reads, from the systems you already run. We're not selling you a treasury platform, and your ledgers stay the record.
The commitments come from where they already are — the accounting system's receivables and payables, the bank or card feed, the payroll calendar, the loan and lease schedules, the spreadsheet somebody maintains. The forecast is written into a workbook somebody can open and edit.
If your stack isn't in the list below, the only real question is whether we can read your ledgers and your schedules. Almost all of them can, and a scheduled export into a watched folder is a perfectly normal answer.
Naming a system here means we can read or write it. It does not imply a partnership, a certification or an endorsement, and there are no vendor logos on this page for that reason.
Works well for
- Nonprofits — Grant money and program spending arrive on different clocks, and the board asks what the next quarter looks like.
- Manufacturers — Materials are paid before the invoice is collected, and the gap between the two is the whole question.
- Restaurant groups — Daily takings against weekly payroll and supplier terms, across more than one location.
- Hotels — Bookings land weeks ahead of the stay while payroll and supply costs run every week.
- Property management companies — Rent lands on a schedule, owner draws and repairs do not, and each property has its own picture.
How a rollout works
Nothing is paid on day one and no payment is ever made. The first milestone is weeks that have already happened, forecast from your own records, so you can compare each line with what really went in and out.
-
01Discovery
The quote call, then a working session. We go through the forecast as it exists today, which systems the commitments live in, your categories, how your customers actually pay against terms, your floor, your cutoffs and who approves. You get the source map, the category definitions and a written scope.
-
02Dry run
Weeks you have already lived through, forecast from the records as they stood at the time. Nothing is delivered. You compare every line with what happened and read the assumption list — and the assumption list is where the work is, because a line every line on it is a number somebody is choosing rather than reading.
-
03Assisted mode
Live on one forecast. The bot assembles the weeks and the variance, your controller or owner reviews and approves, and the file goes where it always has. Who decides what to pay does not change, and nothing about that is automated.
-
04Optional limited automation
Optional, and narrower than it sounds. The weekly run assembled on your calendar from sources that arrived on time, still unapproved and undelivered, with every hard stop in force and the kill switch. Plenty of teams stop at step 03, and that's a good place to stop.
What we don't claim
- No numbers we haven't earned. No accuracy percentage, no hours-saved claim, no cash-released figure. We have not built your forecast. What a run takes and what it costs come out of the dry run, and they will be your numbers.
- No customer claims on this page. No names, no case studies, no logos.
- A forecast is not advice. It says when money is expected to arrive and leave, on the commitments it can see. It does not tell you whether to take the draw, which supplier to call or what to say to your bank, and nothing on this page is financial advice.
- It cannot see what nobody has written down. Work agreed on a phone call, an order somebody is about to place, a cost nobody has booked. The bot shows the hole and names it rather than filling it, which is the part that makes the rest of the forecast worth reading.
- If your ledgers are behind, the forecast will be too. A forecast assembled from records nobody has kept current inherits every gap in them. Getting the bookkeeping current is a different piece of work, and it comes first.
Questions people ask
- Can AI build our cash flow forecast?
- Yes, from commitments that already exist. An agent can read the open invoices and their terms, the approved bills and their due dates, payroll, debt service, tax and rent, schedule each one into the week its own terms put it in, tie the opening balance to the bank, state the assumption behind anything nobody has committed to, and hold the file for approval. What it will not do is predict your sales or move money.
- Which forecast is this?
- The short-term direct one: thirteen weeks, week by week, built from actual commitments rather than from a projected income statement. It is not a forecast cash flow statement and it is not an annual plan, and those are different pieces of work.
- Where do the numbers come from?
- Your own systems - the receivables and payables ledgers, the bank or card feed, the payroll calendar, the loan and lease schedules - and each row names the commitment behind it. A row with no source does not appear as a number.
- Can it predict what we are going to sell?
- No, and it does not try. Revenue nobody has committed to shows up as a named assumption line with your own rule beside it, so a reader can tell the difference between money somebody owes you and money you hope to earn.
- How accurate is it?
- We will not give you a number for that, because we have not seen your records. The dry run forecasts weeks you have already lived through, you compare each line with what happened, and the result is yours - that is the only honest version of this answer.
- Does it pay anybody or move money?
- No. Bank access is read-only, there is no payment rail attached, and no configuration adds one. It will not tell you which supplier to delay or whether a draw is safe, either; a tight week is reported with the commitments that caused it.
- What about foreign currency?
- The rate is a configured assumption you set, applied consistently and named on every line that uses it. The bot does not forecast exchange rates, and a page that implied it could would be selling you something nobody can deliver.
- Is this the same as chasing invoices or applying payments?
- No, and they are deliberately separate. This says when money is expected and contacts nobody. Chasing an unpaid invoice is one bot, matching a payment that has arrived to the invoice it belongs to is another, and reconciling the bank statement to the books is a third.
- Is there a record of how a forecast was built?
- Yes, per run: every source with its timestamp, every line with its citation, every assumption with the rule behind it, the variance against the prior week, the questions it raised, who approved the file and where it went - plus the token usage and cost for that run.
Quote
Get a quote
Want to get it up and running in your business? Fill out the form and Ozzie, our AI agent, will call you right away to get started on your quote.
He'll ask which systems hold your receivables and payables, how your customers actually pay and who reads the forecast. Your brief goes straight to our team.
Or call the office: 813-686-7201