30-min call with RobBook a proof-of-concept call
Job 04 · Month-end

// Construction · Job-cost reporting

The monthly job-cost and WIP package, drafted from your own exports.

Each month your controller pulls cost to date, open commitments and billings for every job, collects each PM's estimate to complete, and builds the WIP schedule. In a free AI proof of concept, AI assembles that package again for past month-ends from copies of your exports, and your reviewer compares it with the schedule your team actually closed. Percent complete and the forecast stay with your PMs.

Book a proof-of-concept call30 minutes with Rob
Tested on
20 to 30 job-months
Forecasts we set
None
System access
None

// The one job

Exports in. A WIP schedule your PMs can mark up.

At month-end the controller exports job cost by cost code, open POs and subcontracts, billings and approved change orders, then chases each PM for an estimate to complete. The WIP schedule and the questions for the job review meeting come out of that, often from a spreadsheet rebuilt every month.

For the test, AI takes copies of those exports and the forecasts your PMs gave, and drafts the package for each past month: a WIP row per job, the cost-code detail behind it, and a short list of jobs worth discussing, with the reason. Nothing posts and no forecast changes.

Month-end exportsCost, commitments, billings
Job
Cost code
Open PO / sub
Billed to date
Cost typeCost to dateCommitted
Made-up example export
Assembled
for your controller
WIP scheduleDraft
Revised contract
Est. total cost
Earned to date
Over / under
JobPM's est. to completeGross profit
Made-up example schedule

// The hard parts

Where a WIP schedule goes wrong

Committed cost is not cost to date. On a cost-to-cost schedule, open POs and unbilled subcontract balances stay out of percent complete, since nothing has been spent yet. They still belong in the estimate to complete, and a forecast that leaves out an issued PO is short by the whole PO. The draft marks any job where the PM's estimate to complete is lower than what is already committed, and leaves the forecast as it is.

Change orders and loss jobs. Approved change orders raise the contract value. Pending ones don't, so their cost lands with no revenue beside it and the job looks underbilled; many contractors carry pending change orders in a memo column on the WIP for that reason. When a PM's forecast puts total cost above the revised contract, the whole expected loss is recognized that month: ASC 606 replaced most of the old construction-contract guidance but kept that loss provision, in ASC 605-35. The draft marks those jobs; your controller decides the entry.

Material on site but not installed. Gear or fixtures delivered early add cost long before they add progress. Under ASC 606, contractors commonly leave significant uninstalled materials out of the cost-to-cost measure and recognize revenue equal to their cost, at no margin, until the material goes in. If your company does that, it is written into the success criteria, and the draft shows exactly which cost it set aside on each job.

The labels changed, and lenders read the trend. Under ASC 606 the older over- and under-billing captions map to contract liabilities and contract assets, netted job by job on the balance sheet, though many contractors still use the old terms on their own schedules. Sureties and banks read the WIP schedule beside the financial statements and watch for profit fade: a job's estimated gross profit slipping from the bid and from last month. So the draft shows each job's margin beside the prior month's and the original estimate.

The numbers come from more than one system. Cost and commitments come from your accounting system's job-cost reports; Foundation, for example, has separate committed-cost and over/under billing reports. Where PMs forecast in Procore, the budget's Forecast to Complete and Estimated Cost at Completion columns can be sent to the accounting side, and into Trimble Vista that export creates a JC cost projection. Your reviewer, usually the controller, watches the ties: totals that agree with the general ledger, billings that match what was invoiced, and every open job on the schedule.

// What you send

What the test needs from your controller

Two or three month-ends
Exports only
01

Two or three closed month-ends

The WIP schedule your team closed for each, 20 to 30 job rows in all, and review-meeting notes if you keep them.

02

The exports behind them

Job cost by cost code, open POs and subcontracts, billings and the change order log, as spreadsheets. Labor comes as totals by job and cost code, never payroll records.

03

Your PMs' forecasts

The estimate to complete or percent complete each PM gave that month, in whatever form they gave it. We use them exactly as given.

04

Your policies

How you treat pending change orders, uninstalled materials and loss jobs, and how your schedule is laid out. A page from your controller covers it.

05

NDA first, look-alike jobs if needed

Job margins are among a contractor's most sensitive numbers. The NDA comes before any export, and look-alike jobs built with your reviewer are an option.

// Before it starts

Settled before the first export moves

A WIP schedule mixes accounting policy with PM judgment, so the owner draws the line between them first.

