Skip to main content
Back to blog
Agencies Profitability Management Consulting

How to calculate the real profitability of a project in an agency

The margin you think you have and the real one do not match. How to calculate your true hourly cost, log time and spot losing projects.

JM
Javier Manzano
CEO & Co-founder • August 6, 2026

Almost every agency knows what it invoices. Considerably fewer know what they earn. And very few know which specific projects make money and which lose it while there is still time to act.

The pattern is so common it is almost a rite of passage: you close the year with solid revenue, the result does not match the feeling of having run flat out, and when you finally sit down to look, two or three projects ate the margin of all the others.

This is about how to compute the number that is actually true.

The base error: treating rate as margin

If you sell at €60/hour and pay someone €20/hour, it is tempting to think you make 40. You do not, for two compounding reasons.

A person’s cost is not their salary. On top of gross pay you have employer social security, equipment, software licences, training, and a proportional share of everything that does not bill: admin, management, sales, office, accounting. Depending on structure, the real employer cost usually sits between 1.4 and 1.8 times gross salary.

Not every hour of the year is billable. This is where most calculations break.

The denominator almost everyone gets wrong

Hourly cost is a division. The numerator — what the person costs — is usually roughly right. The denominator is almost always inflated.

Start from a typical working year: around 1,750-1,800 contract hours. From there you must subtract what will never be billed:

ItemApproximate impact
Holidays and public daysAlready excluded from contract hours
Sick leave and absences3-5%
Training and keeping current3-5%
Internal meetings, 1:1s, planning8-12%
Pre-sales, proposals, estimates5-10%
Internal work (own site, processes)3-8%

Add it up: between 22% and 40% of the working day is non-billable, and much of it is necessary work there is no sense in eliminating. Healthy utilisation for delivery roles sits between 70% and 80%, which leaves roughly 1,250-1,400 billable hours a year, not 1,800.

That is the correct denominator. Divide annual cost by 1,800 instead of 1,300 and your hourly cost comes out 28% cheaper than it is. Every margin you compute from there is fiction.

The formula, tidied up

real hourly cost = annual employer cost / real billable hours per year

project gross margin = project revenue
                     - (logged hours × real hourly cost per role)
                     - direct costs (licences, infra, subcontracting)

Two details that change the outcome:

Use each role’s hourly cost, not an average. A project delivered mostly by senior people costs very differently from one computed on a weighted average of the whole team. The average hides exactly the projects going worst.

Log everything, not just development. Project management, client meetings, feedback rounds and post-delivery support are project hours. If you only log coding time, you are measuring something else.

Where the margin leaks

In order of frequency, from what we have seen:

Hours nobody logs

People do not record fifteen-minute calls, the “take a quick look at this”, the half hour spent researching a library. Individually it is noise; aggregated over a three-month project it is a double-digit overrun.

You do not fix that by insisting people log better: you fix it by making logging cost one gesture instead of three.

Extensions agreed verbally

The client asks for something “small” on a call, someone says yes to avoid friction, and it never reaches a quote. Repeated five times, the real scope no longer resembles what was signed — but the price does.

A system that shows logged hours against quoted hours turns that awkward conversation into an objective number you can put on screen.

Fixed price with no history

Quoting a fixed price without knowing what similar projects cost is gambling. Fixed price is not bad — it transfers risk, and can carry better margin — but it requires data from previous projects to estimate. With no history you are picking a number and crossing your fingers.

Finding out late

This one hurts most because it is the only entirely avoidable one. A project 40% over in week three is fixable: rescope, renegotiate, change the team. The same project detected at closure is a booked loss.

What to watch weekly

Three numbers per active project. You do not need more:

  1. Logged versus quoted hours, as a percentage. If you are at 60% of the hours with 30% of the scope delivered, you have a problem today, not in two months.
  2. Projected gross margin, recalculated with the real accumulated hours plus an estimate of what remains.
  3. Who is logging. A project quoted with mid-level roles that is absorbing your most expensive senior hours is getting more expensive even if the hour total looks fine.

Moving from spreadsheet to tool

A spreadsheet works while there are few projects and someone disciplined maintains it. It breaks in three places at once: it depends on one person, it arrives late, and — most importantly — nobody trusts it enough to make a hard decision based on what it says.

The leap is not technological, it is about trusting the number. When the team logs as they go and the figures come out on their own, the conversation stops being “is this right?” and becomes “what do we do about this?”.

That is precisely the problem we built Tenki for: time tracking that does not annoy the person doing it, project profitability computed in real time with each role’s hourly cost, and financial control connecting those hours to the P&L. We built it because we needed it ourselves.

If you are also deciding how to staff up, we have an analysis on agency versus in-house team that sits on the other side of this same equation.

Don't miss a thing

JM

Javier Manzano

CEO & Co-founder at Soamee

Passionate about technology and software development. Sharing knowledge and experiences to help other developers grow.

Did you enjoy this article?

If you need help with your development project, we are here for you.

Real project profitability in an agency

Tell us your challenge. We'll propose a solution.

No commitment. Within 24 hours, you'll receive a proposal with scope, timeline and budget. No fine print.

Book a free call →