A 28-person management consultancy was running three systems, Harvest, Teamwork, Xero, and a two-hour Monday morning report. Partners made staffing decisions on last week's numbers. Here is the five-tile board that changed that, and the three outcomes in five months: a scope-creep engagement caught mid-project, a consultant's bench risk identified three weeks earlier than the old report would have shown, and a client commitment breach avoided before it was made.

This is a case study from a build we completed in late 2025. The client is a management consultancy, 28 people, split across four practice areas, with a partner-led model where each partner carries four to six active engagements at any time. We have anonymised the firm name and adjusted certain details, but the numbers are close to what they shared with us.

Before: three systems, one report, every Monday

Monday mornings started the same way every week. The finance manager opened Harvest, exported the previous week's time entries by person and project, and loaded them into a spreadsheet she kept specifically for this purpose. She then cross-referenced each project's hours against the budget in Teamwork, manually, because Teamwork and Harvest have no native sync that surfaces margin, and checked the billing status in Xero to see which projects had invoices raised and which were accumulating unbilled WIP.

The report she produced from this took between two and three hours to assemble. It landed in partners' inboxes on Monday afternoon. The weekly all-hands was Monday morning.

Partners ran the all-hands on last week's report, which reflected the previous week's position. For a firm where utilisation moves quickly, client priorities shift, projects pause, scopes expand, a five-to-seven-day lag in the core operational number was real exposure.

Three specific problems that came up repeatedly in our discovery call:

Bench risk appeared late. A consultant going unbilled did not show up clearly until the invoicing run at month-end, when the finance manager could see the WIP column had not moved. By then, two to three weeks of non-billable time had accumulated. The firm had no mechanism to flag a utilisation dip in week two rather than week five.

Project margin was invisible until close. Partners knew the project fee and could estimate hours, but the actual burn rate against budget, how many hours had been logged versus how many were left to deliver the scope, required manual assembly from Harvest and Teamwork. In practice, this happened at the end of an engagement, not during it. The consequence was that scope creep problems were discovered in the final billing run, not at the point where a conversation about change orders was still possible.

Staffing decisions ran on estimates. Allocating a consultant to a new engagement required knowing their current utilisation and their forward bookings. Harvest held their actual logged hours; Teamwork held their project assignments. Neither surfaced a number the partners could read in 30 seconds. Partners were using their own memory and a rough sense of who "seemed busy", accurate enough for day-to-day, not accurate enough when a consultant was at 95% and someone was about to assign them a two-week sprint.

What we built

The brief was focused: partners needed to see utilisation, bench risk, and project margin in one screen, updated to yesterday. The finance manager needed to cut the Monday prep time significantly. We connected three sources, Harvest, Teamwork, and Xero, and built a board with five tiles.

Live utilisation by person and team. Hours logged in Harvest for the current week, expressed as a percentage of the firm's target (78%). Rolls up by practice area and shows trend against the previous four weeks. Anyone below 60% for the week turns amber; below 45% turns red. The tile the partners check first on Monday morning instead of waiting for the report.

Bench risk, forward four weeks. Pulls Teamwork project assignments for the next 28 days and cross-references against target utilisation. Anyone booked below 65% for two or more consecutive weeks shows as bench risk. The tile surfaces this on day one of the problem window, not after it has run for a month.

Project margin tracker. For each active engagement: the agreed fee, hours logged to date from Harvest, percentage of budget consumed, and the estimated hours remaining to deliver the scope from Teamwork. When budget consumption exceeds scope completion by more than 15 percentage points, the engagement flags amber. When it exceeds 25 points, it flags red. Partners see this at any point during delivery, not only at close.

WIP and billing pipeline. Unbilled hours by project from Harvest, alongside invoice status from Xero, draft, pending approval, raised, paid. The finance manager's Monday view. Shows which engagements have billable time accumulating without a corresponding invoice in progress, so nothing falls through at month-end. Eliminated most of the manual cross-referencing step.

Partner portfolio summary. Each partner's active engagements, their current utilisation, and a simple flag if any of their projects are in margin trouble. One row per partner. The view that was previously assembled manually from three systems before every partner meeting.

Build time was seven days. Day one: discovery, mapping the relationship between Harvest projects and Teamwork projects (they used different naming conventions, which needed a reconciliation layer), agreeing the utilisation target, and defining exactly when a project should flag amber versus red. Days two and three: Harvest integration and the utilisation tile. Days four and five: Teamwork integration, bench risk tile, and project margin logic. Day six: Xero integration and WIP tile. Day seven: partner portfolio summary, review, and handover.

After: five months in

The Monday all-hands now runs on live data. Partners open the board before the meeting, or during it, if a question comes up, and the numbers are from this morning, not last week. The finance manager's prep time dropped from two to three hours to fifteen minutes: she reviews the WIP tile for anything that needs a manual check before approving invoice runs, and flags anything the board missed. The export-and-reconcile step is gone.

Three specific outcomes in the first five months:

An engagement caught mid-project before it became a loss. In month two, the project margin tile flagged an engagement at 71% of budget consumed when scope completion, per Teamwork milestones, was at 38%. Partners were aware the project had been running long but had not calculated the gap explicitly. With six weeks of delivery remaining, they opened a conversation with the client about a change order for two additional scope items that had been requested verbally but not formalised. The change order was agreed. The engagement closed without a write-off. Under the previous system, the budget overrun would have been discovered at the final billing run, when the only option was to absorb the loss or send an invoice the client had not expected.

Bench risk caught in week three, not week seven. In month three, the bench risk tile flagged a senior consultant projected at 44% booked for the following three weeks. Under the old system, this would have appeared in the Monday report at the end of month three, by which time four to six weeks of underutilisation would have accumulated. The partner responsible identified a client relationship with a standing retainer that had been running light and had a conversation with the client in week four. An additional three-week piece of work was scoped and agreed. The consultant's forward bookings moved to 81% for that window. The commercial value of the recovered time was approximately €18,000 at the firm's average blended rate.

A staffing conflict avoided before a commitment was made. In month four, a partner was about to confirm a two-week on-site sprint for a consultant on a new engagement. The partner portfolio tile showed the consultant already at 94% utilisation for the same two-week window, two Teamwork assignments that the partner had not been tracking. The conversation happened before the client confirmation rather than after, and a different consultant with capacity was allocated. A client commitment breach, and the relationship damage that follows from one, was avoided.

What made it work

The underlying data was already in all three systems. Harvest held every logged hour. Teamwork held every project assignment and milestone. Xero held every invoice and WIP balance. The problem was that nothing connected them, so the only person who understood the full picture at any given point was the finance manager, after she had spent two hours assembling it.

The most significant decision in the build was the reconciliation layer between Harvest and Teamwork. The firm had grown organically and project names in the two systems were not always consistent, a client engagement might be "Steinberg & Koch, Phase 2" in Teamwork and "Steinberg Phase 2" in Harvest, or split across multiple Harvest projects that mapped to a single Teamwork engagement. We spent most of day one mapping this correctly. Getting it wrong would have meant margin calculations that allocated hours to the wrong engagements. It would have been a plausible-looking board that was quietly wrong.

The other decision worth noting: we built the bench risk tile to look forward 28 days, not backwards. The finance manager's old report showed last week's utilisation. A consultant at 95% last week is not the problem, a consultant at 45% projected for the next four weeks is. Lagging indicators tell you what happened; the bench risk tile tells you what is about to happen while there is still time to change it.