What it actually forecasts
Demand Forecast (`/app/ai/forecast`) projects the next few weeks of booking volume for your shop, using nothing but your own appointment and quote history. It is strictly read-only and advisory: the page's own description is explicit that "it never books or orders anything; it's a planning view." That distinguishes it from Fill My Slow Days, a separate AI tool that drafts an actual win-back campaign for underbooked days — Demand Forecast only tells you what's coming, it doesn't do anything about it.
Under the hood, the weekly job counts and the busy/normal/slow labels are always computed deterministically from your shop's real history — they're math, not AI output. The only part Claude writes is the plain-English outlook paragraph and the staffing/inventory hints underneath it, and even those are grounded only in the numbers already computed. So even in stub mode (no `ANTHROPIC_API_KEY` set), the projected weeks and levels you see are your real numbers — you're only losing the AI-written narrative, not the underlying forecast.
Running a forecast
You control two inputs before running anything: History weeks (how far back to look, 4-26 weeks, defaults to 12) and Weeks ahead (how far to project, 1-8 weeks, defaults to 4). The button itself reflects your current "weeks ahead" setting — it reads "Forecast the next 4 weeks" and updates live as you change that field, so check the button label matches what you intend before you click.
One thing to know: the forecast does not run automatically. Changing either number field only updates local state — it doesn't refetch anything. You have to actually press the button (or press it again) each time you change your window, since the query is set to `enabled: false` until you trigger it. If you tweak "Weeks ahead" from 4 to 6 after already running a forecast, you're still looking at the old 4-week result until you hit the button again.
Once a forecast has run and found enough history to project from, a small line appears under the button: `{historyWeeklyAvg}/week historical average · {lookbackWeeks} weeks of history · live model or stub output`. That's your sanity check on what the projection is actually built from. (If there isn't enough history yet, this line is skipped — see the "Not enough history yet" state below.)
Reading the bars and their colors
Each projected week shows as a horizontal bar labeled "Week of [date]," a job count ("N jobs"), and a colored badge: Busy (emerald/green), Normal (neutral gray), or Slow (sky blue) — a read on that week versus your shop's own historical weekly average, not an absolute threshold. Note the color choice: slow weeks are blue, not red or amber, so don't assume warm colors always mean "pay attention" on this page the way they might elsewhere in the app.
The bar widths are scaled relative to the busiest projected week in the current result set, not to some fixed volume scale — so the single highest week in your forecast will always render as a full-width bar, and the rest are proportional to it. That means bar length tells you relative demand across the weeks you just projected, not your shop's absolute capacity.
If there isn't enough appointment or quote history to project from, the bars section shows "Not enough history yet" with a note that a few weeks of real activity need to be on the books first — that's a distinct state from stub mode, and it will show up even with a live API key if the shop is simply too new.
Outlook and hints
Below the bars, once a forecast with real history has run, two more elements appear. First, an Outlook card with a short written summary. In live mode this is AI-written but grounded only in the projected numbers above it; in stub mode it's a stub summary that says as much, while noting "the numbers are real." Second, a two-column pair of Staffing hints and Film & inventory hints — short bulleted planning notes tied to the same projection. If there's nothing notable for the window you picked, each card just says "No staffing notes for this window" or "No inventory notes for this window" rather than forcing filler text.
Bottom line: use the badge in the top-right corner (Live vs. Stub mode) to know whether the written outlook and hints are AI-generated or templated, but trust the bars, job counts, and busy/normal/slow calls regardless of that badge — those come straight from your booking and quote history either way.
Where to find it
This tool isn't reachable from a labeled sidebar menu path directly — the AI Tools hub itself has no entry in the sidebar rail. Reach it by opening Growth & Marketing from the sidebar (under "Run the shop"), then clicking its AI Assistant tab, which loads the AI Tools hub inline (that tab also has an "Open standalone" link straight to `/app/ai`). Demand Forecast is one of the cards on that hub page, grouped under the "Owner intelligence" section alongside Business Analyst, Today, AI Ops Assistant, and Review Themes. Plain Cmd+K opens a different feature ("AI Help," a KB-grounded Q&A popup) — it won't jump you here, and the Cmd+Shift+K page-search palette doesn't have this tool registered yet either.