Blog

How to Track Cost-to-Completion in Real Time Without a Finance Team

Written by Hector Morales | Jan 1, 1970 12:00:00 AM

You sold the project at a 22% margin. The PM closed it last week at 4%. Nobody saw it coming because cost-to-completion was a number someone updated in a spreadsheet once a month, two weeks after the costs actually hit. By the time finance flagged it, three more projects were already trending the same way.

This is the default state of project-based services and technology firms in the US and Canada that grew past the founder-tracks-everything stage but never built the financial plumbing to match. Cost-to-completion lives in one person's head and one analyst's workbook. Leadership reads margin reports that describe history, not reality.

This article is about the specific mechanics of moving cost-to-completion from a Friday spreadsheet ritual to a live property on the deal record — without hiring a project accountant and without buying a PSA tool that nobody will use.

Why Cost-to-Completion Is Structurally Broken in Most Services Firms

The problem isn't discipline. The problem is that the system that holds the project (Asana, Jira, Monday, ClickUp) doesn't share an identifier with the system that holds the money (QuickBooks, NetSuite, Sage Intacct). The CRM holds the contract value. Three sources of truth, zero handshake between them.

To produce one number — current margin on an active project — somebody has to pull data from three systems, reconcile it in Excel, and email it out. That somebody becomes the bottleneck. When they're on vacation, leadership flies blind.

The Mechanism Behind the Lag

Costs hit in pieces. Contractor invoices arrive on net-30 terms. Internal time gets logged weekly, sometimes biweekly. Subcontractor pass-throughs sit in someone's inbox for days before they're entered. AP processes them on its own cadence.

By the time all the pieces land in the accounting system, the project is two-thirds done. Cost-to-completion isn't a report — it's an autopsy.

Why This Hurts Mid-Market Firms Specifically

Founder-led shops survive this because the founder has the context in their head. Enterprise firms survive it because they have a finance team running weekly EAC reviews. The danger zone is in between: 30 to 200 people, six to forty active projects, one controller, no project accountant, and a CRM that was set up like a Rolodex.

That's the profile where margin leaks the most and gets noticed the latest.

The Conventional Fix and Why It Fails

There are two standard plays. The first is to hire a project accountant or controller and ask them to maintain a master EAC tracker. The second is to buy a PSA platform — Mavenlink, Kantata, Certinia — and ask project managers to log time, expenses, and forecasts inside it.

Both fail for the same reason: they put the burden of data entry on people whose job isn't data entry.

The Project Accountant Trap

Hiring solves the math problem and creates a routing problem. The accountant becomes the single point of contact for every margin question. They chase PMs for updates, chase AP for invoice status, chase delivery leads for forecasts. They're a human API between three systems.

When they leave, the institutional knowledge of how the tracker actually works leaves with them. The replacement spends three months rebuilding it.

The PSA Tool Trap

PSA tools assume PMs will diligently log every hour, every expense, and every forecast adjustment. In practice, PMs update them the day before the weekly review and guess. The data inside the tool looks complete but is fiction.

Worse, the PSA becomes a fourth system that doesn't talk to the other three. Finance still rebuilds the picture in Excel because the PSA's reports don't match the GL.

A Better Model: Make Cost-to-Completion a Live Property on the Deal

Stop treating cost-to-completion as a report that finance produces. Treat it as a calculated field that lives on the deal record and updates the moment any cost is recorded anywhere in the business.

That sounds abstract, so here's the concrete version. Every dollar that flows in or out of a project becomes a record — an invoice object, an expense object, a logged-time entry — associated to the deal. The deal carries a roll-up property that sums them in real time. Margin is contract value minus the roll-up, divided by contract value. The number is always current because the records are always current.

Why Records Beat Spreadsheets

A record has an owner, a timestamp, a value, and an association. A spreadsheet cell has none of those. When a contractor invoice is entered as a record associated to the deal, the margin moves. No reconciliation, no Friday call.

The PM doesn't need to update a forecast. The forecast is whatever the math says right now based on what's been recorded.

Why This Doesn't Require a Finance Team

The work is distributed to the people who already touch the costs. AP enters vendor invoices — they were already doing this. Delivery leads approve contractor timesheets — already doing this. PMs note scope expansions as new line items on the deal — this is the only behavior change, and it takes 90 seconds.

Nobody is producing a report. The report produces itself because the records are the source of truth, not a derivative of them.

What This Looks Like Inside the CRM

In a properly built HubSpot implementation for project-based companies, the deal object carries the contract value. A custom invoice object captures every inbound and outbound transaction associated to that deal. A roll-up property on the deal sums the costs. A second calculated property displays live margin.

When the CRM is connected to the ERP by a shared deal ID, the records sync automatically. No double entry. No reconciliation. The salesperson, the PM, and leadership all see the same number from the same place at the same time.

Practical Steps to Get Real-Time Cost-to-Completion Without Adding Headcount

You don't need a new tool. You need to restructure how cost data enters your existing systems and where it surfaces. The order matters.

  • Assign every project a single ID that exists in both your CRM and your ERP. Most firms have a deal name in HubSpot and a different project code in QuickBooks. Pick one identifier. Use it everywhere. This is the handshake that makes everything else possible.
  • Turn every cost into a record, not a line in a sheet. Vendor invoices, contractor payments, subcontractor pass-throughs, internal labor allocations — each one is an object with a value, a date, and an association to a deal. If it's not a record, it's invisible to the roll-up.
  • Build the roll-up property on the deal. Sum all associated cost records. Subtract from contract value. Display margin as a percentage on the deal record itself, visible to PMs and commercial leaders without running a report.
  • Set automated thresholds. When margin drops below the sold margin by more than five points, the deal owner and delivery lead get a notification. Not a weekly digest — an immediate trigger. The point is to surface erosion in week 2, not at close.
  • Make the PM the line-item owner, not finance. When scope changes or a new contractor is added, the PM logs it as a cost record on the deal in the moment. This replaces the weekly forecast update they were doing badly anyway.

Early Warning Signs Your Current Setup Is About to Cost You a Project

If any of the following are true, your cost-to-completion process is producing fiction, not data.

  • Margin on active projects is reviewed monthly or less. By the time you see it, you can't act on it.
  • One person owns the master tracker. When they're out, leadership stops getting numbers.
  • The CRM, the PM tool, and the accounting system don't share a project ID. Reconciliation is manual every time.
  • PMs update their forecasts the night before the review meeting. The numbers are guesses, not measurements.
  • You discover margin erosion in a debrief, not during the project. Every closed project is a surprise.

What Becomes Possible When Cost-to-Completion Is Live

When margin lives on the deal record, the conversation changes. Commercial leaders see which projects are eroding in week 2 and can intervene — renegotiate scope, reassign resources, escalate to the client — while there's still room to act. Delivery leads stop defending past decisions in retros and start adjusting current ones in standups. Leadership stops asking finance for numbers and starts asking PMs for decisions.

You also stop needing a project accountant to make this work. The records do the accounting. The CRM does the math. The people closest to the cost are the ones who enter it, and they enter it because the workflow demands it, not because finance is chasing them.

This isn't a finance project. It's an architecture project — designing how cost data enters, associates, and surfaces inside the system your team already uses. Done right, it eliminates the Friday spreadsheet and the after-the-fact margin autopsy in the same move. If you want to see how this looks built end-to-end for a company that sells projects, this is the model we implement.