Cost vs estimate, by category
Actual cost against the budget it was sold on, split into labour, material, subcontract, equipment and overhead — so the variance has a cause, not just a number.
It reads your accounting, project and payroll systems and answers one question in seconds: is this job making money? Cost against estimate, forecast at completion, and the jobs about to go over.
Self-hosted and read-only · no per-seat pricing · how the prediction works
One intelligence layer across the platforms you already run4 live · 10 coming soon · 41 mapped
An overrun caught in the week it starts is a conversation. The same number in a month-end pack is a post-mortem.
Not a chatbot bolted onto a spreadsheet. One layer on top of the systems you already run — and three specific things it commits to doing.
One layer that reads every system you already run, understands what the data means, and answers whether a job is making money — in seconds, while the job is still running, instead of being rebuilt by hand after close.
Not a copy somebody re-keys, and not a nightly extract that is stale before it lands. The layer sits on the accounting, project and field systems that already hold the truth — read-only.
Cost codes, change orders, retentions, payroll burden, over- and under-billing — mapped across systems that each name the same thing differently, including the decade of inconsistencies every installation carries. That mapping is the AI layer's real work.
An overrun caught in the week it starts is a conversation with a project manager. The same number in a month-end pack is a post-mortem. That difference is the whole product.
It reads, shows the working, and stops there — the connector is read-only by design and the query
layer refuses anything that is not a SELECT.
Twelve views across one intelligence layer, grouped the way a contractor asks the question: is this job going wrong, what is it doing to my cash, and can I trust the numbers I am looking at.
The four views that tell you a job is going wrong while there is still time to do something about it.
Actual cost against the budget it was sold on, split into labour, material, subcontract, equipment and overhead — so the variance has a cause, not just a number.
EAC, variance at completion and months-to-budget-exhaustion from each job's own burn rate, refreshed as transactions post rather than at month-end.
Jobs ranked by exposure and by how far cost is ahead of schedule, with the driver named — the five you would ring this week, not the fifty in the ledger.
Subcontracts awarded but not yet costed, and change-order work performed without an approval — the two ways a job's cost is worse than its ledger says.
What is owed, what is unbilled, and what the hours are really costing — the four views a controller opens every morning.
Projected overruns, work done but not billed, receivables past 60 days and the overtime premium — summed, broken down, and never guessed at when a table is missing.
Over- and under-billing per job, retention held, and how much of the portfolio you are financing rather than the owner.
Aged receivables and payables by customer, vendor and job, with collection risk and the invoices most likely to pass 90 days.
Hours and loaded cost by job, month, employee and pay type — because on most jobs the overrun starts as hours, not as invoices.
The views that keep the other nine honest: what is misfiled, what is missing, and how to get it out.
Duplicate invoice numbers, unnumbered bills, round-number bunching, cost on closed jobs, unallocated cost and pay-rate outliers — each with the money it implicates and the rows to check.
Unallocated cost, closed-job postings and missing fields in the source data — found before they distort every number above.
Headcount and hours per job against the plan, with non-productive time and double-time hotspots surfaced before they are another month of payroll.
Any table as CSV or Excel across every company at once, and every module as a JSON endpoint — so Power BI, Excel or a script reads the same numbers the dashboard does.
Every table behind these views is a JSON endpoint, and any table can be exported as CSV or Excel — filtered, or in full across every company at once. Power BI, Excel and your own scripts read the same numbers the dashboard does, which is also how an accountant checks them.
What beta customers are getting next, in the order the cohort asked for it. These are not shipping today — they are the work in front of us, published so you can see whether the thing you need is on it before you commit.
Crew-level hours and cost projected to completion from the burn rate you are actually running, not the one in the estimate — by job, phase and trade, with the overtime premium separated out.
Projected receipts and outlays by week, built from AR aging, the billing schedule and committed costs — so a retention release or a slow payer shows up before it is a problem.
What a pending change order does to margin and to the completion date, priced before it is signed rather than discovered in the next WIP.
Exposure by subcontractor across every job — payment history, backcharges, schedule slip and how much unbilled work sits behind them.
The WIP package generated from the same figures the dashboard already reads and reconciled against last month, instead of rebuilt by hand every close.
Daily labor and installed quantities from the field feeding the same forecast, so percent complete stops being a number somebody estimates once a month.
Beta customers set this order. The module your cohort asks for most is the one built next — the same rule the connector list runs on.
Ask it the way you would ask your controller. Each of these is a live view in the dashboard rather than a report someone assembles — and each names the module it lives in, so you can check the claim against the product.
You ask“Which jobs are over budget, and on what?”
Three jobs are forecast over budget. The worst is 26-104 Riverside: labor is +$212K (14%) against estimate, and the finishes crew is most of it.
Ask nextWhy is Riverside labor over?
The gap between what a job was estimated to cost and what it has cost so far, split by cost category.
CostOpens Costs & estimates
You ask“Are we over-billed anywhere this month?”
Three jobs are billed ahead of cost, $418K in total. Most of it is one job billed to a schedule of values that is running ahead of the work.
Ask nextWhich jobs are under-billed?
How much you have billed against how much cost you have put in place, job by job — the number that decides whether revenue this month is real.
CashOpens Predictions → WIP aging
You ask“Where does this job finish if nothing changes?”
At the current rate it finishes at $4.19M against a $3.52M budget. CPI is 0.84, so it is paying $1.19 for every $1.00 of work earned.
Ask nextWhat if labor improves 10%?
Earned-value cost and schedule performance, plus EAC, VAC and TCPI per job, with burn-rate projections for months-to-budget-exhaustion.
CostOpens Predictions → EVM
You ask“What does a foreman actually cost us an hour?”
$48.20 of pay is $71.90 once it is loaded — 49% on top. That is the rate your estimates should be carrying, not the pay rate.
Ask nextWhich crews run the hottest rate?
The difference between a worker's pay rate and what they actually cost the company, including fringe and burden, by job and by employee.
LaborOpens Labor & payroll
You ask“Who is burning overtime, and on which job?”
Crew 4 on 26-112 is at 31% overtime and $38K of premium this month. No other crew on any job is above 12%.
Ask nextWhat does that do to the loaded rate?
Which jobs are running on overtime, where double-time hotspots are forming, and what that is doing to the loaded rate.
LaborOpens Manpower
You ask“Who owes us money past 60 days?”
$2.26M is past 60 days across 9 customers. The largest single balance is one GC at $610K, all of it on one job.
Ask nextWhich invoices go past 90 next?
Open receivables by bucket, by customer and by job, with the retention you are owed and the invoices most likely to go past 90 days.
CashOpens AR / AP
You ask“Did we pay any invoice twice?”
Two payments look like duplicates, $14,860 together: same vendor, same amount, and invoice numbers one character apart.
Ask nextAny other payments worth checking?
What you owe, how old it is, and which vendor payments look unusual — duplicate invoice numbers, round-number clustering and Benford's Law deviation.
ControlsOpens Financial audit
You ask“What have we committed that has not hit cost yet?”
$1.3M is awarded but not yet costed, across 9 subcontracts. It is real exposure that will not appear in job cost until the first invoice.
Ask nextWho is billing ahead of progress?
Subcontracts awarded but not yet costed, so the commitment is visible before it lands in job cost.
CostOpens Costs & estimates → Subcontracts
You ask“What work is going in without a signed change order?”
Six change orders are pending, and $287K of that work is already in place — the cost is in the job while the revenue is not.
Ask nextWhich one has waited longest?
Change orders with work performed but no approval, and the cost already sitting in the job.
CostOpens Executive → Change orders
You ask“What did our companies bill each other this quarter?”
$942K of intercompany billing this quarter, with 2 mismatches where one company posted and the other has not.
Ask nextShow the unmatched entries
When one of your companies bills another, and how that looks across every company database on the server — with your own vendor record kept out of vendor rankings.
CashOpens Multi-company
You ask“How much signed work is still ahead of us?”
$31.4M of contracted work is still to perform — about 14 months at the rate you are currently burning it.
Ask nextHow much of it is at risk?
Contracted work not yet performed, and where this period's revenue is coming from.
CashOpens Executive → Backlog
You ask“Is anything posted to closed or unallocated jobs?”
37 cost lines worth $52K are sitting on 3 closed jobs, and they are quietly distorting every margin above them.
Ask nextWho posted them?
Unallocated cost, costs on closed jobs, and missing fields in the source data — found before they distort every other view.
ControlsOpens Data health auditor
Example answers use illustrative figures. In the dashboard every one is read live from your own databases, with the rows behind it one click away.
Onboarding is hands-on, so it happens a few contractors at a time: we connect the systems you already run, reconcile the numbers against a report you already trust, and you keep using the dashboard while we build what is missing.
No lock-in: cancel at the end of any term and keep the installer. Details in pricing.
One layer across the ERP, project, scheduling, payroll and field systems a contractor already runs. Forty-one are mapped, the majors are being built now, and the one contractors ask for most is next.
Loading the inventory…
Run something that is not on the list? Tell us which one when you join the beta.
See the forecasts in the demo →
Not ready to connect anything? Start with the free cost tools →
Comparing options? Read the construction AI tools buyer's guide →
Every contractor already has a version of this: a workbook, a monthly export, someone who is good at pivot tables. The honest comparison is not "we have charts" — it is how long the answer takes, and how much of it depends on one person remembering to run it.
| Monthly export + Excel | Generic BI tool | Constructelligence | |
|---|---|---|---|
| Time to a live number | A day or two after close, if nobody is busy | A project: model, warehouse, refresh schedule | The tab loads — it reads the database directly |
| Knows your ERP's schema | Only what the person who built it knew | No — you model it yourself | Yes — job cost, payroll, AR/AP, contracts, retentions |
| Cost overruns caught before month-end | Rarely — the export is monthly by definition | Possible, if someone builds the alert | Yes — forecast at completion and risk metrics per job |
| Where the data lives | Workbook copies on laptops and in email | Usually the vendor's cloud warehouse | Your own server. There is no Constructelligence cloud |
| Cost model | Free, plus the hours nobody counts | Per seat, per month, forever | One licence per deployment, unlimited users |
| When the author leaves | The workbook stops being trusted | The model keeps running — if the licence does | It is an install you own, with the source in your hands |
| Writes to your accounting system | Not applicable | Usually read-only | Never — the connector is read-only by design |
The middle column is not a straw man: a good BI team can model all of this, and if you already have one, that team is the best customer for the JSON API rather than for the dashboard. Constructelligence exists for the contractor who has neither a BI team nor a spare analyst.
The expensive part of an overrun is not the money — it is how late you find out. These are the three things the dashboard calls early, how each call is made, and what to do with it.
Every open job is forecast to completion two ways: budget ÷ cost performance (what the work is costing you per unit of progress) and actual cost plus the recent burn rate carried to the completion date. When the two disagree, the job is flagged.
Fires when forecast at completion exceeds budget · Gives you the dollar exposure, the month it happens, and the cost category driving it.
Progress is read against the plan's own dates — activities past their finish date that are not complete, and jobs where cost has run ahead of the schedule. A slip is priced, not just highlighted, because extra weeks mean extra supervision, equipment and overhead.
Fires when activity dates pass unfinished or cost outruns time · Gives you the activities most exposed and their dollar weight.
Work done but not billed, receivables past sixty days, overtime premium and unapproved change orders are summed and ranked — the four ways a contractor loses money without anyone deciding to spend it.
Fires when exposure appears in any of the four · Gives you the total, the cause, and the jobs and invoices behind it.
Drag the week, or press play. Everything below is worked out from the cost posted by that week — nothing is hindsight.
The same job seven weeks after the flag above, in the week a month-end pack would first have shown it: two flags, one about cost, one about time, each with the arithmetic that produced it.
Caught in week 5, that is a conversation — resequence the trades, chase the change order, put the crew somewhere else. The month-end pack shows it in week 12, by which point another $959,000 has gone out of the door.
There is no invented hit-rate on this page. A prediction here is arithmetic on your own numbers, not a black box: the forecast at completion is your cost performance carried forward, the schedule flag is your own activity dates, and every figure arrives with the working attached, so you can check it against the job rather than trust it.
What that means in practice: it is right when the remaining work behaves like the work so far, and it is wrong — visibly, and early — when it does not. A flag that turns out to be nothing costs you a five-minute look; a flag you never saw costs the margin. Beta participants get the honest accuracy report as we build it: every flag we raised, tracked to how the job actually finished, with the misses included.
Move the sliders. Everything below is calculated in your browser from your own inputs — nothing is sent anywhere until you apply for a beta place.
How this is calculated, honestly: hours returned assumes 70% of assembler time is mechanical work a live dashboard removes — not 100%, because someone still reads it and argues with it. The average contract value is your annual revenue divided by your active jobs. Payback compares the annual saving with the $4,800/yr planned GA price of the Multi-company licence, so a beta customer on the founding rate pays it back faster still.
One annual licence per deployment: every module, every company database, every user. While the product is in its testing phase, every licence is half price. The struck-through figure is what the same licence lists at once the beta closes — so you are not guessing at what this costs later.
$2,400 while the product is in testing. That is the planned GA price — beta customers
keep this rate for 24 months from signature.
$4,800 while the product is in testing. That is the planned GA price — beta customers
keep this rate for 24 months from signature.
from $9,000 while the product is in testing. For groups, franchised GCs, and anyone
whose blocker is a connector we have not built yet.
What the testing-phase discount is, exactly: 50% off the planned GA list price, held for 24 months from signature, on a self-hosted deployment — you supply the SQL Server (or Azure SQL instance) and the machine it runs on, which a modest VM covers. The beta can be cancelled at the end of any term. GA pricing is our current plan rather than a promise about a number we control in perpetuity: it is what we intend to list at, published here so a beta customer can see the difference now instead of discovering it at renewal. The final figure is always set with you, after we have seen your server, your companies, and which connectors are in scope.
There is no SaaS account to create and no per-seat provisioning. One connection string, one API key, and a first session where we reconcile the numbers with you.
Add a read-only connection string to appsettings.json. Constructelligence discovers every company database on that server — no per-company configuration.
On the setup call we open a report you already trust — job cost, WIP, AR aging — and check the dashboard against it, line by line, before anyone relies on it.
Issue API keys per person or per tool. Every module populates from live data, with no nightly sync, no stale export and no per-seat billing.
Short answers, including the ones that end with "no".
Where it already lives. Constructelligence runs on your own machine or VM and reads your ERP and project data over the connection you configure — there is no Constructelligence cloud, no nightly copy of your financials, and no third party in the path. The browser page is served by that same local process.
It is built to sit on whichever ERP you run. Live today: a direct, read-only connection to Sage 300 CRE, a QuickBooks Desktop mirror, public bid feeds, and a JSON endpoint for every module — so Power BI, Excel or a script of your own reads the same numbers with no connector build at all.
Coming soon: Procore, Autodesk Build and Takeoff, SAP S/4HANA, Rhumbix, Viewpoint Vista and Spectrum, Sage Intacct, NetSuite, Primavera P6 and Microsoft Project. The integration list maps 41 systems in total and states what each connection would take; the one contractors ask for most is built next.
No. The connection is read-only, the SQL layer refuses anything that is not a SELECT, and nothing in the dashboard can change your accounting data. If a feature ever needs to write, it will be a separate, explicitly-enabled connector rather than a surprise.
The API binds to loopback only and rejects any request that does not come from the machine
itself, so it is not reachable over the network by default. Every data API call needs a key
(X-Api-Key), keys are compared as constant-time hashes, requests are rate limited
per key, and responses carry no-store caching plus clickjacking and MIME-sniffing protection.
There is no login page to phish because the app is not exposed to the internet; when it is
deliberately fronted by a reverse proxy, that proxy owns authentication.
A 90-minute session where we install it on your server and connect one company database. We reconcile the dashboard's numbers against a report you already trust, on the call. Then you use it, and we talk monthly about what is missing or wrong. You can cancel at the end of any term and keep the installer.
A machine that can reach your SQL Server — Windows or Linux, a VM is fine — plus a read-only login to your ERP database. The published build is a self-contained executable, so there is no runtime to install. Most deployments are reading live data the same day.
It is off unless you turn it on, and it is the only feature that can send anything off your machine. OCR and field extraction run locally in the browser; if you configure an external model for the hard documents, that call is the one place your document text leaves your network, and the page tells you when it is about to happen.
The app keeps working until the licence term ends, and your data was never ours to hold. There is nothing to export from a Constructelligence account because there is no Constructelligence account — the dashboard reads your database, and the only files it owns are its own settings, its log, and the leads you send us.
Self-hosted, read-only, priced per deployment. The beta is 20 minutes of setup and a licence you can cancel at term.