Agencies & Consultancies

You know your revenue. Do you know your margin?

Most agencies can name their biggest client instantly and could not tell you which client is least profitable without a week of work. The data exists, in timesheets, in the project plan, in the invoices. It has just never been put in the same place. SheetAI joins it up and tells you where the money actually goes.

Audit-ready trailNo data trainingReversible per action
68.9%
Billable utilisation, below 75% target
Billable utilisation across professional services firms fell to 68.9%, short of the 75% benchmark. SPI Research benchmarked 403 firms including marketing and advertising agencies.
Source: SPI Research: 2025 Professional Services Maturity Benchmark
1%
Bill for all out-of-scope work
Only 1% of agencies say they successfully bill for all out-of-scope work, and 57% lose $1,000 to $5,000 a month to unbilled scope creep. From Ignition's survey of 273 agency leaders, reported by The Drum.
Source: The Drum, reporting Ignition's 2025 Agency Pricing & Cash Flow Report
39%
Average gross margin, a record low
Average gross profit margins for UK agencies turning over £1m or more fell to 39% in 2024, the lowest on record, against a 50% target. From BenchPress, The Wow Company's annual agency survey.
Source: Productive, summarising The Wow Company's BenchPress 2025
Agencies & Consultancies: illustration for SheetAI's agencies & consultancies use case
Agencies commonly discover that their largest client is not their most profitable one.

Delivered margin depends on hours actually worked against fee actually billed, and neither lives in the accounting system. When agencies finally compute effective hourly rate per client, the ranking usually differs from the revenue ranking, sometimes dramatically.

Source: Parakeeto: Agency Profitability Research

This page is about the operational analysis that determines whether a services business makes money: utilisation and capacity, project and client-level margin, scope creep against the original estimate, effective hourly rate by service line, pipeline against available capacity, and the multi-client reporting that has to go out every month regardless. SheetAI joins your timesheet, project, and billing exports inside the sheet, computes the metrics consistently, and produces the client-facing reporting without a person rebuilding the same deck twelve times. It is analysis of your own operational data. It will not tell you what to charge, and it cannot fix an estimate that was wrong before the work started.

Why agency profitability is so hard to see

Four structural facts about services businesses that explain the visibility gap.

Agencies able to state margin by project without a manual exercise

A minority

Revenue per client is in the accounting system. Hours are in a timesheet tool. Estimates are in a proposal document. Nobody owns the join, so it happens once a year at best.

Agency operations surveys

Profitability determined before delivery begins

Largely

The estimate sets the fee and the scope sets the hours. By the time delivery starts, most of the margin outcome is already fixed, which is why estimate-versus-actual tracking is the highest-value analysis available.

Services business economics

Non-billable time consumed by internal reporting

Significant

Client reporting, status decks, and internal financial packs are pure overhead. They are also the most repetitive and templated work in the business, the definition of automatable.

Practitioner experience

Utilisation targets set without capacity modelling

Common

A target rate applied uniformly across roles and seniorities, without modelling holiday, training, business development, or the fact that senior people sell. The number is met on paper and missed in cash.

Resource planning practice

The pattern: everything needed to answer 'which client is actually profitable' already exists in three systems that do not talk to each other. The analysis is a join and a set of ratios, genuinely not difficult, and reliably never done, because doing it by hand costs a week that nobody can bill.

Anatomy of an agency month-end

What actually happens in the last week of the month at a thirty-person agency, before any of it is automated.

1

Phase 1: Chase the timesheets

  • ›Remind the people who have not filled them in
  • ›Fix the entries booked to the wrong project
  • ›Reconcile against the project plan
⚠ Timesheet data arrives incomplete and late, which means every downstream number is provisional until Thursday.
2

Phase 2: Work out what to invoice

  • ›Milestones reached versus scheduled
  • ›Retainer hours used against entitlement
  • ›Pass-through costs and expenses
⚠ Overservicing is discovered here, at the point of invoicing, when the hours are already spent and unbillable.
3

Phase 3: Compute the margin

  • ›Join hours to blended cost rates
  • ›Compare against fee billed per project
  • ›Identify the projects underwater
⚠ The join is manual and fragile, so it gets done for the big projects and estimated for the rest, which is where the losses hide.
4

Phase 4: Build the client reports

  • ›Pull performance data per client
  • ›Rebuild the same deck twelve times
  • ›Write the commentary from scratch
