
AI Agents for Construction Work in Progress Schedules
The WIP schedule is the most important report in a construction business and usually the least automated. It is rebuilt every month, by hand, under time pressure.
- Percentage of completion accounting is only as good as the cost to complete estimate, which is a judgment made by project managers.
- Over and under billing positions move with every change order, and change orders are frequently performed before they are approved.
- The schedule is usually rebuilt manually each month, which is why it lands late and rarely gets reviewed properly.
- Fade and gain analysis is where the real signal is, and most teams never have time to produce it.
- ChatFin assembles the schedule from job cost and billing data, tests the estimates against actual burn, and drafts the adjustment.
In a construction business the WIP schedule is the financial statement. It determines revenue, it determines margin, and it exposes which jobs are in trouble before anyone admits it.
It is also assembled from inputs that live outside accounting: cost to complete estimates from project managers, change orders in various stages of approval, and committed costs that have not yet been invoiced.
This page covers what makes the schedule fragile, why estimate testing matters more than arithmetic, and how a governed agent can produce it early enough for the conversation it is meant to start.

The estimate is the accounting
Revenue under percentage of completion follows cost incurred against total estimated cost. Change the estimate and you change reported revenue and margin, without a single transaction moving.
That makes the cost to complete estimate the most consequential number in the business, and it is provided by people who are measured on the job going well.
Change orders and the approval gap
Work gets done before paperwork catches up. The cost is incurred and the revenue is not yet contracted, which distorts both the margin and the billing position on that job.
How unapproved change orders are treated is an accounting judgment. What is not a judgment is knowing they exist, and most schedules do not show them clearly.
Tracking them as their own category, with age and status, keeps the exposure visible and gives project teams a reason to close them out.

Cost in one system, judgment in another
Job cost sits in the construction system, billings sit in the ledger, and the cost to complete estimate sits with a project manager. The schedule joins all three by hand each month, which is why it lands late and rarely gets tested.
What the agent needs to see
Ledger detail from the ERP, plus contract and change order documents taken from the source they arrive in, read through the API surface your ERP already exposes rather than the database.
What it should be allowed to do
Prepare an over and under billing adjustment and leave it for the controller to approve. Reading widely and writing narrowly is the line that keeps this safe.
That division matters more than which model sits underneath. An agent that can read contract and change order documents, job cost detail and billing and retention records while posting only through the validated path a person uses gives you the coverage without handing over the ledger, and ChatFin works that way on every ERP it connects to.
What the agent assembles and tests
The agent pulls contract values, approved and pending change orders, cost incurred, committed costs and billings, then builds the schedule and the over and under billing position.
The more useful part is the testing: comparing the burn rate to the estimate, flagging jobs where cost incurred is outpacing the completion assumption, and showing which estimates have not moved in months.
Assemble the inputs
Contract value, change orders by status, cost incurred, open commitments and billings to date per job.
Build the position
Calculate completion, earned revenue and the over or under billing for every job.
Test the estimates
Flag stale estimates, burn rates inconsistent with completion, and jobs trending toward a loss.
Draft the entries
Prepare the adjustment and the schedule with the supporting job detail attached.

Fade and gain analysis, monthly
Tracking how each job's estimated margin has moved since it was bid is the most useful analysis available to a construction finance team, and it is usually the first thing dropped when the schedule runs late.
Producing it automatically changes the monthly review from a reporting exercise into an operations conversation about specific jobs.
The schedule
Completion, earned revenue and the billing position per job, produced early enough to be reviewed.
Margin movement
How estimated margin has changed since bid, by job and by project manager, tracked every month.
Test the estimate, do not replace it
Cost to complete belongs to the people running the job. ChatFin compares burn rate against the completion assumption and flags estimates that have not moved, so the conversation happens with the project manager rather than being resolved in a spreadsheet.
The record kept against the WIP schedule is deliberately plain: the contract and change order documents the agent read, the reasoning it applied, the draft it produced, what the controller changed, and the moment it posted. That is the trail an auditor asks for, and it is assembled while the work happens rather than reconstructed afterwards.
The wider argument for that design sits in what human in the loop really means and how to test a finance agent before you trust it.
A is prepared, reviewed and approved before it posts, and every step is logged from the source document to the entry.n over and under billing adjustment
How ChatFin builds the schedule
Contract values, change orders by status, cost incurred, open commitments and billings are assembled into the schedule and the over and under billing position. The same run produces margin movement since bid, which is the analysis usually dropped when the month runs long.
It connects to the ERP, the job cost system and the project management platform through the interfaces those systems already expose, which keeps the security review short and the setup measured in days rather than quarters.
Assemble job inputs
Contract value, change orders by status, cost incurred, open commitments and billings per job.
Calculate the position
Completion, earned revenue and the over or under billing for every active job.
Test estimates against burn
Stale estimates and jobs trending toward a loss flagged with the cost detail behind them.
Draft entries and fade analysis
Adjustment prepared alongside margin movement since bid by job and manager.
A first run is usually read only against a period you have already closed, so you can compare what the agent found against what your team found before anything is trusted with an over and under billing adjustment.
Nothing here is single purpose. The connection into NetSuite, SAP Business One or Acumatica serves every other agent you switch on later.
Change the cost to complete estimate and you change reported revenue, without a single transaction moving.
ChatFinFrequently Asked Questions
Can an agent produce the cost to complete estimate?
It should not. That estimate belongs to the people running the job. What an agent can do is test it: compare burn against the completion assumption, flag estimates that have not moved, and show jobs trending toward a loss so the conversation happens earlier.
How are unapproved change orders handled?
As their own visible category with age and status. Whether and how they are included in the contract value for accounting purposes is a policy decision for your team and your auditors, and the schedule shows the effect either way.
Does this work alongside a construction specific ERP?
Yes. Job cost detail generally lives in the construction system and the ledger lives in the ERP. The agent reads both through their existing interfaces rather than replacing either.
This page is general information about finance operations and software, not legal, accounting, or tax advice. Confirm treatment for your own entity with your advisors.
Build WIP from job data, and test the estimates behind it.
ChatFin assembles the schedule from contract, change order, cost and billing data, calculates the billing position, and flags the estimates that do not match the burn.
The adjustment is drafted with the job detail attached, and margin movement since bid comes out of the same run.
Book a DemoSee a WIP schedule built from your own job data.
Bring job cost and billing detail for a handful of active jobs. We will show the schedule, the billing position, and the estimates that do not match the burn.