Fleet is the inventory of trucks your company owns or leases. Different from customer assets (those are the equipment you serviced — A/C units, water heaters, etc.). Fleet covers your service trucks: who drives each one, what's stocked on it, when it last got serviced, and what's due next.
Fleet is a Bundle and Front Office feature. Single-truck operators on Voice or Visibility don't have access — the page shows a tier-lock card pointing to upgrade.
Adding a truck
- 1Open Fleet
Sidebar → Inventory → Fleet (/portal/fleet).
- 2Click Add truck
Top-right header button. The modal asks for name (required) plus optional year, make, model, VIN, license plate, color, current mileage, primary driver, and status.
- 3Set primary driver
Pick from the dropdown of existing techs. Leave blank for unassigned. Primary driver is the default — per-appointment overrides are a v2 feature.
Logging maintenance
Open a truck (click its card on /portal/fleet), then click 'Log service' in the Maintenance log section. Pick a type (oil change / tire rotation / inspection / repair / other), set the date completed and current mileage, optionally enter cost + vendor + notes, and optionally set a next-due date and/or next-due mileage.
When you set next_due_date or next_due_mileage on a maintenance log, the truck shows up in the Maintenance overdue tile on /portal/fleet (and on the truck's detail page) once it's overdue. Skip these fields if there's no recurring schedule for that maintenance type.
Tick the 'Update truck odometer to this mileage' box on a new maintenance log to bump the truck's current_mileage forward — saves you the separate edit.
Parts inventory per truck
Each truck has its own parts list. Different from the global Parts catalog (which is your master price list of parts you sell to customers). Truck inventory is what's physically stocked on that truck right now.
- 1Add a part
On the truck detail page, click 'Add part' in the Parts on truck section. Required: part name. Optional: SKU, supplier, cost per unit, quantity on truck, reorder threshold.
- 2Set a reorder threshold
When quantity ≤ threshold, the part flags as low-stock. The truck card on /portal/fleet shows a 'X parts low' badge. Skip threshold to silence alerts on parts you don't track tightly.
- 3Restock
When you refill a part, click the pencil icon next to it, update the quantity, and tick 'Mark as just restocked' before saving. The last_restocked_at timestamp gets bumped server-side.
Compliance dates
Each truck tracks five optional expiry dates: registration, inspection, insurance, manufacturer/extended warranty, and lease end. All five are nullable — leave blank to skip alerts on a category.
| Registration | DMV renewal. Annual or biennial varies by state. Truck card flags amber 30 days out, red when expired. |
| Inspection | State safety/emissions inspection. Annual most states; CA biennial for emissions; FL/NC have none for non-commercial. |
| Insurance | Commercial auto policy renewal. 6 or 12-month cycle. |
| Warranty | Manufacturer or extended warranty expiry. Lets you decide repair-vs-claim before paying out of pocket. |
| Lease | Lease term end date (leased trucks only). Window is 90 days for the renew-vs-buy decision, longer than the 30-day window on the others. |
When you set a date, the truck card on /portal/fleet shows an amber badge like "Registration: expires in 12d" or red "Inspection: 8d overdue". The Compliance due dashboard tile counts trucks with at least one item in its alert window.
Both Add Truck and Edit Truck modals have a collapsible "Compliance & dates" section near the bottom — click to expand, fill in any of the five date pickers, save. Clearing a date removes the alert for that category.
Retiring a truck
Click 'Retire' on the truck detail page. The truck is hidden from the default fleet list but the maintenance log + parts inventory are preserved for historical reference (warranty claims, IRS Section 179 depreciation, etc.). Reactivate by editing the truck and switching status back to Active.
There's no hard-delete on trucks because deleting cascades into truck_maintenance + truck_inventory and SET NULLs appointments.truck_id, destroying historical data you may need years later. Retire is the right move.
What's next
v1 + v1.5 ship with truck registry, primary-driver assignment, maintenance log with next-due, per-truck parts inventory, and 5-field compliance-date tracking. Coming in future releases: per-appointment truck override (different driver picks up a job in someone else's truck), mileage auto-update from GPS data, per-truck job profitability rollup, and email/SMS reminders before compliance dates expire.