Case Studies Services How It Works Reviews Book a Discovery Call
← All case studies
Case Study · Agency Finance

A contractor finance system where nothing arrives incomplete.

A complete invoice and expense workflow for a growing agency, from the contractor pressing submit to a monthly report the founder did not have to ask for.

Client
Growing agency
Area
Invoices and expenses
Platform
ClickUp + AI agent
Spreadsheets
Zero
Every invoice from every contractor in one list, grouped by month and tagged by department.

Contractor names, invoice amounts and staff photographs are redacted in red throughout.

The challenge

Paying contractors with no finance system behind it.

The founder was paying several contractors every month with no finance system behind it. Invoices arrived through Slack, email and direct messages. Amounts were checked by hand. Contractors could see things they should not. Expense tracking meant digging through spreadsheets. Every month closed with manual work and open questions.

The solution

I built the whole workflow in ClickUp with one rule at its centre: if it is not submitted in ClickUp, it did not happen. The system has four parts:

01
Invoice submission formContractors submit through a form with every required field and the invoice PDF attached. Each submission creates its own tracked task, and no contractor ever enters the workspace.
02
Centralised invoice trackingOne list holds every invoice with status, amount, submission date, due date, department and month. Views by month and by contractor give the founder the whole picture.
03
An accounting agentA configured agent reviews invoices, keeps running totals of paid against pending, answers questions in messages, and refreshes the monthly summary on its own.
04
A written procedureThe workflow is documented inside ClickUp: submission, approval and reporting, so the process survives the agency adding people.
Contractor submits→Task created→Assigned for approval→Agent produces the report→Monthly summary updates itself

The chain runs end to end without anyone touching a spreadsheet.

What was actually wrong

Two problems pulling in opposite directions.

The founder called it a tracking problem. Underneath it were two problems that pull in opposite directions, which is why it had stayed unsolved.

The first is privacy. Contractors are not employees. They work alongside each other without being colleagues, and what one of them charges is not the business of the next one. Any system where invoices sit in a shared place solves the tracking and creates a different problem the day somebody scrolls.

The second is that finance only works if the data arrives complete. An invoice missing its month, its department or its currency is not a small problem to fix later. It is the reason month end takes a week.

A shared spreadsheet fails the first. A chat thread fails the second. The structure that solves both is a form:

A form has no inbox to browseThe contractor sees the fields and nothing else, so privacy is a property of the structure rather than something somebody has to remember to protect.
A form can refuseRequired fields mean an incomplete invoice cannot be submitted at all, so nothing arrives needing a follow up message to make it usable.
A form creates the recordThe task exists the moment the contractor presses submit, already carrying everything the finance side needs to act on it.

Before

  • Invoices arriving by Slack, email and message
  • Amounts checked by hand against the attachment
  • Chasing a missing detail meant another round of messages
  • Spend per department meant a spreadsheet exercise
  • Month end closed with open questions

After

  • One form per invoice, and only the form
  • The task exists the moment submit is pressed
  • Required fields mean nothing arrives incomplete
  • Department tagged on entry, spend is a filter
  • The monthly summary refreshes itself

Why the golden rule had to be absolute

If an invoice sent by message is ever accepted, every contractor learns that the form is optional, and within a month the system holds some of the invoices instead of all of them. A finance system that is nearly complete is worse than no system, because people trust the numbers anyway.

What I built

Every number here is readable in the screenshots.

9
Required fields
Captured at submission, so nothing arrives needing a follow up
1
List
Every invoice from every contractor, in one place
4
Departments
Tagged on entry, so spend by function is a filter not an exercise
3
Views
By month, by contractor, and the submission form itself
3
Agent triggers
Mention it, message it, or assign it the monthly summary
0
Spreadsheets
Anywhere in the chain, from submission through to the report

What the form asks for, and why each one earns its place

Contractor and departmentWho is being paid and which budget it lands in.
Invoice month and yearSo a late submission still books to the right period.
Submission date and amountThe two numbers every report is built from.
CurrencyBecause an agency paying across borders cannot assume one.
Invoice numberThe contractor's own reference, for when something is queried.
The invoice PDF itselfThe document of record, attached to the task, not to an email.

None of these are unusual. The point is that all nine are mandatory at the moment of entry, which is the only moment when the person who knows the answer is actually present.

The field nobody thinks to add until it is too late

