Jobs reports: operational dashboard
The Jobs reports page at Jobs > Reports (/jobs/reports) surfaces the operational health of your field-service work: how many jobs you complete, how long they take, how often you fix on the first visit, how often you meet the SLA you promised, how customers rate you. For the money side (revenue, cost, margin, profitability per technician/customer/job-type), see the JCP dashboard; the two are complementary, not duplicative.
Permission: jobs.reports.view, which can be granted independently of jcp.view so operations managers can see their team's health without seeing financial data.
Date range
Presets: last 7 / 30 / 90 / 365 days. 30 days is the default. The window is capped at 2 years to keep aggregate queries bounded.
Headline metric cards
Five top-of-page cards, tenant-wide for the selected window:
Completed: number of jobs whose status is
completedorinvoicedwithactual_end_atinside the windowAvg duration: mean of
actual_end_at - actual_start_atacross completed jobs that have a start stamp. Jobs that closed without a recorded start (rescheduled → completed without ever going through on-site) are excludedFirst-time fix: percentage of completed jobs with no linked
JobVisitcarrying areturn_reason. A job that was single-visit or was multi-visit without any "require return" action counts as first-time fix. A job where any visit was flagged "parts needed / access denied / scope expanded" does not.SLA compliance: percentage of completed jobs whose
actual_end_at - scheduled_atis within the job type'ssla_resolution_minutes. Jobs without an SLA target (job type has nosla_resolution_minutes) are excluded from both the numerator and denominator: you can't breach an SLA you didn't set.Avg rating: mean
customer_ratingacross completed jobs that have one. Ratings are collected on the post-completion customer tracking page (see customer-tracking).
Technicians tab
League table, top 50 technicians by completions:
Completed: count of completed jobs with this technician as
assigned_toAvg duration: per-technician average, same definition as the headline card
Billable hours: sum of
job_time_entries.duration_minutes WHERE is_billablefor the technician in the windowUtilisation:
billable_hours / (jcp_user_costs.contracted_weekly_hours × weeks_in_window), shown as a percentage. Requires acontracted_weekly_hoursvalue on the engineer's JCP cost record, otherwise shows—First-time fix: per-technician version of the headline metric
Avg rating: mean customer rating for jobs this technician completed
Top three completions-wise are highlighted with rank numbers in the accent colour.
Job types tab
Per-job-type table, top 50 by completions:
Completed: count
Avg duration: mean
SLA target: the job type's configured
sla_resolution_minutesfor quick sanity-check against avg durationFirst-time fix: per-type rate
Avg rating: per-type mean rating
Use this to spot job types that routinely overrun their SLA (compare "Avg duration" against "SLA target"), or types that customers rate consistently low.
Customers tab
Per-customer (company) table, top 50 by completions:
Visits: completed-job count for this customer
SLA breaches: completed jobs where
actual_end_at - scheduled_atexceeded the job type's SLA target. Breaches are counted regardless of whether the customer has churn riskAvg rating: mean rating from this customer
Useful for spotting customers at churn risk (consistently low ratings or high breach counts) ahead of their next contract renewal. Click through to the CRM company page to see full context.
Not yet shipped
Trend charts: completions / rating / FTF / SLA compliance vs the prior period, needs the chart component wired in
Geographic heatmap: plot all completed jobs by postcode to identify service-area density
Automated SLA-breach workflow: trigger an ops manager task + customer apology template when a breach is detected
Scheduled exportable reports: weekly/monthly CSV + PDF dashboard email (reuse Analytics module export infrastructure)
Canvas widgets: dashboard-level
WidgetJobsFirstTimeFixRate,WidgetJobsUtilisation,WidgetJobsSlaCompliance,WidgetJobsCustomerRatingfor operators who want these metrics on their canvas rather than visiting/jobs/reports