TotalApp Docs

Technician Performance Dashboard

Team-level and individual KPIs for field service operations — jobs completed, average rating, on-time arrival, job duration, and utilization across any date range.

Overview

Field Service Management gives dispatchers, technicians, and managers everything they need to run field operations without switching tools. The module is organized into four screens that cover the complete job lifecycle: a real-time Dispatch Board for assigning jobs, a Job Management screen for tracking each job from creation to invoice, a Van Inventory screen for managing technician stock, and a Performance Dashboard for reviewing team and technician metrics.

Dispatch Board

Drag-and-drop job assignment across a live technician grid. Each technician column shows current status, active job count, and the full day's schedule at a glance.

Job Management

Full job lifecycle from intake to invoice. Create jobs, attach parts, log time, capture signatures, and push to billing — all from one screen.

Van Inventory

Each technician's van is its own stock location. Replenish parts, record usage per job, and flag low-stock vans before technicians run short in the field.

Performance Dashboard

Team-level and technician-level KPIs: jobs completed, first-time fix rate, average travel and job duration, customer satisfaction scores, and revenue per technician.

Quick Start

  1. Switch to Field Service mode using the mode switcher in the app header.
  2. Click Performance in the left sidebar.
  3. The dashboard loads showing the Last 30 Days by default.
  4. Use the Last 7 Days / 30 Days / 90 Days buttons to change the date range. All KPI tiles and the table update immediately.
  5. Use the Technician dropdown to focus on a single person's metrics, or leave it on All for the full team view.
  6. Click any technician row in the table to expand it and see that technician's recent job history.

Weekly Review Routine

On Monday morning, switch to Last 7 Days and review the technician table sorted by Average Rating. Technicians with ratings below 4.0 stars warrant a conversation. Check their On-Time % alongside the rating — a low rating with poor on-time arrival usually indicates scheduling issues, while a low rating with good on-time arrival suggests a skills or communication gap.

KPI Overview Tiles

The four tiles at the top of the screen summarize the team's performance for the selected date range.

TileWhat It MeasuresHow It Is Calculated
Total Jobs Completed Count of all completed jobs in the period Count of jobs with status = Completed and actualEnd within the selected date range
Average Rating Team-wide customer satisfaction average (1–5 stars) Mean of all non-null customerRating values on completed jobs in the period
On-Time Arrival % Percentage of jobs where the technician arrived on time Jobs where onTimeArrival = true ÷ total completed jobs × 100. A job is on time if actualStart ≤ scheduledStart + 15 min.
Avg Job Duration Mean time from job start to completion Mean of (actualEnd − actualStart) in minutes for all completed jobs in the period

Ratings Require Data

The Average Rating tile only reflects jobs where a customer rating was captured at completion. Jobs completed without a rating are excluded from the average. Encourage dispatchers to capture ratings consistently — even a 5-star tap takes one second and significantly improves the insight this metric provides. If fewer than 5 ratings exist in the selected period, the tile shows a note indicating low sample size.

Jobs-per-Technician Chart

Below the KPI tiles, a horizontal bar chart shows each technician's completed job count for the selected period. Bars are scaled proportionally — the technician with the most jobs fills 100% of the bar width; all others are shown relative to that maximum.

ElementDescription
Technician nameDisplayed to the left of each bar
BarFilled proportionally to the technician's completed job count relative to the team maximum. Color matches the technician's status color.
Job count labelNumber shown at the right end of each bar

Workload Balance

If one technician's bar is significantly longer than others over a 30-day view, check whether their territory or job types are disproportionately loaded, or whether other technicians have more cancellations or on-hold jobs that are suppressing their count. Use the Job Management screen filtered by technician to investigate the detail behind the chart.

Technician Table

The leaderboard table shows one row per technician with their aggregated metrics for the selected date range.

ColumnDescription
TechnicianName of the technician. Click anywhere on the row to expand their recent job history.
Total JobsAll jobs assigned to this technician in the period, regardless of status
CompletedCount of jobs with status = Completed in the period
Avg RatingStar rating average for this technician's completed jobs. Displayed as filled star icons (1–5). Shown as "—" if no ratings exist.
On-Time %Percentage of this technician's completed jobs where arrival was on time (within 15 minutes of scheduled start)
Avg DurationMean job duration in hours and minutes for this technician's completed jobs
UtilizationEstimated percentage of available working time spent on active jobs. Calculated as total actual job minutes ÷ (working days in period × 480 minutes). Displayed as "—" if actual start/end times are incomplete.

Expanded Row — Recent Job History

Click a technician row to reveal their last 5 completed jobs inline. Each expanded job shows the job title, customer, completion date, rating (if captured), and actual duration. This allows managers to spot patterns — for example, a string of low ratings on a specific job type — without leaving the Performance Dashboard.

Multi-Select Rows

