A demonstration on invented data
Sample data, invented for this page. No real client is in it. Method & limitations
Run it on
Why these agreements.
What this could mean.
How this was calculated
Client by client.
| Client | Size | Charged /mo | Price each | Cost each | Hours each | Margin | A year | What to do |
|---|
The whole book, on one axis.
Every client by what the agreement earns once the work is costed. The dashed line is the margin the agreements were priced at. Anything left of the solid line is paid for by somebody else on this list.
The number you already have.
Where the cost goes
The arithmetic
What it read
| Date | Who | Hours | Cost |
|---|
Run it on your own book.
Two things. A time export with a client name and hours on each row, and the monthly value of each agreement. Both exist already. They live in different systems, which is why nobody has put them together.
Neither leaves this page. No upload, no server. The reading happens in your browser and is gone when you close the tab.
client, hours, and ideally a date, a role and a cost rate
Client, monthly fee. A third number, what you carry in licenses and tooling for them each month, makes step 2 of the method run. Without it every margin here is flattered by whatever you pay on their behalf, and the page will say so.
Method & limitations.
There is no model here. It is one division that nobody does, because the top and bottom of it live in different systems.
- 1Cost the work at what it costs. Every logged hour carries the loaded cost of whoever delivered it. An engineer's hour and a helpdesk hour are not the same money, and averaging them hides the clients this is looking for.
- 2Add what you carry for them. Licenses and tooling are real delivery cost and scale with the client, so they belong here, not in overhead.
- 3Divide by what the agreement charges. That is one client's gross margin, a number almost no small firm has, because the time is in one system and the agreement in another.
- 4Add up two different things, and keep them apart. Gap to target is what the below-target agreements would have earned at the margin the book is priced at, less what they did earn. A client at 30% against a 50% target adds to it while making money. Lost outright is narrower: only the clients whose delivered cost is more than they pay. Lost outright is the figure above, because it is the size of the bleeding. Gap to target sits beside it, because it is the size of the pricing question.
- 5Give both levers, and say which one is available. For a client a little under, the answer is a price. For one far under, the price that would fix it is one nobody accepts, so the honest answer is the other lever: how many hours a month the agreement pays for, against how many are delivered. A recommendation you cannot carry out is not a recommendation.
Where this does not work.
Worth knowing before anybody builds on it. The first one is the big one.
Where people log eight round hours on a Friday, the cost side is soft, and so is everything built on it. That is why the same idea fails in agencies. Check it before trusting a number.
This costs delivery only. Sales, admin and the owner's own time are not in it, so a client at the target line is not making money overall.
One migration or one flood makes a good client look terrible for a year. Twelve months smooths some of that. It does not remove it.
A reference client, a foot in a sector, a favor owed. The number tells you what that costs. Whether it is worth paying is still your call.
This took a day.
It is a demonstration, not a product. The version that matters reads the time system and the agreements directly, runs the morning of a renewal, and knows a client who had one bad month from one who has been like this for two years.
If you want to know what this would say about your book, send me the question.
Caspase LLC · Virginia · caspase.ai