Skip to main content

Client Profitability

Does what a client pays us cover the time we spend on them? An estimate — and this page is honest about how good the estimate is.

Written by Schae Lilley

Where to find it

Sidebar → Client HealthClient Profitability

Who can see it

Admins and above

Can you change data here?

No — read-only, with Excel export

How fresh is it?

Hours are read fresh; revenue can be a few hours behind

What it's for

We bill clients on retainers, but the real cost of serving a client is the delivery team's time — and no finance system captures that. This page joins the two sides:

  • Revenue — contracted monthly revenue per client, from the same finance data behind Summary, so the two reconcile.

  • Cost — the hours employees self-report per client in their weekly check-in, multiplied by a single blended rate of $175 per hour.

The result is a per-client profit-and-loss proxy: which clients are we losing money on, which are we over-servicing, and is margin healthy across the book?

Read this first: the cost figure is an estimate

It is not payroll. It doesn't use actual salaries, seniority mix, contractor costs, or media and outsourcing pass-through. It is self-reported hours × one flat rate.

Which is why this page carries its own honesty gauge — the Pulse Coverage card. If only 60% of delivery staff submitted their hours, roughly 40% of the cost is invisible, and every margin on the page is optimistic.

Check Pulse Coverage before you trust anything else here. For finance-grade cost, use Divisional P&Ls.

What you'll see

Eight cards:

Card

What it means

Revenue (MRR)

Contracted monthly revenue for the clients in view

Employee Cost

Reported hours × $175, with the formula shown so the assumption stays visible

Net Profit

Revenue minus that cost

Avg Margin

Blended margin. Red below 0%, orange to 40%, green above

Clients Analyzed

Count after filters

Unprofitable

Count with negative profit — turns red above zero

Pulse Coverage

The share of delivery staff who submitted hours. Red under 50%, orange under 75%, green above

Hours Distribution

What share of all reported hours were client-facing

A margin chart sorted worst-first, a revenue-versus-cost chart, and a sortable detail table — client, revenue, hours, employees, cost, profit, margin — defaulting to worst profit first.

Plus filters for month and client, and an Excel export.

How to use it

  1. Monthly margin review. Open the page (it defaults to the most recent month with data), read the Unprofitable card, and look at the reddest bars. The table is already sorted worst-first. Which accounts need a staffing reduction, a rescope, or a price conversation?

  2. Check the data before deciding anything. Look at Pulse Coverage. If it's orange or red, costs are understated and some "profitable" clients aren't. Chase submissions on Employee Pulse before making staffing calls on this data.

  3. Investigate one client before a renewal. Pick them in the filter, or search their name from global search. Compare revenue against cost and see how many people are logging time. Is the account over-serviced relative to its retainer, and by how much a month?

  4. Spot over-servicing patterns. Sort by hours or by number of employees, descending, and cross-check margin. A mid-size retainer with many people logging time is a resourcing smell.

  5. Track non-billable drag. Watch Hours Distribution month over month. A falling client-facing share means delivery time is leaking into internal work.

  6. Export for finance. Filter, export, and hand it over for real modelling with actual salary data.

Traps worth knowing about

These aren't edge cases — they come up every month.

A client showing 100% margin almost always means nobody logged time against them. The page includes clients with revenue but no reported hours, and zero hours means zero cost, which computes to a perfect margin in green. Always read margin alongside the Hours column. If hours are 0, the margin tells you nothing.

Low Pulse Coverage silently understates cost. Treat every margin as an upper bound whenever that card isn't green.

Revenue can be borrowed from another month. When a client has logged hours in a month with no revenue posted yet, the most recent available month's revenue is used as a stand-in. Helpful when finance lags, but it means per-client revenue isn't always literally that month's contract value.

The current month is always partial. Check-ins are weekly and finance lags for the in-flight month. Base decisions on a closed month.

"All Months" mode double-counts employees. The Employees column adds up per-month distinct counts, so one person active for six months counts as six. Pulse Coverage also changes meaning, becoming "ever submitted".

Hours land in the month they were submitted. A check-in submitted in the first days of a month may describe the last week of the previous one.

Absurd hours are capped, not removed. A single client line above 250 hours in one submission is clamped to 250 — which catches "2620" typed instead of "26.20". But 250 hours still lands as roughly $43,750 of cost, so a known typo is worth flagging even though the damage is capped.

Good to know

  • The $175 rate, the 40% margin threshold, the coverage cutoffs and the hours cap are all set in the app, not configurable, and not documented as official finance policy. Confirm with Finance before quoting them as company standards.

  • "Delivery employee" — the Pulse Coverage denominator — means anyone leading at least one retained account. So editing leads on Manage Leads, or an Account Director change made directly in Nova, changes that denominator without anyone touching this page.

  • VABO and churned clients are excluded from revenue, matching Summary. Clients with $0 revenue are hidden entirely.

  • You can deep-link here from global search — searching a client name offers a Client Profitability shortcut that pre-filters to them.

Common questions

Is the cost real payroll? No. Self-reported hours × a flat $175. Directional only. Use Divisional P&Ls for finance-grade cost.

Why does a client show 100% margin? Nobody logged hours against them. Check the Hours column.

What is Pulse Coverage and why should I care? The share of delivery staff who submitted a check-in that month. It's the trust gauge for the entire cost side of this page — at 60% coverage, 40% of delivery time is invisible.

Why don't the numbers match mid-month? Check-ins are weekly and finance lags for the open month. Use a closed month.

Someone logged an absurd number of hours. Capped at 250 per client line per submission — still worth flagging.

Can I change the $175 rate or the 40% threshold? Not from the app. They're set in the code, and neither is documented as official finance policy.

How do I fix wrong hours, or a missing client? Hours are entered in the weekly check-in in Nova, so corrections happen there. A missing client either had no revenue in the period, or no hours and no posted revenue.

Why did the delivery-employee count change when nobody touched Manage Leads? Account Director assignments made directly in Nova flow into Signal and can change who counts as a delivery employee. See "Good to know".

Does the revenue match Summary? Yes — same source and same filters. Two local differences: $0-revenue clients are hidden, and months missing revenue borrow the latest available figure.

Related

  • Employee Pulse — the drill-down for Pulse Coverage. Fixing coverage there improves accuracy here

  • Divisional P&Ls — the finance-grade version, with real personnel cost

  • Summary — the same revenue backbone

  • Manage Leads — defines who counts as a delivery employee

  • Portfolio Review — client health alongside the economics

Did this answer your question?