Dashboard
When an owner logs in, they don't want a wall of widgets — they want one question answered: where are my guys and what's being done. The Dashboard leads with exactly that. A full-bleed driver map fills the left two-thirds of the screen, and a live jobs console fills the right third. Crew pins move in real time as drivers travel between sites. Everything else on this page — KPIs, alerts, revenue chart, schedule — lives below the fold as supporting context, not as the headline.
Custom Dashboard Views
The four tabs above are starter views — opinionated layouts that ship out of the box. They're a starting point, not a ceiling. Every user can create their own dashboard views, fill them with whatever widgets answer the question they're trying to answer, and pin one as their personal default. The bookkeeper sees a money view. The dispatcher sees a routing view. The owner sees Operations. Same data, different windows.
Creating a View
Three ways to start a new view:
| Method | Best For |
|---|---|
| Start blank | You know exactly what you want — pick widgets one by one |
| Duplicate an existing view | You want Operations but with two extra widgets — clone, modify, save |
| Start from a template | Pre-built starting points: Bookkeeper, Field Recap, Sales Morning, Owner Briefing |
Every new view captures: a name, an optional icon, an owner (the creator), a visibility setting (Private / Team / Org), and a default-position flag.
Edit Mode
Clicking "Edit Layout" puts the active view into edit mode. The canvas gets a hatched background to signal that nothing on screen is live data — it's a layout staging surface. In edit mode you can:
- Add a widget — click the dashed "Add Widget" tile or any "+" slot; widget picker drawer opens
- Remove a widget — click the × in the widget's header
- Resize a widget — drag the corner handle; sizes snap to the grid (1×1, 2×1, 1×2, 2×2, 3×1, 3×2, 4×1)
- Reorder — drag-and-drop by the ⋮⋮ handle in the widget header
- Configure a widget — click the widget body in edit mode; configuration drawer slides in (date range, filters, drill-down target)
- Rename the view — click the view name in the tab bar
- Discard or Save — exit edit mode without saving, or commit changes
Saving is per-view. You can edit "My Morning" without touching "Operations".
Widget Library
The widget picker is grouped by data domain. Every widget is available to every user — RBAC filters the data inside the widget, not the widget itself.
| Group | Widgets |
|---|---|
| Pipeline | Opportunities by Stage · Estimates Open · Estimate Win Rate · Conversion Funnel · Pipeline Value (weighted) |
| Schedule | Today's Schedule · Crew Calendar Heatmap · Upcoming Appointments · Recurring Plans Due · Unconfirmed Appts |
| Field | Driver Map · Crew Status List · GPS Activity · Photos Captured Today · Hours Logged |
| Money | Outstanding Invoices · Overdue Invoices · Cash Collected · Revenue by Service · Job Costing Variance · Expenses |
| Customer | New Contacts · Top Customers · Repeat Rate · NPS / Reviews · Referral Activity |
| Phone & Comms | Inbound Calls · AI vs Human Handle Rate · Unread SMS · Conversation Sentiment · Voicemails |
| Tasks & Alerts | Overdue Tasks · Stale Opportunities · SLA Breaches · System Alerts |
| Custom | KPI Card (number + delta) · Saved Report Widget · Embedded URL · Markdown Note |
Widgets carry their own configuration — date range, contact filter, crew filter, service type, drill-down target. Defaults are inherited from the view's global filters when set.
Layout Grid
Dashboards use a 4-column responsive grid. Widget sizes:
| Size | Footprint | Typical Use |
|---|---|---|
| 1×1 | Quarter row | KPI cards, single-number widgets |
| 2×1 | Half row | Lists with 5-10 rows, small charts |
| 3×1 | Three-quarters | Wide lists, narrow tables |
| 4×1 | Full row | Tables, time series |
| 1×2 | Tall narrow | Stacked KPIs, status feeds |
| 2×2 | Quad block | Charts with legends, detail panels |
| 3×2 | Big | Driver map, large activity timeline |
Mobile collapses everything to a single column in display order. Edit mode is desktop-only.
Sharing & Permissions
Every view carries a visibility setting:
| Visibility | Who Sees It | Who Can Edit |
|---|---|---|
| Private | Only the creator | Only the creator |
| Team | Everyone in the creator's team | Creator + team admins |
| Org | Everyone in the tenant | Creator + owners/managers |
| System (built-in) | Everyone | Owners only (clone-to-edit if non-owner) |
When a view is shared, recipients see it appear in their view bar automatically. They can fork any shared view — the fork becomes a Private view they fully own. Edits to the original do not affect forks.
Default View
Each user picks one view as their personal default — that's what loads when they open the CRM. Defaults are per-user, not per-tenant. An owner might default to Operations; the bookkeeper to Bookkeeper; the dispatcher to Field Recap. The system also tracks a recommended default per role for new users who haven't picked one yet.
| Role | Recommended Default |
|---|---|
| Owner / Manager | Operations |
| Dispatcher | Operations (Field Recap recommended) |
| Bookkeeper | Revenue |
| Estimator / Sales | Pipeline (custom view from template) |
| Technician | Mobile app — not dashboard |
Auto-Save & Version History
Every save snapshots the view layout. The last 30 versions are retained per view, accessible from a "View History" menu. Restoring a version creates a new save — old versions are never destroyed. Useful when an admin accidentally removes a widget and the team has questions.
Driver Map + Jobs Console
The map takes 70% of the dashboard. Each pin is a driver, colored by current status — purple for scheduled, orange for en route, blue for on-site, green for complete, red for issues. The jobs console on the right takes 30% and is tabbed: Active shows what's happening now and what's next; Completed replays the day. Switching tabs updates the map — Active shows live positions and next-stop routing; Completed overlays the full route history with dwell times at each stop.
What changes when you switch to Completed
Selecting the Completed tab is the part most software gets wrong — it just shows a flat list. Here, the map redraws into a route replay: each driver's path is drawn as a colored polyline tracing where they actually drove, with a green pin at every completed stop. Hovering or tapping a stop shows dwell time — how long the tech was on site — which is the metric that catches both gold-bricking and undercharging in a single glance.
Map interactions
Money, Runway, and New Business
Directly beneath the map sits a four-box strip that answers the owner's next question after where are my guys? — namely, am I making money today, am I booked far enough out, what's in the pipeline, and is my sales team feeding the funnel? These four numbers together tell you whether the business is winning right now, whether it'll still be winning in two months, and whether it'll still be winning two months after that.
↑ 28% vs same day last week
committed work · crew busy through June 14
$84K weighted · runway to Aug 18
+6 new this week · 3 cooling
Lead Follow-Up
The most expensive thing in a service business isn't a missed appointment — it's a lead that went cold because nobody called back. The Lead Follow-Up panel surfaces the sales tasks that bring in new work, not the operational tasks that manage existing work. Overdue invoices, expiring permits, and unassigned appointments live in Needs Attention below; that's the "keep the wheels on" list. This list is the "fill the calendar two months out" list, and on most days it's the one that actually matters.
How temperature is set: Hot = verbal yes, estimate accepted, or contract requested. Warm = engaged within 7 days, opens emails, replies to SMS. Cool = no activity in 7–30 days but historically interested. Anything older than 30 days with no signal drops out of the dashboard into the long-tail Re-Engagement Campaign — it's still in the CRM, just not in your face.
Needs Attention
The Needs Attention section surfaces time-sensitive items that require action. Items are ordered by urgency. Each alert is actionable — clicking takes the user directly to the relevant record.
Revenue Chart
A 12-week rolling bar chart showing weekly revenue totals. Hovering over any bar shows the exact dollar amount and the number of invoices in that week. The current week bar updates in real time as invoices are paid.
Today's Schedule
A time-blocked list of all appointments and jobs scheduled for today. Each row shows the customer name and address, assigned technician(s), job type, scheduled time window, and current status.
Recent Activity Feed
A chronological log of actions taken across the entire account in the past 24 hours. Each entry links directly to the record it refers to.
Conversations Preview
Shows the 5 most recent unread messages from the Conversations inbox. Clicking any row opens the full conversation thread.
Quick Actions
AI Receptionist Strip
A live status bar at the bottom of the dashboard showing the AI phone receptionist's real-time activity. Clicking the strip opens the full AI Receptionist report.
Role-Based Dashboard Views
The dashboard adapts based on the logged-in user's role. Each role sees a version optimized for their responsibilities.