> For the complete documentation index, see [llms.txt](https://help.agencydesk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.agencydesk.io/jobs/recon.md).

# Recon

Recon is where an agency finds out what a Job actually earned. Tracked time costed at real resource rates, supplier margin, meeting cost, and true nett margin, all in one place.

**Recon** is where a Job stops being a plan and becomes a verdict. Every hour your team tracked, every supplier invoice you carried, every meeting you sat in, and everything you billed, reconciled into one answer: what did this Job actually make?

Most agencies answer that question with a spreadsheet, weeks late, using an average cost per head and a lot of goodwill. Because Agencydesk was built exclusively for agencies, Recon is built into the Job itself. It costs the actual people who did the actual work at their actual cost to the business, subtracts what you spent with suppliers, prices the time you spent in meetings, and reports the margin that is genuinely left.

## What Recon answers

### Did we actually make money on this Job?

Everyone has a feeling about whether a Job went well. Recon replaces the feeling with arithmetic. Every input from the team and the agency is summed in one place, so the answer accounts for the hours that overran, the supplier costs that crept up, and the meetings nobody counted.

### What is our true nett on this Job?

Gross margin is what is left after the cost of delivering the work, both your own people and your suppliers. **Nett margin** takes the meetings off as well. It is the number that tells you whether the Job paid for the studio that delivered it.

### Is a high-turnover client building the agency or quietly hurting it?

Revenue and profit are not the same thing, and a client can be your biggest biller while sitting near the bottom on margin. Running [Multi-Job Recon](/admin/reports/multi-job-recon.md) across that client's Jobs shows whether the volume is carrying the agency or absorbing it.

### Who is carrying this Job, and who is eating the margin?

Time Recon shows every assigned person's tracked time against their estimate and what share of the Job they hold. A senior sitting inside their estimate and a junior at triple theirs on the same deliverable is visible immediately, whether the cause is a skills gap, a briefing problem, or work that was underscoped from the start.

### What did the team's collaboration on this Job actually look like?

A Job costed for two people that ended up touching nine is a different Job. Recon shows how the work distributed, which is often the first sign that scope moved without anyone raising it.

### How much are the resources on this Job costing?

Task Reconciliation prices tracked time at each person's **Resource Cost**, not their billing rate. That is what the Job cost you to deliver, separate from what the client paid.

### How much did procurement contribute to the profit?

Cost Reconciliation separates what you paid suppliers from what you resold it for. On production-heavy work, procurement margin can quietly outperform studio margin, and knowing which is which changes how you quote the next one.

### What did our meetings on this Job cost?

Meetings are the easiest cost in an agency to ignore. Agencies routinely put four or five people in a client call to show presence, and nobody prices it. Meetings Reconciliation totals the attendee hours and costs them at each attendee's rate, so the price tag on that presence is visible.

{% hint style="info" %}
**Great for** the conversation before the next scope. A retainer that looks healthy on paper but shows R18,000 of meeting cost a month is not a pricing problem, it is a meeting problem, and it is fixable once someone can see it.
{% endhint %}

## The headline cards

Three cards sit across the top of the Recon tab.

### Hours Variance

Tracked hours against estimated hours for the Job, counting **billable and non-billable time together**, with the difference expressed as a percentage.

A negative figure means less time was used than estimated, which shows in green.

{% hint style="info" %}
`Hours Variance % = |Hours Variance| ÷ Total Estimated Hours × 100`

A Job estimated at **50:00**, being 37:00 billable plus 13:00 non-billable, that consumed **37:54** has a variance of **−12:06**.

`12:06 ÷ 50:00 × 100` = **24%** less than estimated.
{% endhint %}

### Time Variance Value

The hours variance converted into money. The variance on each Task is multiplied by that Task's own rate per hour, and the results are summed.

So it is not a flat average. An hour saved on a Task billed at R1,500 is worth more than an hour saved on one billed at R550, and the figure reflects that.

Read it as the value of the time you got back, available to be put to billable use on other work.

### Billing Efficiency

How much of the billable work performed was converted into billing.

{% hint style="info" %}
`Billing Efficiency % = Billable hours invoiced ÷ Billable hours tracked × 100`

**37:00** invoiced against **33:12** tracked gives **111.4%**.

Above 100% means you invoiced for more hours than the team spent on them, which shows in green. Below 100% means hours were worked that have not been invoiced.
{% endhint %}

Unlike Hours Variance, this counts **billable time only**, since non-billable hours were never going to be invoiced.

## Time Recon

**Time Recon** lists every person assigned to the Job, with their department beneath their name.

Each row shows a progress bar, their **tracked time against their allocated time**, a **Progress** percentage, and **% of Job**, which is the share of the Job's total estimated hours that person carries.

{% hint style="info" %}
**Great for** spotting where a Job is really being delivered. Two people holding 33% each and two holding 2% each tells you this is a two-person Job with two people lightly attached, which may or may not be what was sold.
{% endhint %}

## Task Reconciliation

{% hint style="warning" %}
Task Reconciliation is visible only to the [Account Owner](/company-settings/users.md) or a **Super Admin**, because of the potentially sensitive information it carries.
{% endhint %}

Task Reconciliation prices the studio side of the Job, line by line:

| Column              | What it shows                                                         |
| ------------------- | --------------------------------------------------------------------- |
| **Estimated**       | The hours costed for the Task                                         |
| **Resource Cost**   | What those hours cost the agency, at each person's Resource Cost rate |
| **Margin**          | What is left after resource cost                                      |
| **Total Estimated** | The billable value of the Task                                        |
| **Billed Amount**   | What has actually been invoiced against it, or a **Non-Billable** tag |

The gap between **Total Estimated** and **Billed Amount** is work delivered but not yet billed. The gap between **Total Estimated** and **Resource Cost** is what the Job is earning you before suppliers and meetings.

## Cost Reconciliation

Cost Reconciliation prices the procurement side, showing what you paid, the **Markup** you added, the **Total Estimated** resell value, and the **Billed Amount** invoiced so far.

This is where [Costs](/jobs/costs.md) earn their place as a revenue line rather than an administrative one. Print, promo, outsourced production, and licensing all report their own contribution to the Job's profit, separately from the hours.

## Meetings Reconciliation

Meetings Reconciliation shows **Total Hrs** and **Value (Rate × Hrs)** for every meeting logged against the Job.

### How meeting cost is calculated

Meeting cost is **attendee hours**, not clock hours. Every attendee's time is counted and priced at their own rate:

{% hint style="info" %}
Three people attend a **one-hour** meeting.

The recon counts `3 × 1:00` = **3 hours**.

Each person's hour is costed at their own Resource Cost rate, and the results are summed to give the meeting's total cost.

So a weekly status call with five attendees is twenty attendee hours a month before anyone has produced anything.
{% endhint %}

{% hint style="info" %}
**Great for** a habit worth breaking. Agencies invite extra people to client meetings to show commitment, and the cost lands nowhere. Pricing it per attendee makes the trade-off explicit: two people who need to be there, or five who make it look good.
{% endhint %}

## Job Recon

The **Job Recon** panel is the summary, covering **Tasks + Costs + Meetings** together:

* **Total Costs & Expenses** — what the Job cost you to deliver. This is **resource cost plus supplier expense** added together.
* **Total Estimated** — the Job's billable value.
* **Gross Margin** — Total Estimated less Total Costs & Expenses, as a value and a percentage.
* **Nett Margin** — Gross Margin less the cost of meetings.

The difference between Gross and Nett is the part most agencies never see. A Job showing 83.2% gross and 81.6% nett has given 1.6 points away to time spent in meetings that was never on the quote.

{% hint style="info" %}
The panel carries an **Estimated** tag while the Job is still running, since the figures reflect estimated values until the time is tracked and the billing is issued. Consolidated across finished Jobs in [Multi-Job Recon](/admin/reports/multi-job-recon.md), the same panel reports against **Total Billed** instead.
{% endhint %}

## Margin Allocation

The **Margin Allocation** donut breaks the nett margin into where it came from:

* **Task Costs** — what the hours cost you.
* **Task Margin** — what the hours earned.
* **Cost Expense** — what you paid suppliers.
* **Cost Markup** — what procurement earned.

{% hint style="info" %}
**Great for** understanding what kind of agency a Job made you. Two Jobs can return identical nett margin, one built almost entirely on studio hours and the other on marked-up production. They demand different teams, carry different risk, and should be quoted differently next time.
{% endhint %}

## Resource Cost: the number everything depends on

Recon is only as honest as the **Rate/Hour** on each user's profile. That figure is the person's cost to the agency, set under [Users](/company-settings/users.md), and it is separate from the [Rate Card](/company-settings/rate-card/task-types.md) rate you bill the client.

Get it wrong and every Job looks more profitable than it is. Leave it blank and that person's time costs nothing at all in the reporting.

### Four ways agencies set it

| Method                                 | How it is calculated                                                                     | What it misses                                                                                     |
| -------------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| **Salary only**                        | Salary converted to an hourly rate                                                       | Every overhead the agency carries. Jobs look far healthier than they are                           |
| **Flat average, whole team**           | Total agency expenses divided equally across all employees                               | Puts overhead recovery on people who cannot bill, and prices a director the same as a junior       |
| **Flat average, timesheet users only** | Total expenses divided across the people who track time                                  | Better, since recovery sits with the people who can bill it, but still prices everyone identically |
| **Per person, per department**         | Salary, plus a share of departmental overheads, plus a share of general agency overheads | Nothing material. This is the model worth building                                                 |

### The recommended model

Build each person's rate from three parts, and divide the overheads only across the people who can actually put hours on an [Invoice](/jobs/financial/invoices.md):

```
Resource Cost per hour =
  ( Salary
  + Departmental overhead share
  + General agency overhead share )
  ÷ ( Daily hour quota × working days per month )
```

* **Departmental overhead share** — that department's own tools, software, and AI credits, divided by the number of people in that department who track time.
* **General agency overhead share** — rent, insurance, general software, and the salaries of everyone who does not track time, divided by every timesheet user in the agency.
* **Daily hour quota** — the hours a person is realistically expected to deliver in a day, not the hours they are at work. Six is a common figure. Dividing by eight assumes nobody ever attends a meeting or answers an email.

### Worked example

An agency with eight people who track time, three in Design and five in Copy.

**General agency overheads**

| Item                                         | Monthly          |
| -------------------------------------------- | ---------------- |
| Expenses (rent, insurance, general software) | R145,000         |
| Salaries of non-timesheet staff              | R130,000         |
| **Total**                                    | **R275,000**     |
| Divided across 8 timesheet users             | **R34,375 each** |

**Departmental overheads**

| Department | Tools             | Monthly | Timesheet users | Share each |
| ---------- | ----------------- | ------- | --------------- | ---------- |
| Design     | Adobe × 3, Artlis | R4,440  | 3               | R1,480     |
| Copy       | Notion, ChatGPT   | R1,190  | 5               | R238       |

**Resulting rates**, at a 6-hour daily quota across 21 working days, so 126 hours a month:

| Name   | Dept   | Salary  | Dept share | Agency share | Total cost | Rate/Hour   |
| ------ | ------ | ------- | ---------- | ------------ | ---------- | ----------- |
| Jim    | Design | R28,000 | R1,480     | R34,375      | R63,855    | **R506.79** |
| Betty  | Design | R30,000 | R1,480     | R34,375      | R65,855    | **R522.66** |
| David  | Design | R26,000 | R1,480     | R34,375      | R61,855    | **R490.91** |
| Sally  | Copy   | R45,000 | R238       | R34,375      | R79,613    | **R631.85** |
| Graham | Copy   | R28,000 | R238       | R34,375      | R62,613    | **R496.93** |
| Russel | Copy   | R26,000 | R238       | R34,375      | R60,613    | **R481.06** |

Enter each person's figure as their **Rate/Hour** under [Users](/company-settings/users.md), and every Recon across the agency starts telling the truth.

### Why this model is worth the effort

**Overhead recovery sits with the people who can recover it.** Only users who put hours on an Invoice carry the agency's overheads. Management, admin, finance, and new business are funded by the billable team rather than diluted across a headcount that cannot bill.

**Seniority shows up.** A senior at R632 an hour and a junior at R481 are genuinely different propositions on the same Task. Recon prices the difference, so putting your most expensive person on routine work becomes visible instead of invisible.

**Departments reveal their real margin.** A department carrying heavy software, licensing, or AI credits costs more per hour to run. When that lands in the rate, Recon shows which departments are structurally thinner and therefore need higher [markup](/company-settings/rate-card/cost-types.md#markup-methods) or higher rates rather than more hours.

{% hint style="info" %}
**Great for** the annual pricing review. Rebuild these rates once a year against your actual overheads, update every user, and your whole Job history reprices against reality. Most agencies discover at least one service line they have been selling below cost.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.agencydesk.io/jobs/recon.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