Every technician row has a checkbox in front of it, with a header checkbox above the table to select or deselect all visible technicians at once. Selecting one or more rows shows a live "N selected" count next to the "Technician Performance" title, with a quick clear (✕) action.

Checkbox Style Follows Your Appearance Settings

The checkbox shape, whether a check icon is shown inside a selected checkbox, and the table's corner style are controlled globally from Settings → Appearance → List Style — the same setting used across every multi-select table in TotalApp, including the Job Management screen.

Adding a Technician

Click the icon button to the left of the All Technicians dropdown to open the Add Technician modal. The modal offers two sources:

SourceBehavior
From TenantPick an existing employee from this tenant's HR personnel list (name and job title shown). The technician record inherits the employee's name, phone, email, and skills.
Out of TenantManually enter a name (required), phone, and email for a technician who is not an employee record in this tenant — useful for subcontractors or temporary field staff.

The new technician appears immediately in the Technician dropdown and the leaderboard table (with zero jobs logged), since the dashboard reloads its data after the technician is saved.

Same Modal as Job Management

This is the same Add Technician modal used on the Job Management screen's Add Technician button. A technician added from either screen is identical and immediately visible on both.

AI Assistant

Click the vertical AI Assistant tab on the right edge of the screen to open a chat panel scoped to the technician performance stats currently loaded for the selected date range and technician filter. The assistant can identify top and bottom performers, flag under- or over-utilized technicians, highlight low ratings or low on-time percentages, and suggest where a technician may need coaching.

The panel respects your Settings → Agentic → Writer Engine selection: Ollama, Local LLM, and In-Browser models run entirely in your browser or on your own machine, while API and Local CLI route through the server. Suggested prompts are shown when the chat is empty; use the history and new-chat icons in the panel header to manage multiple conversations.

Date Range Presets

PresetPeriod CoveredBest Used For
Last 7 Days Today − 7 days through today Weekly reviews, identifying technicians who had a poor week and need follow-up
Last 30 Days Today − 30 days through today (default) Monthly reviews, stable averages, identifying consistent performers vs. inconsistent ones
Last 90 Days Today − 90 days through today Quarterly reviews, trend analysis, identifying long-term workload imbalances

Understanding the On-Time Arrival Metric

On-time arrival is calculated automatically when a job is completed, based on the recorded actualStart time versus the job's scheduledStart time.

ScenarioOn-Time?Notes
Technician starts job ≤ 15 min after scheduled startYes15-minute grace period accounts for normal traffic and parking variance
Technician starts job > 15 min after scheduled startNoCounts as a late arrival in the metric
Job has no scheduled start timeExcludedJobs without a scheduled start cannot be assessed for on-time arrival and are not counted in the metric
Technician starts job before scheduled startYesEarly arrival always counts as on time

Metric Requires Scheduled Times

The On-Time % metric is only meaningful when jobs have scheduled start times recorded. If your team frequently creates jobs without a scheduled start, the on-time % will be based on a small subset of all completed jobs and may not reflect actual punctuality. Build a discipline of recording scheduled start times when creating or assigning jobs to maximize the usefulness of this metric.

Frequently Asked Questions

Why does my Average Rating show "—" even though jobs have been completed?
The rating tile shows "—" when no completed jobs in the selected date range have a customer rating recorded. This happens when the Complete action was used without entering a star rating. To start seeing this metric, ensure dispatchers (or technicians) capture a rating every time they complete a job. Even one rating per day will begin populating the average within a week.
What counts as a "completed" job for the KPI tiles?
Only jobs with status = Completed and an actualEnd timestamp within the selected date range. Jobs that are Assigned or In Progress are not counted. Cancelled jobs are explicitly excluded. If a job was completed in a prior period but is being reviewed now, it will only appear in the metrics for the period containing its actualEnd timestamp.
How is Utilization Rate calculated, and why might it show "—"?
Utilization = sum of all actual job durations (in minutes) ÷ (working days in period × 480 minutes per day). It shows "—" when jobs in the period are missing actualStart or actualEnd timestamps — which happens when jobs are completed via the Complete button without the Start button being pressed first (skipping the In Progress stage). Utilization is most accurate when the full status workflow (Assigned → In Progress → Completed) is followed for every job.
Can I export the performance data for use in a report or spreadsheet?
Not directly from the Performance Dashboard in the current release. The underlying job data is available via the Job Management screen's Export function, which downloads all completed jobs in JSON format for the active filter. You can open this file in Excel and use pivot tables to reproduce the performance metrics. A native PDF/Excel export of the Performance Dashboard is planned for a future release.
What can I do with the checkboxes in the technician table?
Selecting rows shows a live selection count next to the table title — useful for visually tracking a group of technicians while reviewing them one at a time. Bulk actions on the selection (e.g., bulk export, bulk message) are not available yet.