ReflectHub treats labor as a first-class cost, not a footnote. Every hour your team logs against a task is priced with that person's hourly cost rate and rolled into actual cost alongside expenses. This happens automatically, at the rate that was in force on the day the hours were logged. On labor-heavy jobs the biggest cost line is often the one no invoice ever arrives for; this feature makes it visible without anyone maintaining a spreadsheet on the side.
Why it matters
Subcontracts and material invoices leave a paper trail. Your own crew's time does not — until someone costs the hours, a self-performed job can look comfortably inside budget right up to the month it isn't. With cost rates set, logged time becomes cost the moment it is logged, and your forecast and margin figures reflect it the same day.
Setting cost rates
Cost rates live in company settings, under Settings → Cost rates. The Hourly cost rates table lists every company member with their Current rate, the Since date it took effect, and their rate History. Members without a rate carry an Unrated badge.
To add a rate, use Add rate and fill in three fields: Member, Hourly rate (for example €45.00), and Valid from. The rate applies to worklogs dated on or after the valid-from date; earlier periods keep whatever rate was in force then.
Only owners and admins can open this page. Project managers and members never see the rate list.
Rates are effective-dated
A rate change never rewrites history. When someone's cost changes — a raise, a role change — you add a new row with a new valid-from date. Worklogs keep the rate that was in force on their date, so last quarter's job costs do not silently move when this quarter's rates do.
Editing a rate row in place is possible, but it is for corrections: it changes the cost of every worklog in that row's period. For a real rate change, prefer Add rate with a new valid-from date. Deleting a rate makes worklogs in that period fall back to the previous rate — or become unrated if there is none.
Every rate addition, edit, and deletion is recorded in the finance event log, so there is always an answer to "who changed this rate, and when."
How labor cost is calculated
The formula is deliberately simple:
labor cost = logged worklog hours × the rate effective on the day the hours were logged
The effective rate is the member's most recent rate whose valid-from date is on or before the worklog date. Nobody types labor cost anywhere — it is derived from worklogs and rates, and it updates as soon as either changes.
Where labor cost appears
Labor shows up as its own line next to expenses everywhere actuals are shown:
- Project Finance overview — the Labor Cost card shows total hours logged, the labor cost, and a labor-versus-expenses split of actual cost. A Per-person breakdown lists each person's hours and cost. The Actual Cost tile splits its figure into expenses and labor.
- Cost control grid — each task's actual cost carries an expenses/labor subline, and the XLSX export separates Actual - expenses and Actual - labor columns.
- Task view — each task shows a read-only Labor Cost figure with a Breakdown popover listing labor by person.
Because labor feeds actual cost, it also feeds everything built on actual cost: budget consumption, the cost performance index (CPI — earned value divided by actual cost; see the Forecasting guide), the forecast at completion, and project margin. Priced hours move the forecast the same way a posted invoice does.
Unrated hours
If someone logs time and has no rate covering that date, ReflectHub does not silently cost the hours at zero and move on. The hours are counted at €0.00 and flagged as unrated wherever labor cost is shown. The Labor Cost card, for example, shows "12 h unrated — counted at €0.00" with a link for owners and admins to set the missing rate. The per-person breakdown marks each person's unrated hours as well.
Treat an unrated flag as a to-do: until the rate is set, actual cost and every figure derived from it are understated by exactly those hours.
Who sees what
Rates are sensitive; derived cost is operational. The access model reflects that:
- Owners and admins see and manage the rate list, and see labor cost everywhere.
- Project managers see per-person labor cost and hours on their projects — enough to run the job — but have no access to the company rate list.
- Members see neither rates nor labor cost figures.
One consequence is accepted by design: a manager who sees a person's hours and cost on a project can work out the rate. The trade is deliberate — the owner sets rates, and the manager sees real per-person cost on their own jobs.