The practice ledger: is the work good, were the hours well spent, and is the invoice enough

In three points

  • What a practitioner believes about their own practice is self-report, the same class of evidence RUCF discounts in users. The ledger replaces it with three readings taken from records: attribution rate, hour yield and capture ratio.
  • On one engagement I believed 80% of my hours were attached to a signal. The timer said 59%. The missing fifth was almost all design review held before any acceptance criterion existed.
  • Across four engagements, the one with the best results captured 3.8% of the value it recovered. Pricing from hours under-invoices subtraction, because a good diagnosis takes few hours to act on.

Ask anyone who sells their time how the last project went and you will get an answer within a second. The work was solid, the hours went mostly where they should, the fee was about right. I gave that answer for years. It is a satisfaction score, and I have spent those same years telling clients what a satisfaction score is worth.

The manifesto leans on Parry and colleagues, who compared what people said about their own digital behaviour with what the logs recorded. The two correlated at r = 0.38, and three of 49 estimates were accurate. “I know where my hours go” is the same kind of claim, made about the same kind of behaviour, by someone with a stronger motive to be wrong.

This month the framework closed that hole. Version 2.1 adds a practice ledger: a section in the manifesto (5.5, added 2 September 2026) and a sixth phase in the methodology (added 9 September 2026). This article runs it on a real engagement, the fintech rebrand described here last week, and then on three older ones.

Three readings and one rule

The rule is that nothing enters the ledger from memory. Every figure comes from a record that existed before anyone wanted a particular answer: the acceptance criteria on file, the rescore, the timer log, the invoice.

attribution rate = treatments that met their written criterion
                   ÷ treatments shipped

hour yield       = (signal hours + evidence hours)
                   ÷ logged hours

capture ratio    = fee ÷ (recovered cost × confidence)

They answer three questions in order. Is the work good, were the hours well spent, and is the invoice enough. Each one also has a believed value, written down before the records are opened, because the distance between the two is the same awareness gap the framework measures in users.

Is the work good

The methodology already requires a numeric acceptance criterion for every treatment, written before design starts. The ledger only counts them afterwards. A criterion written after the result does not count, because by then it is a description of what happened.

The fintech pilot shipped seven treatments. Five met their criteria, an attribution rate of 71%. The second number is calibration: how far each signal moved against how far I said it would.

Fig. 01

What I predicted against what happened

OBSERVED ÷ PREDICTED MOVEMENT SEVEN TREATMENTS CONFIRMATION STATE · re-checks −20 → −21 pts1.05 STATUS LANGUAGE · reassurance contacts −14 → −11 pts0.79 FUNDING STEP · accounts funded +12 → +9 pts0.75 LANDING PROMISE · intent matched +15 → +13 pts0.87 IDENTITY · belief perception +1.0 → +1.21.20 CARD-ORDER SCREEN · activation +7 → 0 pts0.00 EXPORT RENAMING · export questions −30 → −4%0.13 MEDIAN 0.79 WORST 0.00 · the outline is the prediction
Reported the way the framework reports everything else: the median and the tail, never the mean. When a treatment of mine works, it delivers about four fifths of what I promised. Two of the seven delivered nothing.

The median is 0.79, so my predictions run about a fifth optimistic. The tail is more useful. Both failures were screens I redesigned because they looked weak to me, with no behavioural reading that said they were failing. That is my own expert judgment, which the framework weights at 0.30, failing at roughly the rate the weight predicts. I now have a record of what my taste is worth when it works alone, and it is two misses from two attempts.

Were the hours well spent

Every logged hour takes one of four classes, chosen when the timer starts. Tagging at the end of the week is recollection, and recollection is what the ledger exists to avoid.

  • Signal hours. Work aimed at a named signal that has a written criterion: design, build and testing against the gate.
  • Evidence hours. Work that raises confidence: instrumentation, research, analysis.
  • Receipt hours. Work that confirms what the client already knew and documents it again.
  • Drift hours. Work with no signal attached: review rounds on taste, rework that follows them, unscoped requests.

Before opening the log I wrote down what I believed the split had been. The hours come from a timer that records to the minute. I use Trackilero, which I also build, so weigh that accordingly.

Fig. 02

Hours as claimed against hours as logged

312 LOGGED HOURS, ONE ENGAGEMENT SAID AGAINST LOGGED SIGNAL SAID55% LOGGED38% EVIDENCE SAID25% LOGGED21% RECEIPT SAID10% LOGGED14% DRIFT SAID10% LOGGED27% HOUR YIELD, SAID 80% HOUR YIELD, LOGGED 59%
Outlined bars are the estimate written down before the log was opened, filled bars are the log. The estimate was reasonable on three classes and wrong by a factor of nearly three on the fourth, which is the one nobody likes to look at.

I believed the yield was 80%. It was 59%: 119 signal hours and 66 evidence hours out of 312. The 21-point difference is an awareness gap, measured on me with my own instrument.

