Materials and budget on the project

Every purchase order linked to a project, totalled as ordered / paid / open, with material spend per build phase against a budget you set.

What it is

A tab inside the project card. Four aggregate figures — ordered, paid, open and order count — then a budget-versus-actual row per phase with a bar that turns amber near the limit and red over it, then the list of orders with status, supplier, placed date and open balance. New orders can be raised here with the project already attached.

Also called: job material cost · budget vs actual · material spend by phase · am I over budget on materials

See it
Materials and budget on the project
CustomerBuildingAmountStatus
Ivy Brubaker40×64 Shop$6,520Draft
Sutter Kline40×64 Shop$9,370Paid
Ronan PetschHobby Shop$8,800Draft
Marlin HooverHobby Shop$1,960Paid
Sutter KlineRiding Arena$8,990Sent
The Materials & Orders tab: four stat tiles, a 'Budget vs Actuals by Phase' list with coloured bars and '+$2,140 over' labels, then the order list. ProjectMaterialsTab.tsx. Sample data — no customer information appears here.
How it works
  1. 1Orders are loaded by project, with their items and payments
  2. 2Actuals are summed from line totals grouped by project_phase, cancelled and returned orders excluded
  3. 3Phases come from the project's own gantt tasks, so custom and building-type-preset stages show their real name and colour
  4. 4Any phase appearing only in line items still gets a row, so nothing is hidden
  5. 5Per-phase budgets are stored per project in browser storage
  6. 6The same tab renders read-only on sales-pipeline cards
Why we built it

Material spend is the largest variable cost on a post-frame job and it arrives as a stream of purchase orders across weeks. Grouping actuals by build phase — rather than by supplier — matches how a builder budgets, and the phase list is taken from the project's own schedule so a custom stage is not silently dropped.

The problem
  • Material spend is only visible one purchase order at a time
  • Budget lives in a spreadsheet that never meets the actuals
  • Custom phases dropped by a hard-coded phase list
Sound familiar?
What you get
Spend against budget per phase, live
Open balance per job at a glance
New orders raised in context

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →