Reports
Reports answer the questions agencies ask constantly: who has room to take on more work, is time actually being tracked, and where is it all going? They also let you pull the raw data out as a CSV, time entries and task lists alike, when you need it elsewhere.
Everyone with an account gets the Timesheets report, so the Reports section is always in the sidebar. Capacity, time tracking, and the entity rollups (clients, projects, departments, job numbers) are each permission-gated, so which reports you actually see depends on your role. Retainer health isn't a separate report; it lives on each retainer's page.
Capacity
The capacity report compares estimated outstanding workload against available hours, over a window of one, two, or four weeks.
At the top, company-level cards: total capacity, estimated workload, and utilisation. Below, the same numbers broken down by department and by team member, with colour-coded utilisation bars: green under 80%, amber approaching 100%, red beyond it.
The maths is worth knowing so the report earns trust:
- A person's capacity is their weekly hours, scaled by the agency's utilisation target (default 80%, configurable in agency settings), because nobody does 38 billable hours in a 38-hour week.
- Workload is the sum of estimates on their open tasks, minus time already logged. Tasks without estimates contribute nothing, which is a good reason to estimate.
- Only departments with Tracks capacity enabled are included, so ops or admin teams don't muddy the picture. If someone is in several tracked departments, their hours are split between them.
Timesheets
The timesheet report is a filterable list of individual time entries with a running total, built for pulling numbers out of Every. Choose a week, a month, or a custom date range, then narrow by team member, department, client, project, retainer, or job number (job numbers only appear if they're enabled). Filter to entries with no project or no retainer to catch work that slipped through.
Everyone can reach this report, but without the timesheet permission it's scoped to your own entries and the team member and department filters are hidden.
Export turns the current filter into a CSV, one row per entry, named for the date range. Columns: date, team member, department, client, project, task number, task title, job number (if enabled), retainer, hours (as a decimal), duration, and description. It streams the whole filtered result, not just the page on screen, so a full month comes down in one file ready for payroll or invoicing.
Time tracking
The time tracking report shows tracked hours against weekly targets, by week or by month, with previous/next navigation. Percentages are colour-coded so under-tracking (which usually means unbilled work, not idle people) stands out.
It opens with a By Department summary: tracked hours against target for each department, with member counts, so you can see which teams are keeping up before looking at individuals. Below that are the per-person rows. Click any person to drill into their day-by-day breakdown: tracked versus target for each day of the period. Filter by department or search by name.
Clients, projects, departments, and job numbers
Four rollup reports answer "how much work does this client (or project, department, or job number) have, and how much time has gone into it?" Each is a searchable list with the same four numbers per row: open tasks, total tasks, estimated hours, and logged hours. Every row drills down to the tasks behind the numbers. All four sit behind a single entity reports permission.
How each one counts is worth knowing:
- Clients includes a client's direct tasks plus tasks inherited through its projects, matching how tasks belong to clients everywhere else.
- Departments counts a task once per department it's tagged with, so departmental rows won't sum to a company total; that's double-counting by design, not a bug.
- Job numbers only exists if job numbers are enabled, and because they're free-form text, it's search-driven: type a job number (or a fragment) to find it rather than browsing every value ever entered. Matching is case-insensitive.
Drilling down
Click any row for the task list behind it: task number and title, client, project, status, priority, labels, departments, assignees, retainer, job number (if enabled), estimate and logged hours, and due, created, and completed dates. Task, client, project, department, and retainer names all link through to their pages, so a report row is one click from the work behind it. Narrow it by search or status; the Open tasks button is a one-click filter to just the open statuses.
The client drill-down adds an Active retainers panel (each retainer's period, hours used against budget, and health badge) if your role can view retainers.
Export CSV on every drill-down streams the currently filtered task list, one row per task with the same columns as the table plus the description, so what you download always matches what you filtered.
Feeding the reports
These reports are only as good as their inputs: estimates on tasks drive capacity and the rollups' estimate columns, and logged time drives the timesheet and everything's logged hours. Both improve as habits, not mandates, and the Needs My Input view helps by chasing missing estimates automatically. If your role has access, reporting is also available conversationally: "who has spare capacity next week?" via a connected AI assistant.