Agency resource management: Summary & key takeaways
The paradox: Professional services firms are overbooked and underbilled at once, and SPI Research puts 2025 billable utilisation at a record-low 66.4%.
The real cause: Weekly allocation decisions get made from disconnected data, so more headcount or a higher utilisation target won't fix it.
The fix: A Weekly Capacity Ledger tracks committed, tentative, buffer and non-billable hours per role, then forces a clear decision.
The decisions: When a role runs over, you re-scope, re-sequence, contract or hire, depending on the cause and how long the gap lasts.
The commercial link: Every ledger line is a margin decision, so resourcing belongs in the same system as budgets, retainers and invoicing.
Your designers are working late, your developers have gaps in their week, and the month-end report says the agency is underbilled. None of those facts contradict each other. They're three views of the same agency resource management problem.
Before I joined Teamwork.com, I spent nine years in agencies, where resourcing lived in a spreadsheet beside a basic timer. It was usually the same few people staying late while others left on time, and the team average looked healthy throughout.
The cause is structural: weekly allocation decisions get made from data that doesn't connect. So this guide skips the long list of signs of poor resource management and gives you the system I'd run instead, the Weekly Capacity Ledger.
Overbooked and underbilled at the same time
That structural problem has a number: 66.4%. SPI Research's 2026 professional services benchmark recorded that billable utilisation for 2025, the lowest in its survey history, against the 75% SPI considers optimal. It covers professional services firms across sectors rather than agencies alone, but agency leaders will recognise the pattern.
Delivery tells the other half of the story. On-time project delivery in the same benchmark was 73.8%, so roughly one project in four landed late.
If this were a headcount problem, one of those numbers would improve. Hiring would lift delivery, or trimming the team would lift utilisation. When both slip together, the problem is where the hours go each week, and who decides.
Our own research at Teamwork.com points the same way. In The Sprint to AI report, 42% of respondents said resource management is where their tools fall short, second only to data management and reporting. When the resourcing view is the weak link, every weekly decision inherits its blind spots.
A utilisation target won't fix that on its own, because it tells you where to land but not which role, client or week to change. What it needs is a weekly commercial decision system, and that's what agency resource management should be.
What agency resource management actually decides
Agency resource management is the weekly decision system that matches your team's capacity to client demand. It covers allocating people by skills and seniority, forecasting confirmed and pipeline work, and tracking utilisation against role targets. Done well, every hour you book is one you can deliver and bill.
It sits between two neighbours that often get lumped in with it. Project management owns what ships and when, while capacity planning owns whether you'll have the right people next quarter. Here's how resource management vs project management vs capacity planning splits the work.
Discipline
In my agency years, the weekly layer was the one held together by spreadsheets, while project plans and hiring plans lived somewhere else. That's a problem, because it's the only layer deciding whose hours go where this week.
Start from honest hours, not headcount
Before the ledger can decide anything, it needs an honest opening balance, and most agencies start from the wrong number. The wrong number is gross hours: headcount multiplied by the working week. It assumes nobody attends a meeting, pitches or takes leave.
For example, take a 10-person team on a 37.5-hour week. That's 375 gross hours. Say internal meetings, admin and leave take 75 of those hours, which leaves 300 net hours. Now hold back a 10% buffer on those net hours, which is 30 hours. That leaves 270 plannable hours, or 105 fewer than the headline figure.
A capacity buffer is the share of net hours you deliberately leave unbooked to absorb change requests, revisions and surprises. I'd hold 10–15% per role, and more for roles that field unplanned client support. Our guide to building a capacity model covers the longer-range version of this maths.
Distributed teams need one more adjustment. A developer six hours ahead overlaps with the team for only part of the day, so handoff-heavy tasks belong in those hours. Keep one shared leave calendar across regions, or your 270 honest hours will be wrong before you've decided who they belong to.
The Weekly Capacity Ledger gives every hour a column
Those 270 hours only become useful once you split them by role, and that split is the Weekly Capacity Ledger. It's a one-page, per-role view of the coming week: committed, tentative, buffer and non-billable hours. Whatever's left, positive or negative, is the balance you make decisions on.
Committed hours are signed delivery: projects, retainers and support. Tentative hours are pipeline work weighted by confidence, which the next section covers. Here's the Weekly Capacity Ledger for that same 10-person team in an example week.
Role (people)
The team total shows nine spare hours, which looks comfortable. Read the rows, though, and design is 12 hours over while development has 15 hours with nothing booked. Committed billable work comes to 214 of 375 gross hours, a utilisation of just 57%.
That's the SPI paradox on one page: overbooked in one role and underbilled across the team. An averages-only report would call this a quiet week. I'd rather see a minus sign in the design row on Monday than learn about it from a missed deadline on Thursday.
Utilisation still belongs in agency resource management, as one control signal inside the ledger. Read it by role, alongside the balance and the remaining buffer, and not as a single agency-wide target. If you want to manage utilisation as a practice, that guide goes further, and the utilisation rate calculator handles the arithmetic for any role.
Balances don't move freely between rows, either. Development's spare hours only cover design's shortfall if someone there has the right skills, so match skills before you move hours. A strategist can't cover a design shortfall, however many spare hours strategy shows.
A minus sign doesn't fix anything by itself, though. Before the ledger can trigger a decision, the tentative column has to be honest.
Pipeline and retainers: the hours nobody books
Picture the tentative column during a strong pitch week. A 60-hour rebrand is close, the client's keen, and nobody has booked a single hour against it.
Leave it out and it lands as a surprise; book it in full and you block people for work that may never arrive. Weight it by confidence instead: at 40%, that pitch enters the ledger as 24 tentative design hours. Those 24 hours are what tip the design row into the red.
A placeholder is a named but unassigned block of hours by role, with a start week and a confidence level. Leave anything under 25% out, weight anything between 25% and 75%, and treat anything above 75% as committed. Plan pipeline without guessing: Tentative Projects let you hold placeholder allocations for likely work, then convert them into a live project when the deal closes.
Retainers cause the opposite problem, because they're signed work that rarely shows up as a booking. A $15,000 monthly retainer at a $150 blended rate buys 100 hours a month, or about 23 hours a week. If those hours aren't reserved by role, the account quietly eats into everyone else's week.
Overservicing was the single biggest pain point I dealt with on accounts. Clients asked for more within the same retainer, and nothing in the spreadsheet showed the cost until the account stopped making money. Catch that drift before month-end: retainer budgets track hours against each retainer period and roll any under- or overspend into the next.
Estimates feed the committed column, so compare planned against actual hours by role after each project. As AI shortens some tasks, last year's estimates get less reliable, so update your estimating templates wherever the gap repeats. Once pipeline, retainers and estimates are honest, the balance column tells you something you can act on.
Four decisions the ledger forces every week
Four decisions cover every negative balance the ledger shows. The order matters, because each one costs more than the one before.
Re-scope first when the overrun traces back to one client asking for more than the SOW or retainer covers. In that case, raise a change order before touching the staffing plan. It's the cheapest fix, because it recovers revenue instead of adding cost.
Re-sequence next when the gap is temporary. If design is 12 hours over this week but has spare hours within three weeks, move a lower-priority milestone to protect the deadline that matters.
Contract when a role runs negative for two consecutive weeks and re-sequencing has run out of room. Freelancers work best with a notice period, a weekly hour cap and a short, repeatable onboarding. Book their onboarding and quality reviews as ledger hours, or the contractor's time will look free when it isn't.
Hire when the negative balance persists across your six-to-twelve-week forecast, or when weighted pipeline for a role keeps exceeding its buffer. That's a leadership call, based on a sustained trend rather than one painful month.
Positive balances need decisions too. Development's 15 spare hours could pull a milestone forward, absorb internal projects or support a pitch, and left unplanned, they're how underbilling happens.
The buffer protects people as well as margin. Gallup's research on employee burnout found that how people experience their workload influences burnout more than the hours they work. Unmanageable workload and unreasonable time pressure rank among its top burnout factors, and a ledger with no buffer produces both.
Write these triggers down before the first review, so nobody argues the rules while arguing the allocation. Triggers only work, though, if someone owns the call.
Who owns the ledger, and who breaks the tie
Ownership sounds like the easy part, yet it's where most ledgers stall: shared by everyone and owned by no one. The fix is one named owner and one named tie-breaker.
One resource or operations manager should own the ledger, keeping availability, leave and role data current and running the review. Delivery leads propose allocations for their projects. Sales and account leads own the tentative column and refresh confidence levels before each meeting.
The head of delivery breaks ties when two projects want the same person, and account continuity deserves real weight in that call. Staff turnover taught me that clients grow uneasy whenever their team changes, however good the output is. Leadership owns the slower decisions: utilisation targets and buffer levels each quarter, and hiring when the forecast trend demands it.
The review itself takes 30 minutes a week: changes since last week, each negative balance, the decision for each, and the updated plan. Once a month, extend it to estimate accuracy, utilisation trends by role and hiring or contractor signals. With owners, cadence and triggers in place, the whole system rests on a handful of terms worth defining precisely.
Key takeaways: the terms that make the ledger work
A Weekly Capacity Ledger is a per-role, weekly view of committed, tentative, buffer and non-billable hours that triggers re-scoping, re-sequencing, contracting or hiring. Net capacity is gross hours minus non-billable time and leave, and plannable capacity is net capacity minus the buffer.
A capacity buffer is the share of net hours deliberately left unbooked to absorb change. Billable utilisation is billable hours divided by available hours, and in agency resource management it's one control signal rather than the goal.
Where the Weekly Capacity Ledger lives in Teamwork.com
Teamwork.com is an agentic PSA (professional services automation) platform. Project tools can't manage the money, and teams resist traditional PSAs. Teamwork.com does both, so those terms run as one live ledger, with resourcing connected to budgets, retainers and invoicing. Every call you make in the review shows its margin impact. Here's where each ledger job runs, and what it stops going wrong.
Ledger job
See every role's balance before the review: the Workload Planner shows each person's capacity, including leave and non-billable time, against every booked project. When design goes negative, you drag an allocation to a teammate with spare hours, and both balances update straight away. The re-sequence decision gets made in the meeting itself, instead of becoming another follow-up task for later in the week.
)
Carry pipeline into budgets and invoicing: placeholders in Tentative Projects hold soft allocations, so a likely pitch shows up against the right role early. When the deal closes, the project goes live and its placeholders become real, budgeted allocations for named people. Those budgets then flow through to invoicing, closing the quote-to-cash loop without exporting to a separate billing tool.
Let AI flag pressure and suggest the fix: the AI Utilization Summary summarises each person's utilisation, so the control signal is ready before the review. The AI Smart Scheduler suggests who should take a task based on role, availability and workload. Our AI Teammates Scout, Flo, Dotty and Jack are live now, with Remi, a resource assistant, and Kash, a profitability partner, coming soon.
)
When Invanity, a digital agency, moved weekly workload management off a legacy tool and into Teamwork.com, billable and non-billable time sat in one view. Invanity cut project planning time by 50%, reduced weekly workload management by 80% and improved on-time delivery by 20%.
That's how an agency stops being overbooked and underbilled at once: one ledger, reviewed weekly, with the money attached.
)
)
)
)
)
)
)
)
)