The 84 drift hours were nearly all one thing. Thirty-four went to review rounds on identity routes held before the gates were agreed, and 27 to the rework those rounds produced. The remaining 23 were unscoped requests. Once the gates existed the rounds stopped, because there was nothing left to hold an opinion about. I had written about killing the consensus sign-off as advice for clients and then sat through five weeks of it on my own project.

Is the invoice enough

Two checks, because “enough” means enough for the hours and enough for the value, and the two can disagree.

The first is the rate gap. The fee was fixed at €38,000 and scoped at 240 hours, which implies €158 an hour. The log says 312 hours, so the effective rate was €122, a gap of minus 23%. The 72 hours over scope and the 84 hours of drift are largely the same hours.

The second is the capture ratio: the fee as a share of the cost the work recovered, after the confidence discount. On pilot figures held for a year, the halved reassurance contacts recover €111,000, observed at 1.00. The nine-point rise in funded accounts recovers €385,000, which stays at 0.50 until the identity and the account-linking change are tested in separate arms, so it enters at €193,000. The fee of €38,000 against €304,000 is a capture ratio of 12.5%.

I treat anything under 5% as under-invoiced and anything over 25% as a fee the evidence cannot defend. Both edges are judgments and are published as judgments. At 12.5% the price was fair against the value. The reading surprised me. I did not have a pricing problem on this engagement. I had a drift problem, and the invoice was where it became visible.

Four engagements side by side

One engagement says little, so I rebuilt the ledger for the three before it from timesheets, proposals and invoices. Those hours were classified after the fact, which makes them reported evidence at 0.70, and they are marked that way.

EngagementEvidenceAttributionHour yieldRate gapCapture
A · silent friction, subtraction0.704 of 571%−6%3.8%
B · redesign-led0.703 of 649%−31%19.0%
C · mixed0.702 of 356%−12%9.0%
D · fintech rebrand1.005 of 759%−23%12.5%

Fig. 03

Capture ratio, four engagements

FEE AS A SHARE OF VALUE RECOVERED FOUR ENGAGEMENTS DEFENSIBLE BAND, 5 TO 25% 0 5 10 15 20 25 30% A C D B A had the best attribution rate of the four and the lowest capture. It was priced from hours, and good subtraction takes few hours. Band edges are judgments, published as such.
The engagement that did the most for its client was the one I charged least for, in proportion. Nothing about the invoice looked wrong at the time. It only looks wrong next to the recovered cost, which I had calculated for the client and never for myself.

Engagement A is the finding. It was a silent-friction job: one deleted step and one removed field, 96 hours, four of five criteria met, and a recovered cost far larger than anything else in the table. It was also the cheapest, because it was priced from hours and the diagnosis left little to build. Hourly pricing under-invoices subtraction. The better the diagnosis, the shorter the work, and the smaller the bill.

I have changed one thing as a result. Proposals now state a floor of 5% of the confidence-weighted recoverable cost, with the arithmetic shown, next to the hours estimate. The client can attack the arithmetic, which is an improvement on both of us guessing.

The second pattern is weaker and I am stating it as weak. Hour yield and attribution rate fall in the same order across all four engagements. Four is an anecdote. It is also the prediction the ledger lives or dies by, so it went into the manifesto as falsifier F6: if higher yield does not go with higher attribution across a reasonable sample, the hour classes are bookkeeping and should be dropped.

Running it yourself

  1. Write a numeric criterion for every treatment before design starts. Without this there is no ledger, only a diary.
  2. Choose the hour class when the timer starts, and do not edit it later.
  3. At the end, write down the split you believe in before you open the log.
  4. At rescore, compute the three readings and the rate gap. Report calibration at the median and name the worst case.
  5. Give the ledger to the client with the rescore, misses included.

The last step sounds like a risk, and so far it has worked in my favour. A client who can see that 27% of the hours had no signal attached will ask for the gates earlier next time, and that costs nothing to grant.

Where it breaks

The ledger can be gamed, and the person best placed to game it is the one keeping it. Tagging a review round as evidence hours takes one click. The partial defence is the same as for the composite score: each class has a definition that a client can audit against the calendar. The manifesto lists this as limitation 8.8.

The capture ratio inherits every weakness of the priced friction underneath it. A recovered cost held at 0.50 can halve or double the ratio when it is re-measured, so a ratio should be read with its confidence and revisited after the rescore. The band edges of 5% and 25% come from four engagements and my own sense of what I could defend in a room. And the whole thing assumes fixed-scope work with measurable outcomes. I have not tried it on a retainer and do not know what a signal hour means there.

I would still rather have a small, flawed record than the 4.1 I used to give myself.

What was added, and when

Manifesto section 5.5, limitation 8.8, falsifier F6 and research item 7: added 2 September 2026, version 2.1. Methodology phase 06, the ledger: added 9 September 2026. The framework changelog carries the entry.

Find your gap


Related: How a fintech approved its rebrand · How to price friction in your own currency · Scoring our own product in public