⚠ Structurally identical work repeated per client, monthly, forever, and entirely non-billable.
5

Phase 5: Plan next month's capacity

  • ›Committed work against available hours
  • ›Pipeline weighted by probability
  • ›Identify the gaps and the overloads
⚠ Done in a separate spreadsheet with different assumptions, which is why the resourcing conversation and the finance conversation never quite agree.
Cautionary tale

The estimate is the whole ballgame

The Scottish Parliament building at Holyrood was estimated in the initial stages at somewhere between £10m and £40m. It was completed in 2004 at a cost of around £414m, more than ten times the upper initial figure. The Fraser Inquiry that followed found the causes were not primarily construction failures but a compounding series of scope changes, unclear client decision-making, and cost information that arrived too late to inform the decisions being made. The project's fate was substantially determined by how it was scoped and estimated, not by how it was delivered.

The lesson: Every services business runs a smaller version of this every month. The estimate fixes the fee, the scope drifts, and the information showing that it has drifted arrives after the money is spent. The remedy is not better estimating in the abstract. It is tracking actual against estimate continuously enough that the conversation happens while it can still change something. SheetAI computes that comparison against your live timesheet data and flags the projects crossing their threshold this week, not at invoicing.

Source: The Holyrood Inquiry (Fraser Report): Scottish Parliament

Who it's for

If you run a business that sells time, this is the page.

Agency Founders & MDs

Know revenue by client and have no reliable view of margin by client.

Operations & Delivery Directors

Balance committed work against real capacity using a spreadsheet nobody else can read.

Finance Managers

Rebuild the same profitability analysis monthly from three systems that disagree.

Account Directors

Produce client reporting monthly that is structurally identical and entirely manual.

Consultancy Partners

Track utilisation and realisation across a team where the seniors sell and deliver simultaneously.

Real agency workflows

The prompt, the join it performs, and the number you have not had before.

agencies_workbook.xlsx - SheetAI
You ask
“Join Timesheets!A:F to Rates!A:C on person, and to Invoices!A:E on project. Compute per client: hours worked, delivered cost at blended rate, fee billed, gross margin, margin percentage, and effective hourly rate. Rank by margin percentage, not revenue, and flag anything below 25%.”
SheetAI does
  • ✓Joins the three exports on their respective keys.
  • ✓Applies cost rates by person and seniority rather than one blended figure.
  • ✓Computes margin and effective hourly rate consistently per client.
  • ✓Ranks by profitability rather than size and flags the threshold breaches.
Formula written
=(SUMIFS(Invoices!D:D,Invoices!B:B,A2)-SUMPRODUCT((Timesheets!C:C=A2)*Timesheets!E:E*Rates!C:C))/SUMIFS(Invoices!D:D,Invoices!B:B,A2)
Result

Margin computed across 23 clients. The second-largest by revenue came in at 11% margin and the fourth-smallest at 61%, a ranking that reordered the following quarter's account strategy.

Everything a services business needs to see its own economics

Joins across timesheets, rates, estimates, and invoices; margin computed consistently; overservicing flagged while it is still actionable; and client reporting generated rather than rebuilt.

✓Client and project margin from raw exports
✓Effective hourly rate by client and service line
✓Estimate versus actual with early overservicing flags
✓Capacity modelling net of leave and non-billable time
✓Templated multi-client report generation
✓Quarter-on-quarter service line trends

Plays well with your stack

  • Time tracking exports (Harvest, Toggl, Clockify, Tempo)
  • Project tools (Asana, Monday, Jira, ClickUp)
  • Accounting exports (Xero, QuickBooks, FreeAgent)
  • Agency platforms (Productive, Scoro, Float)
  • CRM pipeline exports (HubSpot, Pipedrive)
  • Any CSV of hours, rates, or invoices

What agency month-end looks like

A representative thirty-person agency with twelve active clients, before and after the joins and reporting move into the sheet.

✕

Before SheetAI

~38 hours
  • Mon
    Chase timesheets; fix miscoded entries
    ~5h
  • Tue
    Work out what to invoice; discover the overservicing
    ~7h
  • Wed
    Join hours to rates to invoices for the major projects only
    ~9h
  • Thu
    Rebuild twelve client decks; write twelve commentaries
    ~12h
  • Fri
    Capacity plan in a separate model with different assumptions
    ~5h
✓

With SheetAI

