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
- Switch to Field Service mode using the mode switcher in the app header.
- Click Performance in the left sidebar.
- The dashboard loads showing the Last 30 Days by default.
- Use the Last 7 Days / 30 Days / 90 Days buttons to change the date range. All KPI tiles and the table update immediately.
- Use the Technician dropdown to focus on a single person's metrics, or leave it on All for the full team view.
- 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.
| Tile | What It Measures | How 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.
| Element | Description |
|---|---|
| Technician name | Displayed to the left of each bar |
| Bar | Filled proportionally to the technician's completed job count relative to the team maximum. Color matches the technician's status color. |
| Job count label | Number 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.
| Column | Description |
|---|---|
| Technician | Name of the technician. Click anywhere on the row to expand their recent job history. |
| Total Jobs | All jobs assigned to this technician in the period, regardless of status |
| Completed | Count of jobs with status = Completed in the period |
| Avg Rating | Star 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 Duration | Mean job duration in hours and minutes for this technician's completed jobs |
| Utilization | Estimated 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:
| Source | Behavior |
|---|---|
| From Tenant | Pick 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 Tenant | Manually 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
| Preset | Period Covered | Best 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.
| Scenario | On-Time? | Notes |
|---|---|---|
| Technician starts job ≤ 15 min after scheduled start | Yes | 15-minute grace period accounts for normal traffic and parking variance |
| Technician starts job > 15 min after scheduled start | No | Counts as a late arrival in the metric |
| Job has no scheduled start time | Excluded | Jobs without a scheduled start cannot be assessed for on-time arrival and are not counted in the metric |
| Technician starts job before scheduled start | Yes | Early 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
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.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.