From the practice · Pricing4 min read

Why we don't do milestone payments.

Milestone-based billing rewards the wrong behavior on both sides of the engagement. Here is what we do instead, and why it makes the work more honest, not less.

A milestone payment is a coupon for finishing something. The structure is supposed to align incentives — the client pays when each chunk lands, the practice has a steady cadence of revenue — but in practice it does the opposite.

The problem is that "milestone" is a marketing word. The actual question is what triggers the payment. If the trigger is delivery, the practice is incentivized to call something delivered when it is technically not. If the trigger is approval, the client is incentivized to withhold approval until the next thing also lands. Either way, the milestone document becomes a place where the relationship gets negotiated transactionally, one chunk at a time, instead of in the open at the start.

We do two things instead.

A booked deposit, credited toward the project total. The deposit is what reserves the calendar. It is not a milestone; it does not gate anything. It signals that the engagement has begun and that we are on the clock. If the project ends inside the discovery window for any reason, the deposit refunds; once the build phase opens, it credits.

A monthly cadence on the headline price, with every revision logged in writing. From the moment the build phase opens, the headline price is what we agreed to. If it moves — up or down — the move opens a dialog that requires a written reason of at least twenty characters. The reason is logged immutably, surfaced in the portal alongside the operator's name, and emailed to the client with a before-and-after diff. There is no silent path.

The result is that we never have a conversation about whether something was delivered enough to trigger a payment. The conversation we have is about whether the scope changed and whether the change was the right call. That conversation is the one worth having. The other one is theater.

There is one exception. For very long engagements (six months and up) we will sometimes structure phase deposits, where each phase has its own scope agreement with its own headline price. This is not the same thing as milestones. Each phase is a small contract on its own, with its own revision log, and the deposits are settlement against that scope, not gates on it.

If you have read this far and you are about to ask whether we will accept milestone billing on your engagement: the honest answer is that we will, on a long enough engagement, accept phase deposits. We will not accept milestone payments triggered by deliverables. The math is simple — every time we have agreed to it, the engagement has spent more time arguing about whether milestones were met than working.

Pricing transparency is not a feature. It is a control we engineered.

An occasional note from RESILIENCE. Written by hand, sent only when there is something genuinely worth saying.