River
Y CombinatorBacked by Y Combinator

Consulting & AdvisoryFree

Engagement Profitability and Rate Analysis

Your effective rate per engagement on recorded hours and on a fuller estimate of the real hours, with work the scope never asked for split out.

Context to provide

River works out what each engagement actually paid you per hour, twice. First on the hours your timesheet recorded. Then on a fuller estimate: recorded hours plus client meetings from your calendar that no entry covers, plus work sessions from file or message activity where you share it, each counted once under rules written down on the page. Every hour is then matched to a deliverable in the signed scope, and the hours that match nothing get their own column.

The usual profitability check is a spreadsheet with an Hours column: fee, hours, divide, sort, and the engagement at the top is the one you go looking for more of. It is the right calculation on the wrong denominator. The hours in that column are the ones somebody remembered to enter, and unbillable work on a fixed fee is precisely the work nobody enters. So the ranking often measures diligence at data entry rather than profit, and the fix it suggests can be exactly backwards.

Built for the independent consultant or small firm pricing the next engagement off the last one. It rolls up into the practice-level view in the consulting practice dashboard pack, reads the in-scope deliverable list out of the statement of work, and feeds what it finds into the next proposal. On the client side of the desk, the same net-of-cost arithmetic runs in the savings ledger. Run it at the end of an engagement while the calendar is still fresh, or once a year across the whole book.

Why the unrecorded hours are unrecoverable

Reconstructed hours cannot turn into money, and being blunt about that is what makes the exercise worth doing. Federal cost rules say it directly. A contractor is responsible for maintaining records adequate to demonstrate that a claimed cost was incurred, and a contracting officer may disallow any part of a claimed cost that is inadequately supported. A calendar invitation and a file timestamp show activity, not time worked. The 196 extra hours estimated across Teodor Lindqvist's year are a pricing input and nothing else.

The comparison also only works if the estimate was built at the grain of the record. The cost accounting standard on consistency requires that costs estimated for a proposal be presented in enough detail that any significant cost can be compared with the actual cost accumulated for it. One fixed fee against one hours total passes no such test. So the deliverables named in the scope become the tagging scheme, every reconstructed block gets one, and that is what makes an out-of-scope column possible at all.

Then the ranking changes. On Teodor's timesheet Halveston Group was the best engagement of the year at $375.00 an hour, against $228.57 for Brackwell Foods and $208.33 for Norlander Ceramics. Reconstructed, Halveston is the worst at $160.00, behind Brackwell at $183.21 and Norlander at $187.07. The order reverses end to end. Halveston's 96 recorded hours were really 225, and 117 of those went to a weekly cash view the scope never mentioned.

How it works

  1. Send your records

    Time records however partial, invoices or fees, and the signed scope for each engagement.

  2. Add the calendar

    Optionally, a calendar export or file activity, so unrecorded hours can be estimated.

  3. Read both rates

    Each engagement's rate on recorded hours and on the fuller estimate, ranked side by side.

  4. Change the next scope

    See the out-of-scope pattern and the clause or rate to change in your next proposal.

What you get

  • Hours estimated from your timesheet, calendar and file activity, with no minute counted twice
  • The effective rate computed twice, on recorded hours and on reconstructed hours
  • Every hour matched to a deliverable in the signed scope, or to the column for the rest
  • The rules for turning calendar and file activity into hours written down, so you can check them
  • Which engagement the timesheet rated best of the year and the rebuild rates worst
  • The scoping change the pattern implies, named rather than left as a lesson

Common questions

Isn't reconstructed time just guessing?

It is an estimate with its rules written down, which is a different thing. A run of file edits with gaps under twenty minutes counts as one session, with a ten-minute tail. Anything under fifteen minutes is dropped rather than rounded up, and nothing is counted where another record already covers the time. Every estimated block says where it came from.

Can I bill the hours this finds?

No, and the whole page is built on that. Federal cost rules disallow a claimed cost that the records do not adequately support, and a calendar invitation is not a time record. On a fixed fee there is nothing to bill anyway. What the hours are for is the next quote and the next scope clause, where they are worth a good deal more.

Why not just fill the timesheet in properly?

Because the entries that go missing are missing for a reason. Nobody enters an hour they cannot charge for, and on a fixed fee that describes every hour of the engagement. The work that quietly eats a margin is exactly the work with no incentive to record itself, so the fix has to come from somewhere other than discipline.

How does it separate scope creep from ordinary delivery?

By tagging every reconstructed block to a named deliverable in the signed scope. A block that maps to nothing in it is out of scope, and it gets counted rather than absorbed into the engagement. Halveston's weekly cash view was never in the statement of work and it took 117 of that engagement's 225 hours.

What does the pattern usually turn out to be?

In this year it was the contact. Brackwell and Norlander both ran through the operations lead named in the scope, and both came in under eight percent out of scope. Halveston ran through a CFO who owned none of the deliverables, and half the hours landed outside them. The change is naming who may request work, not only what the work is.

So Halveston was underpriced?

The opposite, which is why the two splits stay apart in the table. Its 108 in-scope hours came to $333.33 an hour, well above his own target of $225. The fee was fine and the boundary was not. Repricing an engagement that was correctly priced and badly run is how you lose the next one. Whether you can take it is a separate check, in the restriction register.

Engagement Profitability and Rate Analysis

Describe what you need, add any files you have, and your workspace opens with the work already underway.