Reports and insights
Where the ledger is read back — the dashboard for the shape of a period, the reports for a specific question.
Everything else in Clocktopus is about getting numbers in. This page is about reading them back.
There are two places to look, and the difference is worth learning once. The dashboard shows the shape of a period: how the days ran, where the hours went, what is drifting. Reports answer one question at a time, sliced the way you asked.
Both obey the same date range and the same project filter, and both put that selection in the URL — so any view you are looking at is a link you can paste to somebody else. The selection also follows you between them: narrow the dashboard to two projects, open a report, and it opens already narrowed, because you are almost always still chasing the same thing. Clearing it anywhere clears it everywhere, and a link that names its own selection always wins over the one you were carrying.
The dashboard
Two controls sit above everything and drive every card on the page.
My work / Team decides whose figures you are reading. My work is your own rows across every project you can reach, personal ones included. Team is everybody's rows across the projects of the organisations you own or administer — so it never includes a personal project, and it only appears if you administer an organisation at all.
The project filter narrows the page to a selection. It offers what the current tab can reach: every project you can see on My work, and only the administered organisations' projects on Team. Leave it empty for the whole tab.
Your selection survives a tab switch, the same way the date range does — so looking at Team and coming back does not lose the projects you picked. Each tab shows the part of it that tab can reach: a personal project is ticked on My work and simply absent on Team, and switching back brings it straight back. The same selection carries over to the reports, which reach a slightly wider set of projects and so may show more of it ticked than the dashboard could. Both controls travel in the URL along with the date range.
Then four figures across the top for the selected range: total hours, active days, total entries, and average hours per active day. Active days matter more than they look: eight hours over two days and eight over five are different weeks. On the team tab a fifth figure joins them — how many people are behind the total, because forty hours means something very different from four people than from one.
Underneath:
- Clock status — whether you are clocked in right now, and since when.
- Daily time tracking — hours per day, with agent runtime drawn as a second line. The lines are never stacked, so where runtime rises above your hours, agents ran in parallel — or ran on a day you logged nothing.
- Hours by project, grouped by organisation, with each project's share of the total.
- This week against last — the same days, side by side.
- Budgets — how far through its budget each project has billed. It follows the project filter but not the date range or the tab: a budget covers a project's whole life and belongs to the project rather than to whoever is looking, so it reads the same on both. Nothing renders until someone sets one, so it never leaves a hole.
- Features — hours by ticket, pulled from your commit messages. Select exactly one Monday-to-Sunday week and this becomes a day-by-day grid instead of a single total per ticket.
- Delivery — pull request states, review flow and work complexity. Your own on My work, the whole team's on Team. Hours say what a period cost; these say how the work moved. See Delivery metrics.
Reports → Summary
One date range, one set of filters, and six ways of cutting the same hours.
| Tab | Answers |
|---|---|
| Organisations | Which organisation the time went to, when you work across more than one |
| Projects | Hours per project, and each one's share of the period |
| Team | Hours per person |
| Features | Hours per ticket, from conventional-commit scopes — no issue-tracker integration involved |
| AI agents | Agent spend and runtime by project, with tickets underneath. See AI agents |
| Billing | Hours, revenue, cost and margin, by project and by person |
| Details | The individual entries behind all of the above — date, organisation, project, person, hours, description — paginated |
Filter by project and by member above the tabs, and the filter follows you from tab to tab. Details is the one to reach for when a total looks wrong: it is the same data without any grouping, so you can find the entry that explains it.
Billing is owner and admin only. The tab does not appear for members at all.
Reports → Budgets
Budgets get their own page, deliberately without a date-range selector. A budget covers its project's whole life, so a range picker here would be a control that visibly does nothing.
It shows how far through its budget each project has billed, at job-role rates, across everyone who worked on it. Margin over a period lives on the Summary report's Billing tab instead, where a range does apply.
Everyone can open this page. Members see the percentage and the health; the amounts are stripped server-side before the data leaves, so who sees what is enforced by the server rather than by hiding a column.
When a number looks wrong
Reports are a view over the ledger, so a surprising total is almost always something upstream rather than the report itself.
| Symptom | Usually |
|---|---|
| A day is short, or an entry reads 0h | A flagged entry whose start was never established |
| A day is inflated | An out-of-order push covering a window already counted |
| Hours are missing entirely | The repository is not attached to a project, or the commit email is not tracked |
Amounts show as — |
The work could not be priced: no job role rate covering the day it was worked |
| Agent spend sits in "unattributed" | The agent ran outside any repository attached to a project |
The Activity page is the level below all of this: every webhook delivery and what it did, including the ones that were skipped and why. Start there when entries never arrived at all.
Asking in words instead
If you would rather not click through tabs, connect an assistant over MCP and ask. It reads the same data, scoped to you, and can answer "how many hours went to Public Website in May, per ticket?" without you building the view by hand.
Start measuring what your team ships
Output, cost and what your agents burn. Read from the commits, pull requests and agent runs you already have.
Start freeFree for single developers.