Case studies / Marketing agency
Case studyJob profitability during delivery for a multi-office agency
A marketing agency group with several offices brought timesheets, supplier costs and billing into Odoo, so profit by job is visible while the work is still under way.
Overview
An independent marketing agency group with offices in several cities, covering creative, digital, media and events. It had grown by adding specialist agencies, each of which kept its own tools when it joined.
Scale. Four offices, hundreds of staff, many retainer and project jobs running at once, and large supplier and media spend passed through to clients.
The challenge
Ask the group's managing partners which clients made money and they would give a confident answer. Ask them which jobs, and the answer would arrive about two months after the job had finished.
Timesheets, supplier invoices and billing sat in different tools. Staff recorded time in one system, if they recorded it at all; production and media costs arrived on supplier invoices in another; and account teams raised client invoices from a third, working from email and memory.
Profit by job was only known after the fact. By the time a project's real cost was clear, there was no chance to recover scope creep, renegotiate a fee or move people to more profitable work.
Billing lagged delivery. Retainers were invoiced late, milestones were missed and recharges for supplier costs were sometimes forgotten entirely, which left the agency funding its clients' campaigns.
Timesheets were unpopular. Staff saw them as surveillance with no benefit, so compliance was patchy and the data that did exist was not trusted.
The solution
Every client engagement in Odoo is a project with jobs, budgets and billing rules. Time, expenses and supplier costs are booked against the job, so its cost builds up in real time and can be compared with the fee or retainer at any point.
Timesheets are quick to complete on desktop or mobile and feed resource planning directly. Managers see who is over- or under-loaded next week and can move people before deadlines slip.
Supplier and media costs are controlled through purchase orders raised against jobs. Supplier invoices match those orders, and recharges flow to client billing automatically, so pass-through costs are no longer lost.
Retainer and milestone billing runs from the contract rules on each project. Results for each office and legal entity are consolidated for the group, with profitability by job, client and team available every month.
Expense and card feeds bring staff spending straight into the right job, and client billing portals receive invoices in the formats large clients require. Bank feeds reconcile payments, and group reporting draws on the consolidated figures without manual exports.
The engagement
- Six months
- Five specialists
- Job structures and billing rules, Odoo projects, job costing, timesheets, resource planning, supplier cost control, retainer and milestone billing and multi-entity consolidation, five integrations and an office-by-office rollout.
Integrations
- Resource planning tools
- Expense and card feeds
- Client billing portals
- Banks
- Group reporting
How we delivered it
- 01
Agree job structures
Five weeks
We agreed job structures, cost categories and billing rules with account directors and finance, including how retainers, fixed-fee projects and pass-through costs should be treated.
- 02
Configure and build reports
Nine weeks
We configured projects, timesheets, supplier cost control and billing in Odoo and built a profitability view for each job, client and office, designed with account teams so it answered their questions first.
- 03
Migrate WIP and train
Four weeks
Open jobs and work in progress were migrated and checked with each account team. Training focused on the reports staff would use, not just the screens they would fill in.
- 04
Office rollout
Eight weeks
Offices went live one at a time. Monthly profitability reviews started in each office from the first month, using the new data in front of the people who produced it.
Results
- Job profit visible while work is under way
- Faster, more complete retainer and milestone billing
- Supplier recharges captured on every job
- Weekly utilisation by team and office
Job profitability is now visible during delivery. Account directors see when a job is drifting over budget and can discuss scope with the client while the conversation is still possible.
Billing became faster and more complete. Retainers go out on time, milestones are invoiced as they are reached and supplier recharges are captured on every job.
Utilisation is tracked weekly by team. The group has used it to rebalance work between offices and to make hiring decisions on evidence rather than on who shouts loudest.
Timesheet compliance rose once staff saw the reports their time powered. When designers could see that their hours had won the argument for a bigger fee, the timesheet stopped feeling like a chore.
Finance has gained time as well. Month-end no longer involves chasing account teams for recharges and accruals, because the data is already in the job, and the group close now runs on a predictable timetable.
We used to find out a job lost money at the Christmas party. Now we find out in week three, when we can still fix it.
What made the difference
Staff accepted timesheets once they saw the reports they powered.