Currency. An agency paying people in different countries and not capturing it at entry ends up with a column of numbers that cannot be totalled. It is a dropdown that takes one second to answer and saves an argument at the end of the year.

01 · Submission

Contractor invoice submission form.

The workflow starts here. One form per invoice, PDF only, every field the finance side needs required before it will submit.

The submission form as a contractor sees it. Nothing else of the workspace is visible to them.

The form does two jobs at once. It creates a tracked task in the finance system the moment a contractor presses submit, and it keeps contractors out of the workspace, so nobody sees anyone else's rates or invoices. Privacy holds without anyone managing it.

The quiet benefit

Because the form is the only way in, the founder never has to decide whether a particular message counts as an invoice. There is no judgement call, no inbox to triage, and no contractor wondering whether their invoice was seen.

02 · Tracking

Centralised invoice tracking.

Every submitted invoice lands in one list, grouped by month, carrying its status, file, submission date, amount, due date, assignee and department.

The invoice list grouped by month, with payment status, due dates and department tagging. Contractor names, amounts and staff photographs redacted.

Separate views by month and by contractor mean the founder answers a finance question in seconds rather than assembling it: what is paid, what is pending, and what each department costs.

Department tagging is what turns a list of invoices into an expense report. Email marketing, management, recruiting, software and web. Each invoice is categorised on entry, so spend per department at month end is a filter instead of an afternoon.

Two views, one list, nothing duplicated

Grouped by month it answers what this month cost. Grouped by contractor it answers what somebody has been paid across the year. Same records underneath, so there is no second place that has to be kept up to date and no chance of the two disagreeing.

03 · Automation

The accounting agent.

On top of the tracking sits a configured agent that works as the founder's accounting assistant.

The agent's configuration: its role, its scope, and the three triggers that keep reporting automatic.
It reads the real dataPulling amounts and dates from the fields, and falling back to the attached invoice file when a field is missing.
It tracks paid against pendingWith running totals by contractor, by status and by month, so a problem shows up early.
It reports without being askedMention it on an invoice task for an instant breakdown, message it for a summary, or assign it the monthly task and it refreshes that month itself.
It keeps a paper trailAlongside the summaries it maintains a structured view inside the finance space, so every number can be checked.

Why the fallback matters more than it sounds

An agent that only reads fields breaks the first time somebody leaves one empty, and then nobody trusts it again. Reading the attached invoice when a field is missing is what keeps the numbers right on the imperfect month, which is every month.

Why three triggers and not one

Because the founder asks in three different situations. Looking at one invoice, wanting a quick total, and closing the month. A tool that only answers one of those gets used once and then forgotten, so each way of asking had to reach the same agent.

04 · Documentation

The written procedure.

A system only scales if people follow it the same way every time, so the whole workflow is documented inside ClickUp where the work happens.

The finance procedure: the workflow end to end, the golden rule, what the system is for, and the contractor's own steps.

It covers the submission process step by step, the approval flow, the reporting logic, and the rule that holds the rest together. Invoices sent by Slack, email or message are not valid.

If it is not submitted in ClickUp, it did not happen.

This is what makes onboarding a new contractor a five minute job rather than a conversation.

Who a written procedure is actually for

Not the people who already know. It is for the person who joins in eight months, when everyone who built this has stopped thinking about it and nobody remembers why invoices are refused if they arrive any other way.

The outcome

Month end in minutes, not a week.

The founder went from chasing invoices across Slack and email to one system with contractor privacy, a single invoice pipeline, structured tracking by month and department, and reporting that happens on its own.

Month end reviews take minutes, the numbers are current, and the system absorbs new contractors without adding manual work.

What the founder can answer without asking anyone

What I am not claiming

There is no before number here. The old process produced nothing to measure, which was most of the problem. What I can show is the system, and every screenshot on this page is the live workspace rather than a demo built for a portfolio.

How I run a project

Five steps. No surprises.

01AuditFind the real shape of the work, not the shape of the tool.
02MappingDesign it on paper and agree it before anything is built.
03BuildConstruct it alongside live work, never on top of it.
04TrainingWalkthroughs and written guides, one per role.
05LaunchMove across, close the old way, then stay on for a month.
← Previous case studyEcommerce Operations System

Want a system like this
for your operation?

Book a free discovery call. We'll talk about where things are breaking, what needs to be built, and whether we're a good fit.

Book Your Discovery Call →