~9 hours
  • Mon
    Timesheet gaps and miscodes flagged automatically
    ~1h
  • Tue
    Margin computed across all projects, not just the big ones
    ~2h
  • Wed
    Overservicing already flagged in week six; nothing new here
    ~1h
  • Thu
    Twelve client summaries generated; account directors edit
    ~3h
  • Fri
    Capacity modelled from the same data as the margin analysis
    ~2h

~76% reduction on a representative month-end at a thirty-person agency.

What SheetAI will not do

The analysis is only as good as the inputs, and some of the inputs are decisions rather than data.

✕

Fix bad timesheet data

If hours are logged late, to the wrong project, or in round numbers at the end of the week, no analysis recovers the truth. It will flag the patterns that suggest unreliable data: suspiciously round entries, systematic Friday bulk-logging, projects with no time against active weeks, but the fix is behavioural and belongs to you.

✕

Tell you what to charge

Pricing is a commercial and positioning decision involving your market, your differentiation, and your appetite. It can tell you what a client currently yields per hour and what your cost base requires; converting that into a rate card is judgement, not arithmetic.

✕

Make the resourcing decision

It models capacity, shows the constraints, and quantifies the gap. Whether you hire, subcontract, decline the work, or run the team hot for a quarter is a decision with consequences for people, and it should be made by someone accountable for them.

✕

Replace a conversation with the client

Detecting overservicing in week six is only valuable if somebody then has the conversation. The analysis creates the opportunity and the evidence; it does not create the willingness, which is usually the actual constraint.

“
We found out our second-biggest client was running at eleven per cent. We had been prioritising them for two years because of the revenue line. The analysis took an afternoon once the exports were in one place, and we had genuinely been meaning to do it since 2023.
Managing Director, digital agency (30 staff, 23 active clients)

Frequently asked

What agency and consultancy leaders ask before they look too closely.

What data do I actually need?

›
Three exports: hours by person and project, cost or charge rates by person, and revenue by project or client. Estimates make the analysis considerably more useful because estimate-versus-actual is where the early warning lives, but you can compute margin without them. Everything is a standard CSV export from the tools you already run.

How is this different from what my agency platform reports?

›
Platforms report well on the data they hold. The problem is that hours are in one system, rates in another, and invoices in a third, and the analysis you want spans all of them. This works on the exports in one place, which is why you can ask for margin by service line by quarter even though no single system holds all three dimensions.

Our timesheets are unreliable. Is this pointless?

›
Not pointless, but be honest about what you are measuring. It will surface the patterns that indicate unreliable data: round-number entries, bulk Friday logging, active projects with no hours, which is itself useful evidence. Directionally, even imperfect data usually reveals the client that is dramatically underwater. Precision requires better inputs and that is a management problem, not a tooling one.

Can it handle retainers and fixed-fee work?

›
Yes, and these are where margin visibility matters most. For a retainer the question is hours consumed against entitlement, tracked continuously so overservicing surfaces in week two rather than month three. For fixed fee it is hours against the estimate with the schedule elapsed alongside, because 80% of budget at 40% of timeline is the signal, not 80% of budget on its own.

Will it generate our client reports?

›
Yes, and this is often the first thing people automate because the return is immediate and uncontroversial. Define the structure once and it produces the per-client version from the performance data with drafted commentary on the material movements. Your account directors edit rather than build, which is a better use of them anyway.

Can it model capacity properly?

›
Yes, net of holiday, training, business development, and a non-billable allowance you set, by person and role rather than as one blended number. The headline utilisation figure is what hides the constraint: a team at 78% overall can be badly over capacity in one discipline for two specific weeks, and only role-level modelling shows you that.

Is our commercial data safe?

›
Your workbook stays in your account and nothing is published anywhere. Client rate data and margin analysis are among the most commercially sensitive things an agency holds, so treat the same access discipline you would apply to the finance folder. This is a tool inside your workbook, not a place data goes.

How long before we see something useful?

›
The first margin-by-client ranking usually takes an afternoon, most of which is locating and exporting the three files. It is also usually the most uncomfortable afternoon of the quarter, because the ranking rarely matches the revenue ranking and the difference has consequences for how the business is run.
Get started

Stop guessing which client pays.
Start ranking by margin.

Export your hours, your rates, and your invoices into one workbook and ask for margin by client. The ranking will not be the one you expect.

All use cases

Pay as you go, no subscription required