The project closed last month. Everyone celebrated. The client was happy, the team delivered, the invoice went out on time.
Then accounting closes the books and you find out the margin was 8%. You quoted 32%.
Nobody did anything wrong, exactly. The PM logged extra hours because the scope grew a little. A subcontractor invoice came in 20% higher than the estimate. Someone approved a travel expense that wasn't in the original budget. Each decision made sense in isolation. Added together, they ate three quarters of the margin.
And you found out six weeks after the last decision was made.
If you run a project-based business, you probably have a CRM where deals live. A project management tool where tasks and hours live. An accounting system where invoices and expenses live. Maybe a separate spreadsheet where someone on the finance team consolidates everything once a month.
Each of those tools works. The problem isn't the tools. The problem is that nowhere in your stack can someone open a single screen and answer the question: "How much money have we actually spent on this project so far, and how does that compare to what we sold?"
The answer exists. It's just scattered across four systems and three people's heads. To assemble it, someone has to pull data from each source, reconcile it, and build a report. By the time that report exists, the data is two to four weeks old. By the time you read it, the project is either over or too far along to course-correct.
One project losing margin is annoying. The real damage is structural.
You priced the next proposal using the assumptions from the project you just delivered. The assumptions that said this kind of work takes 320 hours. Except it actually took 410, and nobody updated the model because the variance only showed up after the deal was signed.
So you sell the next one at the same price. And the one after that. Three projects in, you've built a backlog of work that looks profitable on paper and isn't. Your sales team is happy. Your operations team is exhausted. And the gap between what your P&L says and what your bank account shows keeps widening.
This is the part that nobody talks about: the cost of finding out late isn't measured in the project where you found out. It's measured in every quote you sent between the moment the margin started bleeding and the moment someone finally noticed.
The instinct, when this happens, is to ask the finance team for a weekly report. Or a project margin dashboard. Or to hire someone whose job is to track this.
None of that fixes the underlying problem, which is that the data lives in disconnected systems. A weekly report is still a report — assembled manually, with the same lag, just more often. A dashboard built on top of fragmented data is a dashboard that shows you yesterday's version of a partial truth.
What actually fixes this is structural: the place where the deal was sold and the place where costs accumulate have to be the same place, or they have to be connected by a shared ID so that every expense, every hour, every invoice automatically rolls up to the deal it belongs to. The moment a subcontractor invoice is recorded in your accounting system, it should appear against the project in your CRM. Not through a manual export. Through an integration that does it the moment it happens.
When that's in place, the question "what's the margin on this project right now" stops being a research project. It becomes a number you can see by opening the deal record.
The goal isn't a fancier dashboard. The goal is that anyone who needs to know the margin on a project can find out in ten seconds, with data that's current as of this morning.
That requires three things working together. First, every project has a single record where its sale price, its costs, its hours, and its status all live. Second, your accounting system and your operational system share an ID so that invoices and expenses tag automatically. Third, the math is done by the system — costs roll up, margin calculates itself, variance against the original quote shows up without anyone running a query.
When this is set up correctly, the conversation inside your company changes. Operations doesn't have to flag margin problems through email — the system shows them. The salesperson can see the health of the projects they sold without asking the PM. Finance stops being the bottleneck for visibility and becomes the source of truth that the system reads from.
And the next time someone is about to approve a scope change or sign off on an unbudgeted expense, they can see, in the moment, what it does to the margin. Not six weeks later.
Before you go ask someone to build you a dashboard or buy another tool, three steps are worth doing.
Pull the last ten projects you closed. For each one, compare the margin you quoted to the margin you actually delivered. The gap, and how consistent it is across projects, will tell you whether this is a one-off problem or a structural one.
Then map where the data lives. Where is the sale price recorded. Where are the hours logged. Where are subcontractor invoices stored. Where are travel and miscellaneous expenses captured. Count how many systems are involved and who has to talk to whom to assemble a margin number. If the answer is more than two systems and more than one person, that's the bottleneck.
Finally, ask the question that matters: if a project's margin is dropping right now, who would know, how would they know, and when. If the answer is "the finance team, by running a report, at the end of the month," you don't have a visibility problem. You have an architecture problem.
This is the part that surprises most operators when they start digging into it. The reason you find out late isn't that your finance team is slow. It's that the system was never designed to surface this information in real time. It was designed to record transactions, and reporting was bolted on afterward.
Fixing it means redesigning how deals, projects, and costs relate to each other inside your operational stack — so that the margin question answers itself instead of requiring a research project every time someone asks.
We do this specifically for companies that sell projects: connecting the CRM where deals close to the systems where costs accumulate, so that project margin is a number anyone on your team can see by opening a record. If you want to see exactly what that looks like before any conversation, the model is here.