Skip to content
indraft
Start free

Cookbook

Run a retainer business and see scope creep while you can still fix it

An agency or consultancy does not lose money on the deals it fails to win. It loses money on the work it agreed to do for free, one favour at a time, and no CRM has a field for that.

The modelling decision

The month is the record. Not the client, and not the contract. A retainer is a recurring agreement, and the only question anybody asks about it is about a particular month: did August fit inside what August was sold for. Hold it as one long-running record and that question has no answer, because the overage in July is averaged away by the quiet week in June.

So each month of each retainer is its own record, carrying the hours contracted, the hours delivered, whether it went over, and one sentence saying why. That last field is the one that changes behaviour.

You

Create a retainer type: the month, contracted hours, delivered hours, whether it went over scope, and a scope note. Each belongs to a client. I want to filter by month and by whether it went over.

Put the running total on the record, deliberately

Delivered hours live on the month's record and the agent updates them as work is logged, rather than being summed from timesheet rows each time you ask. That is a modelling decision rather than a workaround, and it is worth understanding why, because the reflex is to store every entry and total them on demand.

The question this business asks is "did August go over", every week, about every client. A number that is read is a number you can put a rule against: over scope is a stored fact you can filter and count, so "who is over this month" is one question rather than a total per client compared to a contracted figure per client. It also stays the same speed in year three as in month one.

The cost is that a maintained total can drift from the timesheets it came from, which is exactly what the reconciliation in the verification below is for. Take that trade knowingly: if nobody will do the monthly check, store the entries and total them instead.

The conversation this exists to start

You

Who went over scope this month?

Agent

Skellig Marine 64/60h Board pack rebuildHalden Systems 52/40h Second data cutover they asked for verbally

Twelve hours over on a forty hour retainer is thirty percent of a month given away, and the note tells you exactly how: somebody asked verbally and somebody said yes. That is not a billing problem to chase at year end, it is a conversation to have this week, and it is only possible because the reason was written down at the time by the person who knew it.

The note is the part teams skip and it is the part that works. A number with no explanation produces an argument about whether the number is right. A number with a sentence produces a decision about the scope.

The trend that decides whether to renegotiate

You

Hours delivered per month across everyone.

Agent

2026-06 128h 3 retainers2026-07 125h 32026-08 146h 4

Read that against contracted hours rather than on its own. If delivered keeps climbing while contracted does not, the business is growing in the one direction that does not pay, and a retainer is due to be repriced rather than a new client won.

Verify it

  • Reconcile one month against your timesheets by hand. This is the check that matters, because a running total maintained by an agent can drift and the whole model depends on it being right. Do it monthly at first, then quarterly once it has never been wrong.
  • Check every over-scope record has a note. One without a reason is worse than useless: it will be argued about and then ignored.
  • Close a month and start the next. The new record should begin at zero delivered. If it inherits the previous month's figure, the month is not really the record and the averaging problem is back.
  • Look for retainers with no record for this month at all. Silence is the failure mode here. A client whose month was never opened looks exactly like a client who used no hours.

Run it again

Over-scope weekly, not monthly, because the point is to catch it while the month can still be changed. The trend at every quarter end, and take it into renewal conversations rather than discovering it during one. The renewal motion is the other half of this, and a retainer three months over scope is the single best argument you will have in it.