Month-end test termsOwner signs off
Your reviewer
Named by the owner, usually the controller or CFO
PM numbers
Percent complete and forecasts come from PMs and are never changed
Success criteria
Agreed in writing, including pending change orders, uninstalled materials and loss jobs
Sample
Two or three closed month-ends, picked by your reviewer
Price
A range for the live job
NDA
Signed before any export is sent

// How it's judged

The drafted schedule beside the one you closed

Job by job
Month by month
On the same past month-endsThe schedule your team closedThe AI draft
Revised contract, with approved change orders onlyFilled in from your month-endsFilled in from your month-ends
Cost to date and committed cost by jobFilled in from your month-endsFilled in from your month-ends
Earned revenue from the PM's own forecast or percent completeFilled in from your month-endsFilled in from your month-ends
Over and under billings, tied to the ledgerFilled in from your month-endsFilled in from your month-ends
Forecasts below committed cost, markedFilled in from your month-endsFilled in from your month-ends
Loss jobs and profit fade, markedFilled in from your month-endsFilled in from your month-ends
Jobs listed for the review meeting, and whyFilled in from your month-endsFilled in from your month-ends
Nothing scored yet. The cells stay empty until your own month-ends have been drafted.Your reviewer marks every row and makes the call.

// After a yes

One live month-end, about 30 days

After your reviewer's yes, the same job runs on your next month-end close, about 30 days.

Your controller approves the package before it goes to a PM, the owner, your surety or your bank. Percent complete and every forecast still come from the PMs, and no entry posts without a person.

It carries a fixed price you see before signing. The next job is priced separately, with monthly support once it runs.

// What could come next

Possible next jobs

Ideas, ranked
One at a time
  1. 01

    Change order log

    Pending and approved change orders tracked job by job, so the WIP schedule and the pay app work from the same list.

    Next
  2. 02

    Surety and bank packages

    The quarterly package your surety or lender asks for, assembled from WIP schedules your controller already approved.

    Then
  3. 03

    Pay applications

    Monthly pay apps drafted from the same contract values and your PM's percent complete, if billing isn't live already.

    After that
  4. 04

    An acquired shop's month-end

    The same schedule for a contractor you buy, mapped from its own cost codes to yours.

    If you acquire one

// One hard limit

It never sets percent complete or a forecast.

Your PMs own percent complete and the estimate to complete on every job. The draft uses the numbers they gave, checks them against cost and commitments, and marks what looks off. It never fills in a missing forecast, changes one, or decides on its own that a job is losing money. Certified payroll and pay records stay out as well.

Month-end reporting is priced as one job: a range before the test, a fixed price before you sign.

The range depends on how many jobs are open at month-end, how many systems the numbers come from, and how your PMs send their forecasts.

// Questions

Questions from controllers

Will it calculate percent complete for us?
No. Your PMs set it, either directly or through their estimate to complete. On a cost-to-cost schedule the arithmetic follows from their forecast; the draft does the arithmetic and never changes the forecast.
Does it follow ASC 606?
It follows the policies your controller and CPA already use, written into the success criteria: how pending change orders, uninstalled materials and loss jobs are treated. It gives no accounting advice and doesn't replace your CPA's review.
Our PMs forecast in Procore. Does that matter?
Not for the test, which runs on exports. Send the Procore budget view with its forecast columns along with your accounting exports, and the draft checks the two against each other.
Can the package go straight to our surety or bank?
Not from the test, which sends nothing. In a live run your controller approves the package first, and only a person sends anything to a surety or lender.
We only build a WIP schedule each quarter. Can we still test?
Yes. Two or three past quarter-ends work the same way, as long as they add up to 20 to 30 job rows. Your reviewer picks which ones.
Rob Eason

Rob Eason, founder

// Book a proof-of-concept call

Bring two past month-ends.

30 minutes with Rob. You'll be asked for your company and role, the job to test, and how many jobs are open in a typical month. Keep job-cost exports back until the NDA is signed.

  • Co-owned a 60-employee financial services firm and sold his share to his partner.
  • Ran GOSO Technologies, a Boston solar company rated 5/5 across 24 Google reviews.
  • 5/5 across 83 reviews in HighLevel's Certified Admin Directory.
  • 4.3/5 from 6 Google reviews of Massmarket AI.
  • Every directory and Google review, critical ones included, is shown word for word at massmarket.ai/reviews.
  • Takes every proof-of-concept call himself.