Guides Projects Reading the Project Profitability report

Reading the Project Profitability report

How Keepr compares what you quoted against the hours you actually worked, so you can spot the projects that are quietly losing you money.

Project Profitability is a Pro feature. Free users see an upgrade prompt instead of the report. The rest of this guide assumes you're on Pro.

Project Profitability answers one question: was the price I quoted actually worth my time? For every project with hours logged, Keepr divides the agreed estimate by the hours worked and compares the result against the rate you'd normally charge. You'll find it at Project Profitability - or click Reports in the sidebar and pick the Project Profitability card.

The Project Profitability report showing Completed and In progress sections, each with one row per project and columns for estimate, hours, effective rate, target rate and variance.
Each row is a project. The variance columns on the right show whether the quote covered the work.

What it measures (and why it uses the estimate, not the invoiced total)

The headline number is the effective hourly rate: estimate ÷ hours worked. That's what you actually earned per hour on the project, regardless of how the invoicing was sliced up.

Keepr deliberately uses the estimate rather than the total you invoiced. The question is “how accurately did I quote this project?” - and the input to that is the price you agreed, not the cash that happened to land. For invoiced revenue per client, the Revenue by Client report covers that.

The target rate cascade

To know whether the effective rate is good or bad, Keepr compares it against a target rate. The target is resolved in this order, taking the first one that's set:

OrderSourceWhere to set it
1Project hourly rateOn the project itself - Hourly rate field.
2Client hourly rateOn the client - used if the project doesn't have its own rate.
3Your default rateSettings → Hourly rate - the fallback if nothing project- or client-specific is set.

If none of the three is set, the target columns show - and there's no variance figure (Keepr won't make up a benchmark for you).

The three sections

Projects with hours logged are split into three buckets, in this order down the page:

SectionWhat it contains
Completed projectsArchived projects. The most reliable signal - the work is done, so the variance is final.
In progressActive projects. A grey caveat sits above this table: variance figures are noisy until the work wraps up, because you've already used the full estimate but the hours are still climbing.
Estimate not setProjects with hours logged but no estimate. They can't be measured yet - set an estimate to bring them into the tracking.

Within each section, rows are sorted worst variance first. The projects that lost you the most money are at the top - that's normally what you came here to find.

Projects with zero hours logged don't appear at all. There's nothing to compare against until time has been tracked.

Reading the columns

ColumnWhat it shows
ProjectProject title. A small note icon appears if you've added estimate notes - hover for the text.
ClientThe client this project belongs to (or No Client).
EstimateThe agreed value you saved on the project.
HoursLifetime hours logged on the project (e.g. 12h 30m).
BillableOf those hours, the ones marked billable.
Eff. rate (all)Estimate ÷ total hours.
Eff. rate (billable)Estimate ÷ billable hours only. Useful if you've logged a lot of non-billable admin against the project.
Target rateFrom the cascade above.
VarianceThe £ shortfall (or surplus): estimate minus (target rate × hours).
Variance %How far above or below the target rate the effective rate landed.
Last activityIn progress table only - the date of the most recent time entry.

The variance cells are colour-coded so the eye lands on them: red when you're more than 10% below target, green when you're more than 5% above, and neutral in between.

Drill into a project for the task breakdown

A project row expanded to show a sub-table listing each task with hours, billable hours and percentage of the project's total time.
Click any project row to expand its task breakdown.

Click a project row to expand a task breakdown: every task logged on that project with hours, billable hours and its share of the project's total time. That's usually where the answer lives - “OK, where did the hours actually go?”

There's a “View time entries for this project →” link in the breakdown that opens Time Details filtered to that project, in case you want to see the individual sessions.

If time was tracked against the project but with no task attached, the breakdown row will say so. Tag a task next time so this row breaks down more cleanly.

Filtering, exporting, printing

ControlWhat it does
Status dropdownAll Projects (default), Active only, or Archived only.
Client dropdownScope the report to a single client. Live search if you have a lot of them.
ExportCSV or Excel (.xlsx). Columns match the on-screen tables; the “Estimate not set” section is excluded (there's nothing measurable to export).
PrintUses your browser's print dialog.
There's no date range picker on this report. Hours, estimate and effective rate are lifetime project totals - slicing the hours to a period while keeping the estimate at full value would produce a misleading variance. For period-scoped hours on a project, use the Time Summary or Time Details reports.

Worked example

You quote a client £2,000 for a marketing site. No per-project rate, but your default is £45/hour. By the time the project is archived, you've logged 50 hours (all billable).

ColumnValue
Estimate£2,000.00
Hours50h 00m
Eff. rate (all)£40.00 / hour
Target rate£45.00 / hour
Variance−£250.00
Variance %−11.1%

The effective rate is below the target, so the variance cells go red. The £ figure (−£250) is the gap between what you agreed and what the work was worth at your normal rate - your quote left £250 on the table. Next time, factor in another 5 hours of contingency, or quote closer to £2,250.

How to use it

Use caseHow
Spot under-quoted projectsSort is already worst-first. Open the Completed projects section and look at the top of the list - anything red is a quote that didn't cover the work.
Refine your next quoteExpand the project's task breakdown. The tasks eating the biggest slice of hours are usually the ones being under-estimated.
Catch in-flight projects before they slipCheck the In progress section every week or two. If a project is already underwater while you're still working on it, decide now whether to scope back or raise the next quote.
Decide which clients are profitableIf the same client appears in red repeatedly, that's a pattern. The Client Profitability report rolls this up per client.

Frequently asked questions

Why doesn't this report use the amount I invoiced?
Because the question is “did I quote this project well?” - and the answer to that is the agreed value, not the invoicing pattern. Two projects with the same estimate are equally profitable for the time they took, even if one was paid up front and the other in three instalments.
What if I haven't set an hourly rate anywhere?
The Target rate and Variance columns show -. The effective rate still calculates (estimate ÷ hours), so you can still spot projects where the rate looks too low - you just don't get an automatic benchmark to compare against.
Why is one project missing from the report?
Either it has no hours logged yet, or you've filtered it out with the Status or Client dropdown. Projects with hours but no estimate appear in the third section, Estimate not set.
Can I limit it to one financial year?
Not on this report - it's a lifetime view by design. For period-scoped hours on a project, use Time Summary or Time Details.
What's the difference between Eff. rate (all) and Eff. rate (billable)?
All divides the estimate by every hour you logged. Billable divides only by the hours marked billable. If you log a lot of internal admin under the project, the billable figure tells you the rate you'd be charging out - but the “all” figure is the honest one for measuring whether the quote covered your real time.
Open Project Profitability to see which of your projects covered their hours.
Open Project Profitability