If your diary is rammed and your profit margin is still rubbish, you’re not alone.
It’s also not a “motivation” problem. It’s usually not even a “sales” problem.
It’s a maths + reality problem.
Because “fully booked” only tells you one thing: people want what you sell.
It doesn’t tell you whether:
-
the work pays enough once you include all the hidden time
-
your costs behave the way you think they do
-
the jobs you’re doing are the ones you should be doing
-
rework and complaints are quietly eating the margin after the sale
So rather than guessing, let’s do the useful thing: prove where the profit is being lost.
This post is the exact process I’d use with you if we were sat together looking at your last few weeks of work.
First, which “profit margin” are we talking about?
This sounds picky, but it matters because it changes what you fix.
Gross profit margin (simple definition)
This is what you keep after the direct costs of delivering the work.
Think: materials, stock, subcontractors, delivery costs, and sometimes direct labour (depending how you run things).
Gross margin % = (Sales − Direct costs) ÷ Sales
Net profit margin (simple definition)
This is what you keep after everything, including overhead.
Overhead is rent, software, admin wages, vehicles, insurance, finance costs… all the stuff that exists even if you deliver zero jobs this week.
Net margin % = Net profit ÷ Sales
Why you care:
You can be fine on gross margin but still struggle on net margin if overhead has crept up. Or your gross margin can be weak and no amount of “being busy” will save it.
If you want to understand margin properly (without the accounting lecture), this pairs well with:
https://grifflepop.com/what-causes-low-profit-margin/
The uncomfortable bit: being fully booked can hide the real problem
Here’s a common pattern:
You’re booked solid… but it’s mostly because the work is easy to say yes to.
It fills the calendar.
It looks productive.
It keeps money coming in.
But it doesn’t necessarily leave profit behind.
The easiest way to test this is not with a dashboard or a big project. It’s with one simple calculation on real recent jobs.
The “stop guessing” check (takes 20 minutes)
Pick one job type you do often. Not your rare perfect job. The normal one.
Now write down three things:
-
What you charged (average)
-
What it cost you directly (materials/stock/subcontractors)
-
How long it really took end-to-end
And I mean end-to-end. Not just the visible work. Include the admin, travel, chasing, messages, follow-ups, fixing small issues.
Now calculate this:
Contribution (plain English definition)
Contribution is what’s left after direct costs. It’s the money that has to pay overhead and profit.
Contribution = Price − Direct costs
Contribution margin % = Contribution ÷ Price
Then do this:
Contribution per hour (the number that hurts, but helps)
Contribution per hour = Contribution ÷ Total hours
That one number will tell you a lot.
If it’s low, you’ve just found why you’re fully booked but not making decent money.
If you want help working out your true job cost properly (so you can price without guessing), this is the next read:
https://grifflepop.com/true-cost-of-a-job/
Four reasons this happens (and how to prove which one is yours)
Most “fully booked, low margin” situations fall into one of these. The trick isn’t knowing the list. The trick is knowing which one you’ve actually got.
1) Your pricing is based on hope, not reality
This is rarely “I picked a random number”.
It’s more like:
-
you priced based on competitors
-
you priced based on best-case delivery time
-
you didn’t include the hidden admin time
-
you discount because you feel you have to
How to prove it:
Take your last 10 jobs and compare:
-
what you thought the job would take
-
what it actually took
If the hours are consistently higher than you priced for, your margin isn’t “low”. It’s being donated.
2) Time is leaking everywhere (so “booked” doesn’t mean “paid”)
This is the silent killer. Your calendar can look full, but a chunk of your week is unpaid work.
Common culprits:
-
scope creep you’re not charging for
-
messy handoffs between people
-
rework
-
waiting time
-
chasing customers or suppliers
-
repeated questions because expectations weren’t set clearly
A KPI that helps here is:
Utilisation (simple definition):
How much of your time is actually spent on paid delivery.
If you’re only paid for 25–30 hours but you’re working 45 hours to deliver it, you’ll feel constantly busy and never see the margin.
How to prove it this week (no fancy tools):
For 5 working days, track time into three buckets:
-
paid delivery
-
admin/coordination
-
fixing/rework
That’s it. You’re not building a time-tracking system. You’re finding the leak.
3) Overhead has crept up and you didn’t notice
This one feels boring, but it’s common.
It shows up as:
-
subscriptions and tools stacking up
-
extra staff or contractors added “to cope”
-
higher rent, vehicles, insurance
-
finance costs
-
marketing spend increasing
If your gross margin is okay but net margin is poor, overhead is often the reason.
How to prove it:
Look at overhead as a percentage of revenue over the last 6–12 months.
If overhead rose faster than revenue, net margin shrinks even if sales look healthy.
4) Rework, complaints, and fixes are eating your profit after the sale
This is where a lot of “financial” problems are actually operational problems.
A complaint isn’t just a complaint if it triggers:
-
redo work
-
extra labour
-
extra admin
-
refunds
-
cancellations
-
review damage (which affects future sales)
This is also where BI is genuinely useful. Not because “AI can summarise complaints”, but because BI can connect feedback to what actually happened:
-
which job types generate the most complaints
-
which teams/areas
-
which themes
-
what it cost (time + rework + refunds)
-
what changed when you fixed the process
If you want a practical guide on analysing feedback so it leads to action, start here:
https://grifflepop.com/analyse-customer-feedback/
What I’d do next (in order)
If you’re reading this thinking “I can’t fix everything”, good. Don’t try.
Do it in this order:
Step 1: Find your worst-performing job type
Use the contribution-per-hour check above. One job type. Real numbers.
Step 2: Decide whether the fix is pricing or process
-
If contribution-per-hour is low even when delivery is smooth: it’s pricing (or direct costs)
-
If contribution-per-hour looks okay on paper but reality takes longer: it’s process/time leakage
Step 3: Pick one change that moves the needle
Examples:
-
tighten scope and charge for changes
-
standardise handoffs
-
remove steps that create rework
-
adjust pricing for the job types that consistently overrun
-
stop accepting the work that fills the diary but drains the margin
Step 4: Measure the result for 2–4 weeks
Not forever. Just long enough to see if the change actually worked.
If your reporting is messy and you’re trying to do this across spreadsheets, emails, and gut feel, this will help you avoid the common traps:
https://grifflepop.com/fix-reporting-mistakes/
And if the problem feels more like “profit is there but cash isn’t”, this one connects the dots:
https://grifflepop.com/profitable-but-no-cash/
A quick reality check before you blame yourself
If you’re fully booked and underpaid, the answer isn’t “work harder”.
It’s usually:
-
charge correctly for what it actually takes
-
stop delivering in ways that create unpaid work
-
cut the work that keeps you busy but never pays properly
-
connect the right info so you can make one clear decision at a time
That’s the difference between “busy” and “profitable”.
Want a second pair of eyes on your numbers?
If you want help setting up simple tracking and reporting so you can see what’s driving margin (and what’s quietly killing it), you can see what I offer here:
https://grifflepop.com/services/
If you’re not sure where to start, use the contact page and tell me:
-
what you sell/deliver (one or two common job types is enough)
-
whether you invoice, get paid upfront, or a mix
-
whether you hold stock/materials
-
what “fully booked but low profit” looks like in your week (what’s happening in real life)
Contact: https://grifflepop.com/contact/
Discover more from GrifflePop Analytics
Subscribe to get the latest posts sent to your email.




