← All posts

How small agencies track billable output across clients

August 17, 2026 · 6 min read · J, BeaconQ

You didn't start an agency to run a timesheet department. You started it because you can do work most shops can't, and you wanted a small group of very good people doing it — nine or twelve of them producing what a forty-person agency produces, with none of the layers.

Then you signed the sixth client. And now, every Friday, the same question sits there without a clean answer: where did this week actually go, and which client paid for it?

This is the post I wish someone had written for me. It's the system small agencies use to get an honest per-client view of output — without turning into the person who chases people for timesheets.

The real problem isn't time tracking

Most agencies already track time. Badly, but they track it. The problem is that time entries alone can't answer the three questions that decide whether the agency survives its own growth:

1. Which clients are actually profitable? Not by invoice size — by hours consumed against fee. 2. Is the work moving, or just accumulating hours? Twelve logged hours on "Acme — website" tells you nothing about whether Acme's website got closer to launch. 3. Who is quietly overloaded? The person carrying three demanding clients rarely says so until they resign.

A timesheet answers none of these on its own. It gives you a pile of hours with no shape. What you need is hours *attached to work*, and work *attached to a client outcome*. That's the whole trick, and it's less effort than what most agencies do today.

Step 1 — Make the client the top-level container, not a tag

The first thing that breaks in a growing agency is that client work lives everywhere: a board per client in one tool, a shared drive folder, a Slack channel, a spreadsheet of retainer hours. Nothing reconciles.

Give every client one container that holds everything billable: the current scope, the work in flight, the people assigned, and the hours. When somebody asks "how are we doing on Acme?", the answer should be one place, not four.

Practically, that means: client → engagement/objective → the tickets that deliver it → time logged against those tickets. Time logged against a ticket is automatically time logged against a client. Nobody has to remember to categorise anything at the end of the week, which is precisely when nobody remembers anything.

Step 2 — Track output alongside hours, not instead of them

Hours are an input. Clients renew based on outputs. If your Friday view is purely hours, you'll defend your invoices with the least persuasive number you have.

For each client, keep both columns visible:

What you seeWhat it tells you
Hours logged this weekCost, capacity, retainer burn
Tickets moved to doneWhat the client actually received
The engagement's key resultsWhether the retainer is producing the outcome they bought
Who worked on itLoad balance, and who to credit

The moment you can say "42 hours on Acme this month, here are the eleven things that shipped, and the launch date moved from November to September" — you're not justifying an invoice any more. You're reporting a result. Renewal conversations change character entirely.

Step 3 — One weekly check-in replaces the chase

The reason timesheets are late is that logging time is a chore with no reward for the person doing it. The fix isn't nagging; it's attaching it to a ritual that gives them something back.

One written check-in per person, per week, three prompts:

1. Shipped — what went out, and for which client. 2. Blocked — what's stuck, and what you need from me. 3. Next — the focus for next week.

Five minutes to write, async, no meeting. You read the whole team in ten. And here's the part that matters for billing: when someone writes "shipped the Acme migration, blocked on their DNS", the time entries around it stop being abstract. The check-in and the hours corroborate each other, and gaps become obvious without an interrogation.

Steal the three prompts and run them in a shared doc if you like. The ritual is worth more than any tool.

Step 4 — Review utilisation monthly, capacity weekly

Two different questions, two different cadences.

Weekly, look at capacity. Who is over their sane hours, who is under, which client is eating more than its share. This is a fifteen-minute scan that prevents both burnout and the "we're slammed" reflex that stops you selling.

Monthly, look at utilisation and profitability. For each client: fee, hours consumed, effective hourly rate, and outputs delivered. You will find at least one client whose effective rate is half your others'. That's not a reason to panic; it's a reason to re-scope, re-price, or exit at renewal — a decision you can only make when you can see it.

The agencies that grow past this stage aren't the ones that work harder. They're the ones that notice a bad-fit engagement in month two instead of month fourteen.

What to deliberately not track

There's a version of this that goes wrong, and it goes wrong in a specific way: someone decides that if a little visibility is good, monitoring must be better. Screenshots. Idle timers. Activity percentages.

Don't. On a team of nine there's nowhere for that to hide, and the message it sends is that you don't believe your people work unless you're watching. Your best people — the ones who could leave tomorrow — hear it loudest. You also end up supervising the measurement rather than the work, because activity scores are trivially gamed.

The test for anything you add: does it measure work, or does it measure presence? Track work. Ignore presence. Billable output is work. A mouse-movement percentage is presence.

Where BeaconQ fits

For three people and two clients, a spreadsheet is genuinely fine. The friction arrives somewhere around client four and person six: objectives in one place, tickets in another, check-ins scattered through chat, hours in a fourth tool, and a founder spending Sunday evening reconciling all of it into something that resembles a report.

BeaconQ is the one-tab version of the system above — objectives and key results per engagement, sprints and tickets underneath them, time logged against the actual work, weekly written check-ins, and recognition when someone ships something good. Built for growing companies up to 300 people and priced like it: free to start, one flat price after, no per-seat fees, so adding the tenth person doesn't cost you anything.

Not so you can watch your team. So that on Friday you can see what each client got, what it cost, and what's next — in about the time it takes to drink a coffee, and then get back to the work you started the agency to do.

Keep your team pointed at the goal that matters.

BeaconQ is work tracking built for growing companies up to 300 employees — objectives, sprints, tickets, check-ins and time in one tab. One flat price, no per-seat fees.

Start free →