A five-column project pipeline — Kickoff, Materials, Build, Wrap-Up, Complete — where each move is triggered by evidence: starting the project, a materials invoice being paid in full, the first build checkpoint being completed, the final build stage finishing, and the final invoice being paid.
Also called: project pipeline · kickoff materials build wrapup complete · PM board · project stages on a board
Five columns, each reached by doing the work — not by dragging a card
Kickoff, Materials, Build, Wrap-Up, Complete. Starting the project puts the card on the board; the materials invoice paid in full moves it to Materials; the first build checkpoint completed moves it to Build; the last build stage finishing moves it to Wrap-Up; the final invoice paid moves it to Complete. Nobody has to remember anything, which is why the board is still right on Friday. Every move writes a line you can read afterwards — “Material payment collected — invoice paid in full”.
A paid invoice moves the job, not a status somebody sets
The materials invoice paid in full is what puts a card in Materials; the final scheduled invoice paid in full is what marks the build Complete. The money and the board are reading the same record, so “are we still waiting on the deposit” is not a question for the office.
A card can never slide backwards
The mover is idempotent and one-directional: a repeated event does nothing, and no event can pull a card back to a column it has already left. A project stage always outranks a sales stage, so a late sales action cannot drag a live build back onto the sales board. Manual drags stay available as an override and are logged loudly.
Order sent, delivered, deposit paid — badges on the card, not new columns
The finer facts ride on the card as timestamped badges instead of turning into columns, so the board stays five wide and still tells you which jobs are waiting on material. Each badge records when the thing first happened, and a mis-click can be taken back.
Ticking “Order Placed” is what records the order, however you ordered it
You phone the supplier, you tick the Order Placed checkpoint you were going to tick anyway, and the card stamps the order as sent. There is no second screen to remember. And “delivered” is measured against that stage's real checkpoint list, so one box ticked cannot mark a whole delivery finished.
- 1Start Project mints or advances the bonded card to pm_kickoff
- 2Material-stage invoice paid in full → pm_materials; final scheduled invoice paid → pm_complete
- 3First build-stage checkpoint completed → pm_build; final build stage fully checked → pm_wrapup
- 4advanceProjectPipeline is the single choke point: idempotent and MONOTONIC — a card never moves backward, and any PM stage outranks any sales stage
- 5Manual drags remain possible as an admin override and log loudly
- 6Every move writes a lifecycle row with human-readable evidence ('Material payment collected — invoice paid in full')
The project board was permanently empty. It listed jobs that had reached a project stage, and nothing in the system ever moved a job into one, so builders opened a board that had never held a single card. Cards appear off real events now — a contract signed, a stage finished, a build wrapped. Smaller acts such as an order going out stamp a badge on the existing card rather than adding another column, because a board fifteen columns wide is a board nobody reads across, and a card is only ever created against a real job instead of minting a second copy of a customer.
- A project board that only reflects reality if someone maintains it
- No way to see which builds are blocked on money or materials
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 →