Skip to content

Cost Forecast

Project cost forward in time, grouped by team, project, cost centre, geography or value stream — with inline budget variance on every cell when an active snapshot is selected.

The cost forecast is the foundation of the finance pillar. Everything else — capitalisation, R&D claims, variance — sits on top of it. It takes your live workforce roster (employees, contractors, vacancies, AI agents), the allocations between people and teams and projects, the salaries and contractor rates, and projects them forward as a cell-by-cell grid you can read, group, drill into, and edit.

What the forecast view is

Lands at /plan/[planId]/cost-forecast/forecasting. Two layers:

  1. Toolbar — group-by, time period, date range, refresh, budget comparison.
  2. Table — the cells. Rows are entities (teams, projects, cost centres, etc), columns are time periods (weeks, months, quarters), values are cost or FTE.

Group by

DimensionWhat rows are
TeamHierarchical team tree. Expand a team to see employees, contractors, vacancies, AI agents inside it
ProjectProject list. Expand to see resources allocated to the project
Cost centreGrouped by financial cost centre — drives CapEx vs OpEx
GeographyGrouped by employee/contractor geography
Value streamGrouped by strategic value stream — see value streams

Group by is sticky per user via useViewPreferences.

Time period and date range

PeriodResolution
WeeklyOne column per week. Useful for fine-grain reassignment
MonthlyOne column per month. The default
QuarterlyOne column per fiscal quarter. Useful for board readouts
YearlyOne column per fiscal year. Useful for the annual plan

Date range defaults to a sensible window around today. Adjust via the date range control in the toolbar.

Budget comparison

When a budget snapshot is selected, every cell renders an inline BudgetVarianceBadge showing the delta from snapshot to forecast. Green if you are under, red if you are over.

Selection rules:

  • The forecasting view auto-selects the ACTIVE snapshot whose fiscal year overlaps the displayed date range.
  • A ?budgetId= query string in the URL overrides auto-selection — useful for deep links from the budgets list.
  • Budget comparison is only available on the main plan, not on scenario plans. Scenarios have their own variance affordances.

The drift query (forecastBudgetVariance) groups by team or project to match the table's group-by. Period keys are normalised — lowercase, underscores — so they match the period column keys in the table.

Editing in place

Click into a cell to edit:

  • Team rows — opens the TeamProjectAllocationModal for the team in that period. Adjust which projects the team is on and at what FTE.
  • Project rows — read-only at the project level. Expand the project to edit individual resources.
  • Cost centre rows — read-only. Edit the underlying projects or resources.

Edits apply optimistically — the cell shows the pending value immediately, while the mutation flies in the background. If the mutation fails, the cell reverts.

Refresh

The toolbar has an explicit refresh action because the forecast aggregates a lot of data and is heavily cached. Click it to drop the cached values, re-query, and re-render with fresh numbers.

Use it after a bulk import, an exchange rate update, or any time you suspect the cells are stale.

Permissions

  • Cost figures: FINANCIALS_VIEW_SUMMARY. Without it, FTE columns render but cost columns hide.
  • Inline edit: ROADMAP_PROJECTS_UPDATE for allocation changes; the modal hides save buttons when the viewer lacks the capability.

What is not on the forecast view

Flowstate Documentation