Field Notes: The Three Clients We Cancelled in Our First Quarter on Saldo
We had been carrying three retainers for years that the spreadsheet pack reported as marginally profitable. Once the live margin layer was in, every one of them was negative. We cancelled all three inside a quarter. The shape of the conversations, and what an agency owner discovers about themselves when the numbers stop hiding.

Ernest Barkhudarian, Founder of Saldo · former CTO
The numbers we had been running on for years told us we were profitable on three particular retainers, by margins between three and nine percent. Tight, but on the right side of zero. The agency was carrying them because the relationships were old, the clients were friendly, and the work was interesting enough to staff.
The first quarter on the new financial layer told us a different story. All three had been losing money for two years — one by ten percent, one by fourteen percent, and one by a startling twenty‑two percent. The margin reports we had been reading had been wrong by more than the numbers they were claiming.
We cancelled all three inside a quarter. The conversations were harder than I expected and easier than I feared. The lesson was less about the clients and more about what an agency owner has to confront in themselves when the numbers stop hiding the answer.
This is the post-mortem. Anonymised at every level. Specific where it can be.
Cancelling a long-standing client is the single most uncomfortable operational decision an agency owner makes. It is uncomfortable because it sits at the intersection of three things that usually pull in different directions: the financial reality of the engagement, the human relationship with the people on the client side, and the founder’s own sense of being someone who fixes problems rather than walks away from them.
In our first quarter on the live margin layer, we had to do it three times. Each cancellation was a different kind of conversation. The lessons were not about the clients. They were about what we had been telling ourselves for years.
This is the post-mortem on those three quarters and the conversations that followed.
Client A: the long retainer that had eaten three architects
The first cancellation was the one I had seen coming for nine months and had been talking myself out of. The client — let’s call them A — had been on a £14,000-a-month retainer with us for four years. The retainer had originally been priced at 100 hours of mid-developer time and 20 hours of senior architect time per month, on a stable and well-defined platform.
By year four, the platform had grown more complex than the retainer had priced for. The client’s team had turned over twice. New stakeholders had inherited the relationship and assumed the retainer covered things the original retainer never explicitly excluded: emergency fixes, after-hours support, occasional ad-hoc strategic conversations with our principal architect.
On the spreadsheet pack, the retainer reported a margin of about six percent — tight but positive. The closing pack arrived eighteen days after each month closed, so by the time anyone saw the margin number, the next month was already half spent.
When we put the retainer through the live margin layer for the first time, the actual margin came out at minus fourteen percent. The principal architect had been spending 35–40 hours a month on the account, not the 20 the retainer priced. His real cost (£140 an hour fully loaded) against the role rate the retainer assumed (£90/hour blended) was producing a £2,000-a-month invisible subsidy. Over four years that came to roughly £100,000 the agency had been quietly funding to keep the lights on at a client who reported the engagement as healthy.
The conversation with the client’s account director took ninety minutes. We had two real options: a re-priced retainer at roughly £19,500/month (a 39% increase, which the client’s budget process would not approve in-cycle) or a clean wind-down over a 90-day handover period. We picked the wind-down. The client was, I think, more relieved than insulted. The work had been straining their budget too. They had simply been reluctant to be the side that asked for the conversation.
Three months later they returned with a smaller, cleaner retainer at £8,500/month for a tightly-scoped 50-hour-a-month brief. The new retainer was profitable from week one. We do still work with them.
Client B: the developer-friendly account that was draining a senior team
The second cancellation was the one I had not seen coming, and it surprised me by the size of the gap.
Client B had been on a £22,000-a-month retainer for two and a half years. The work was technically interesting — a complex backend system that the developers on the account enjoyed working on. The retainer was nominally priced at 140 hours of senior-and-mid time per month. The platform had a comfortable culture of code reviews, technical design discussions, and occasional architectural digressions that the client’s engineering side enjoyed and engaged with.
The closing pack reported a margin of about nine percent. The first live read on the new system reported a margin of minus twenty-two percent.
The story underneath: the team had been spending 175–195 hours a month on the account, not 140. None of the extra time had been billable, because none of it had been formally requested by the client — it had been engineering self-investment. Code reviews that ran 50% longer than budgeted because they had become educational. Architectural discussions that the team genuinely benefited from but that no client’s budget priced. Slack channels that had become semi-permanent watercoolers between our developers and theirs.
In aggregate, the agency had been running an unfunded engineering excellence programme on Client B’s account, billed to the agency’s P&L, for two and a half years.
The conversation with the client this time was much harder. There was nothing for them to fix — they had not been asking for the extra hours. The hours were a gift the team had been giving them, that the agency had been paying for.
I considered a few angles. We could re-scope the retainer to formally include the educational hours, which would push the price up by about 35%. We could scale back the scope so the team had less reason to invest. We could split the engagement into a development retainer and an educational subscription that the client paid for separately. None of them survived an honest reading of why the educational hours had grown in the first place: the client had not been asking, the agency had been giving, and asking the client to start paying for the gift was going to feel exactly like that.
We exited the engagement over six months. The clean way to do it was to be honest about the structure: the retainer had been delivering more than its price line had asked for, our team needed to redirect that energy into other engagements, and the client could either continue at a smaller, tighter scope (which they declined) or move to a different agency that would bring a fresh team and a fresh set of cultural defaults. They moved. We’re on good terms and have referred work to each other twice since.
Client C: the one I should have cancelled three years earlier
The third was the one that, on reflection, I should have cancelled in 2022. It was a small retainer — £4,500 a month — for a client whose principal contact had been a personal friend of mine for many years. The retainer was for ongoing maintenance of an internal tool we had originally built for them in 2019.
On the spreadsheet pack, the retainer reported a three percent margin. On the live layer, it reported a ten percent loss.
The size of the loss was small in absolute terms — about £450 a month. But the structure of it was the lesson. About 60% of the team’s time on this account was being spent on conversations about the business, the platform’s long-term direction, and the client’s own role in their parent organisation. None of those conversations were billable in any way that survived a financial review. They were the conversations of a long working friendship, conducted on agency time, charged to the agency’s P&L.
The discomfort here was different from Clients A and B. It was the discomfort of looking at a relationship that I had been miscategorising. I had been telling myself that we were running a small profitable retainer for an old contact. We were running a small unprofitable retainer that I was using as a vehicle for a friendship I valued. The structure had been wrong for years and the financial layer simply made it visible.
The conversation took fifteen minutes over coffee. We agreed to wind the retainer down. The friendship has not changed. We see each other for lunch monthly. The relationship is in a healthier place than it was when there was an agency engagement quietly subsidising it.
What the three had in common
Reading back across the three engagements, four patterns appeared in all of them.
The closing-pack margin reports had been wrong by more than the margins they reported. Each engagement had been claiming a positive single-digit margin. Each was actually running at a double-digit loss. The error was not in the spreadsheets — it was in what the spreadsheets were measuring. They had been measuring labour at role rate, not real employee cost; they had not been allocating overhead at the engagement level; and they had been blind to the unbilled hours that lived in Slack threads, code reviews and weekly catch-up calls.
The relationships were all old. None of these clients had been recently signed. Each had been on the books for between two and four years, which is exactly the duration over which a tight engagement quietly drifts: scope grows, stakeholders turn over, the original relationship between the price and the work erodes, and nobody on either side has the natural moment to renegotiate.
The team had been giving more than the engagement priced, in each case for reasons that were honourable in isolation. On Client A: the platform was complex and our principal cared about it. On Client B: the team was technically engaged and was learning. On Client C: the relationship was personal and the conversations were valuable. None of these are bad reasons. They are just reasons that the agency had been funding without anyone making the decision to fund them.
I, as the founder, had been complicit in keeping the engagements running. Each of the three had a moment in the previous twelve months when a question in my head had asked “is this engagement still right for the agency?” In each case I had answered “yes for now, the relationship is good and the numbers are okay” and moved on. The numbers had not been okay. The relationships had been masking the numbers, and I had been content to let them.
What the cancellations cost and what they returned
Aggregate financial impact, computed honestly:
- Combined retainer revenue lost: £40,500 a month, or £486,000 a year.
- Combined real cost saved: £52,000 a month, or £624,000 a year.
- Net margin recovered: £138,000 a year, before any reallocation of the freed-up team time.
The team time freed up by the cancellations turned into capacity for two new engagements that landed in the second quarter post-cancellation, both at clean margins of 30% or better. Aggregate margin contribution from those two: about £190,000 a year.
So the cancellations cost £486,000 of revenue, recovered £138,000 of direct margin, and freed capacity that produced another £190,000 of margin elsewhere. Total positive swing: £328,000 a year against the previous baseline.
The agency was the same size before and after. Its book of work was healthier. Its team was less tired. The financial pack stopped having three quiet drag lines on it.
What an owner has to confront
The hardest part of this quarter was not the maths or the conversations with clients. It was an internal one.
For about four years before we had the live margin layer, every closing pack I read had been telling me a story I wanted to be true. The agency was healthy; the retainers were tight but positive; the relationships were old and good. I had read those numbers as confirmation of a story I had been writing for myself about what kind of agency we were running.
The first quarter on the live numbers told me that my story had been wrong, in a specific way: I had been protecting old relationships at the cost of the agency’s ability to grow. The relationships I had been protecting were good, in a personal sense. They had also been quietly draining the resource I was supposed to be stewarding for the team.
That was a confronting realisation. It is the kind of realisation that the spreadsheet pack had been quietly helping me avoid. The pack had been showing me the answer I wanted: positive margin, all three accounts. The live layer showed me the answer that was actually there.
If you are running an agency and you have been telling yourself that an old retainer is “tight but positive” for two years — the live number is almost always different from the closing-pack number, and almost always in the direction the closing pack was protecting you from. Whether that’s a cancellation conversation, a re-pricing conversation, or a clean structural change depends on the engagement. The conversation has to happen.
Saldo is the layer we built around our own Jira so that the live number is always available. The 15-minute demo runs on your real Jira data. We don’t ask for card details up front. If your spreadsheet pack has been telling you the same kind of story it had been telling me — a set of old retainers, all reportedly positive, none ever quite negotiated — the demo is worth the fifteen minutes.
The shorter version: the closing-pack number is the number you wanted to read. The saldo is the number that’s actually there. Most of the time those are not the same number, and the cancellation conversation that follows is the agency’s real one to have.
Continue inside Saldo