What this crew is owed for this job

A panel inside the project that shows the pool, the day rates earned, the equipment, the surplus and then every person's line — and refuses to guess when it cannot work it out.

What it is

ProjectPayoutPanel runs the real payout against the hours the crew actually clocked on their field links, showing its working before the per-person table. It self-hides on any job whose crew is not on the pooled model.

Also called: crew payout screen · what do I pay them · job payout · settle up with the crew

See it, piece by piece
01

The settle-up happens in front of the arithmetic

Pool, day rates earned, fuel and equipment, surplus shared — then a line for every man: tier, hours, days, day rates, surplus, owed, and a Total to the crew at the foot. A payout screen that prints one number per person is asking to be argued with. One that shows how it reached that number settles the argument before it starts.

Crew payout
Crew payout
Crew A · figured for 12 days · 361h logged over 11 days
Refresh
Pool
$21,840
Day rates earned
$15,833
Fuel & equipment
$3,300
Surplus shared
$2,708
WhoTierHoursDaysDay ratesSurplusOwed
Levi YutzyTier 19611$5,500.00$720.00$6,220.00
Dwayne MillerTier 29210.5$4,200.00$690.00$4,890.00
Curt HershbergerTier 38810$3,500.00$660.00$4,160.00
Andre OcampoTier 4859.75$2,632.50$637.50$3,270.00
Total to the crew$18,540.00

Hours come from what the crew logged on their field links. Day rates are earned per day worked; the surplus is split by share of hours, so being there is what moves it.

Four headline figures, then every man's line and what the job pays the crew. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
02

The hours are the ones they clocked, not the ones somebody re-keyed

Every entry the crew logged on their field links for this job is collapsed to one row per person per day and priced. Nothing is typed into this screen. The Friday spreadsheet, the phone call to the crew leader and the transcription mistake in the middle of it all disappear at the same time.

Crew field link
Marlin Zook
Crew B
On the clock · 3h 12m
Wenger 40×60 Shop
Framing
Clock Out
Add Photo
Blocked
Framing
Posts set and braced
Trusses set
Purlins and girts on
Roof steel on
WainscotNot needed on this job
This week
32h
24h approved · 8h waiting
Mon · Wenger 40×60 Shop8h
Tue · Wenger 40×60 Shop8h
Wed · Wenger 40×60 Shop8h
Thu · Wenger 40×60 Shop8h · waiting
The week on the worker's own screen — these entries are what the payout prices. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
03

It refuses to answer rather than invent a total

No crew assigned, no tiers set up yet, a crew paid by the hour, nobody on the crew: each comes back as a stated reason instead of a number. And with no hours logged there is no surplus at all — an untouched pool is money you have set aside, never money somebody is owed. This is what people get paid from, so a plausible-looking invented figure is the worst thing it could produce.

04

A man off sick does not shrink what the others share

The pool is priced from the crew as established — every active member's tier plus the equipment allowance — not from whoever happened to turn up. Attendance moves what each person earns and shares; it does not quietly re-price the job underneath them mid-build.

05

One calculation behind every screen that mentions this job's pay

The project panel, the person's own record in Team, and the company-wide labour rollup all run the same function. Two implementations of “what did this job pay” is two answers, and the one on the employee's own record is the one they would argue with you about.

06

Rounding never invents or loses a cent

Shares are computed to four decimal places, and the drift between the distributed total and the actual surplus is handed to whoever worked the most hours, so the per-person lines always sum exactly to the surplus. A payout sheet whose parts do not add up to the total is a payout sheet nobody trusts twice.

How it works
  1. 1GET /api/projects/payout?projectId=... behind requireRole(admin, PM, crew_lead).
  2. 2computeProjectPayout resolves the crew, its model, the tier ladder, the roster and every time entry for the job.
  3. 3Hours are accepted under either the crew row id or the user id, because the portal may have written either.
  4. 4The pool is priced from the crew AS ESTABLISHED, so a man off sick does not shrink what the others share.
  5. 5Header shows Pool / Day rates earned / Fuel & equipment / Surplus shared; the table shows Who, Tier, Hours, Days, Day rates, Surplus and Owed with a 'Total to the crew' foot.
  6. 6Non-applicable cases come back with a stated reason rather than a number.
Why we built it

Handing a crew one number per man is asking to be argued with, and the argument happens in a yard with nothing there to settle it. The payout screen shows how it got there — the pool, each man's tier and base pay, hours worked, the surplus and every share — so the arithmetic is visible before anyone questions it. When something it needs is missing, such as an untiered man or a job with no figured days, it refuses and names what is missing, because a plausible invented total on the screen people are paid from is the worst thing it could produce. The same arithmetic drives each person's own record, so a job's payout and an employee's record can never quote different money.

The problem
  • Manual payout arithmetic per job.
  • Payout disputes with no visible working.
  • Two screens quoting different money for the same job.
Sound familiar?
What you get
The settle-up conversation happens in front of the working.
Every screen that mentions this job's pay quotes the same computation.
It says why it cannot answer instead of inventing a total.

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 →