Advanced FeatureGrowth+ Plan

Reporting & Analytics

Turn operational data into answers. Revenue trends, project profitability rankings, client margin analysis, pipeline revenue forecasts, and team utilization — all built from the same data you're already logging.

Overview

Reporting in ACOS is not a separate analytics tool you configure. It reads from the data you've already logged — time entries, invoices, deals, projects — and presents it in structured views that answer the questions a service company owner asks every month.

Access Reporting from the sidebar: Finance → Reports. The reports are organized as tabs: Revenue, Profitability, Pipeline, and Utilization.

Reporting is available on Growth and Scale plans. The raw data (time entries, invoices, project profitability) is always accessible in the individual modules — Reporting just aggregates it. Starter plan users can build manual reports by exporting data from each module.

Revenue Report

Shows your monthly revenue, cost, and gross profit as a bar chart. This is the financial health view of your business over time.

What it shows

  • Monthly Revenue (green bar) — sum of billed_amount on billable time entries for each month
  • Monthly Cost (red overlay) — sum of cost_amount on all time entries
  • Gross Profit — revenue minus cost, shown in the tooltip
  • Margin % — shown in the tooltip for each month

Using it

  • Use the DateRangePicker above the chart to select a time period: This Month, Last Month, Last Quarter, This Year, or a custom range.
  • Hover any bar to see the exact revenue, cost, gross profit, and margin % for that month.
  • A summary row below the chart shows totals across the selected period.
  • Filter by project or by client contact to see revenue from a specific engagement or relationship.

Data source

The Revenue Report reads from monthly ReportSnapshot records (created on the 1st of each month). For the current month, it reads live from the Project computed fields. This means historical data is fast (no recalculation), and current-month data is always up to date.

Profitability Report

Two views in one tab: by Project and by Client. Both answer the same question from different angles: where are you making money, and where are you losing it?

By Project

A sortable table showing all projects with their financial performance:

ColumnNotes
ProjectName and link to project detail
ClientContact name
RevenueTotal billed amount from billable time entries
CostTotal cost from all time entries
Gross ProfitRevenue minus Cost
Margin %Color-coded: green >30%, amber 15–30%, red <15%
Hours LoggedTotal hours on the project
StatusActive, Completed, etc.

Default sort: Margin % ascending (worst-performing projects first). This is intentional — the problems need your attention more than the successes.

By Client

The same data aggregated at the contact level — all projects for each client combined. Shows which client relationships are profitable and which are not. A client might have one great project and two money-losing ones — the aggregate view reveals the true relationship profitability.

A client with margin below 15% across all their projects is a commercial relationship worth reviewing. It may mean your pricing is too low for that client, or that their projects tend to expand scope without additional billing.

Pipeline Forecast

A forward-looking view of expected revenue from your open CRM deals. Shows you what revenue is potentially coming in over the next 6 months — weighted by deal probability.

How weighted value is calculated

Deal: $20,000 value, 70% probability

Weighted value: $20,000 × 0.70 = $14,000

Deals are grouped by their expected_close_date month. Each bar in the chart shows:

  • Dark green — high probability deals (>70%): most likely to close
  • Amber — medium probability deals (40–70%): possible but uncertain
  • Light gray — low probability deals (<40%): speculative pipeline

Why this matters

The pipeline forecast answers the question: "Do I have enough confirmed work to keep the team busy next quarter?" If your high-probability pipeline for the next 3 months is lower than your current monthly cost, you need to either close more deals or reduce capacity.

Pipeline forecast accuracy depends on keeping deal values, probabilities, and expected close dates up to date in your CRM. Stale deals with outdated close dates inflate the forecast. Review your CRM pipeline monthly and update these fields.

Utilization Report

Shows how your team's time is being spent — billable versus non-billable — and whether each person is being used efficiently.

The utilization chart

One horizontal bar per team member. Each bar has two segments:

  • Green — billable hours logged in the selected period
  • Amber — non-billable hours logged

Below each bar: hours billed / non-billable / utilization rate. Example: 118h billable / 24h non-billable / 73.8%

Utilization rate formula

Utilization Rate = (billable hours logged ÷ 160) × 100

Where 160 = 40h/week × 4 weeks = standard available hours per month

Default sort: utilization rate descending. Industry benchmarks for healthy service agencies: 65–80% utilization is sustainable long-term. Above 90% risks burnout. Below 50% means you're paying for capacity you're not monetizing.

Month selector

Use the month picker above the chart to view any historical month. The current month shows live data. Historical months read from cached time entry aggregates.

Date Range Picker

A shared component used across the Revenue and Utilization reports. Quick options:

  • This Month — current calendar month, live data
  • Last Month — previous calendar month
  • Last Quarter — previous 3 calendar months
  • This Year — January through current month
  • Custom — select any start month and end month

For custom ranges, the start month must be before or equal to the end month. The maximum range is 24 months (longer ranges may load slowly as they read from more ReportSnapshot records).

Monthly Snapshots

On the 1st of each month, ACOS runs a background task that creates a ReportSnapshot record for the previous month. This snapshot captures: total revenue, total cost, gross profit, total billable hours, deals won, deals lost, and active project count.

Snapshots are what make historical reporting fast — instead of re-aggregating thousands of time entries every time you load a report, ACOS reads from the pre-calculated snapshot. The snapshot is immutable once created.

Roles & Access

ReportWho can access
RevenueAdmin, Owner
Profitability (Projects)Manager, Admin, Owner
Profitability (Clients)Admin, Owner
Pipeline ForecastManager, Admin, Owner
UtilizationManager, Admin, Owner

Best Practices

  • Run the Profitability by Project report at the end of each month. Sort by margin ascending. Any project below 15% should trigger an immediate investigation.
  • Use the Pipeline Forecast to plan hiring and capacity. If your high-probability pipeline for the next quarter is twice your current capacity, it's time to hire.
  • The Utilization report is most useful for identifying underutilized team members — not for policing hours. A person at 40% utilization may be working on valuable internal projects that aren't tracked in ACOS.
  • Keep deal probabilities realistic in CRM. A pipeline full of 90% probability deals that are actually 50% probable will make the forecast misleadingly optimistic.

FAQ

The revenue numbers in Reporting don't match what I see in Finance → Invoices.

The Revenue Report counts billed_amount from time entries, not from invoices. If you have invoices with manually added line items that don't come from time entries, those amounts won't appear in the Revenue Report. The Finance → Invoices list shows invoice-level data; Reporting shows time-entry-level data. For paid invoices generated entirely from time entries, the numbers will match.

The current month data seems stale in the Revenue chart.

Current month data reads from Project computed fields, which are updated within seconds of each time entry being saved. If data appears stale, try refreshing the page. There is a 5-minute cache on report queries.

Can I export reports to Excel or PDF?

Export functionality is planned for a future phase. Currently, you can copy data from the tables manually. For the Utilization report specifically, you can see detailed time data in the time tracking module by filtering by user and date range.

Why is my team utilization showing 0% for some members?

Members with 0% utilization either have no time entries logged for that month, or all their entries are on projects where cost_rate = 0. Check the Time Tracking module for those team members to confirm whether hours were logged.