Footing Advisory
← All work
Live demoRevenue and ARRVersionsReporting

Titan: rebuilding a SaaS plan as a hub and two spokes

Titan is a demo SaaS company with three customer segments and about $9.6M of ARR. Its first model lived in one Pigment application and was getting hard to change. I rebuilt it so actuals, plan and reporting each have a clear home, and so a monthly reforecast takes one sitting.

3applications sharing one library
3 × 5versions by cases, through every statement
$12.32MFY27 Budget ending ARR, locked
$0left on every reconciliation check

The problem

One application doing three jobs

The original model held master data, actuals, planning drivers and reports in a single application. Changing a driver meant scrolling past reporting blocks. Access was hard to scope, because everyone needed the whole app. There was no clean way to keep Budget fixed while Forecast moved.

The design

Hub, planning spoke, reporting spoke

The Data Hub owns the shared lists, calendar and loaded actuals, and it is the only place they change. Titan Planning holds the drivers and the ARR engine. Titan Reporting reads plan outputs and actuals and builds the income statement, SaaS KPIs and variance views. Reporting holds no inputs.

  • A version dimension with Actual, Budget and Forecast. Each version carries its own start, switchover and end month, and Budget is locked.
  • Version flags (is actual, is plan) decide, month by month, whether a number comes from actuals or the plan. No formula hard-codes a cutoff date.
  • Five cases (Base, Upside, Downside, Severe Downside, Recovery) carry multipliers on new business, expansion and churn. They flow into the statements, not just the ARR.

The reforecast

A workbench instead of a grid

Planners use a custom page built on Pigment Frames. They change Forecast drivers on the left, the values write straight back to the model, and the ARR bridge on the right redraws against Budget. Budget values show alongside as read-only.

Titan Planning / Frames / Reforecast Workbench
DriverBudgetForecast
Quota attainment
All segments75.0%70.0%
Monthly churn
SMB1.50%1.80%
Mid-Market0.80%0.80%
Enterprise0.40%0.40%
Monthly expansion
SMB0.60%0.60%
Mid-Market1.00%1.00%
Enterprise1.40%1.40%
FY27 ARR bridge, Forecast against Budget, Base case
ForecastBudget
Mockup of the workbench using the model's FY27 Base-case figures. Highlighted cells are Forecast drivers that differ from Budget.
FY27 ARR bridge, BaseBudgetForecastDifference

Lower quota attainment takes $135K out of new business, and higher SMB churn costs another $13K. With a slightly smaller base, expansion and contraction move a little too, and Forecast lands $154K below Budget. The planner sees the main causes without opening a single grid.

Monthly cycle

From reforecast to sign-off in one sequence

A guided two-step sequence takes the planner through the cycle. Step one is the drivers, with Budget and Forecast side by side. Step two reviews the result and has a Freeze button. Freeze copies the agreed Forecast ending ARR into a frozen baseline that only changes at sign-off, so later edits never blur what was approved.

An automated close check runs on the fifth of each month. It confirms the anchor figure still ties, that costs are conserved from department to function to P&L line, and that every control check reads zero.

Decisions that mattered

What I'd do the same way again

Version first, everything else after

The version dimension and its flags went in before any revenue logic, so every metric was built to hold two cycles with different switchovers.

Reporting holds no inputs

If a number can be typed, it lives in the hub or the planning spoke. That keeps the reporting app safe to share widely and simple to secure.

Checks that should read zero

Cost conservation and the ARR bridge each have a control metric. A non-zero value is a defect, which makes reviews quick.

Snapshot the plan you approved

Budget is locked and snapshotted on approval. Variance is always measured against what was signed, not what someone edited later.

Result

Same numbers, easier model

Every P&L line in the new model matches the original line for line, and the FY27 Budget ending ARR ties to the cent at $12,316,557. A reforecast is now a short guided session, and the original plan is protected by a lock and a snapshot.

Titan is a demo company with fictional data, built to show my approach end to end.

Planning a similar build?

I can walk you through Titan live and talk about how it maps to your model.

Get in touch