WorkestraDocs
ModulesField Service

Technicians

Field-team profiles — skills, certifications, home base, hourly rate, truck inventory.

A technician record wraps a regular Workestra user with the field-service-specific data the dispatcher needs: skills, home location, hourly rate, and (optionally) a truck stock location. AI dispatch uses these to score recommendations.

Creating a technician

Go to /fsm/techniciansNew technician.

FieldRequiredNotes
UserPick an existing Workestra workspace member (one technician per user per workspace)
Display nameWhat shows on the dispatcher board + customer-facing reports
Email + PhoneContact details (defaults from the user record)
Employment kindemployee / contractor / partner
Home service areaDefault zone — used in proximity scoring
Home latitude / longitudeThe geographic point distance is measured from
Hourly rate + CurrencyDefault labor billing rate
Truck locationStock location of kind=virtual that holds the tech's on-truck inventory
ActiveInactive techs are hidden from dispatch + lists

Creating a technician automatically also creates a resource_resources row (with owner_type='technician') — that's what lib/resource consults for the tech's calendar.

Skills

Skills come from Workestra's workspace-wide skill taxonomy (shared with the People, Recruiting, and Planning modules — so a tech who's also an employee on a project keeps one skill list).

On the technician detail page (/fsm/technicians/[id]):

  1. Click Add skill in the Skills card.
  2. Pick a skill from the taxonomy (or create a new one if you have permission).
  3. Set:
    • Proficiency — 1 to 5 (self-rated)
    • Is certified — yes/no
    • Certified at / certified by — date + issuer (for tracked certifications like EPA 608, NEC 2023, etc.)
    • Notes — free text

Skill match in AI dispatch checks for presence (not proficiency level) — every required skill that the tech has counts as 1. Proficiency + certification are surfaced as context, not as a scoring signal in v1.

Home location

Two ways to use it:

SetupEffect on AI dispatch
Home service area setSame-service-area appointments score 0.9 on proximity
Home lat / lng set (no service area match)Distance from appointment location decays linearly to 0 at 100 km
Neither setProximity defaults to 0.3 baseline (useless)

Setting both is best — the service-area check runs first, the coordinate decay is the fallback.

Truck inventory

If you want AI dispatch to bias toward technicians who already carry the right parts on their truck:

  1. Create a Stock location with kind=virtual (one per truck) — e.g. "Alex's truck", "Mobile #3".
  2. On the technician's detail page, set Truck location to that stock location.
  3. Stock-managed parts pulled from the truck location on a previous job reduce its quantity; you re-stock from the warehouse.

When a work order's parts list overlaps with what's on a tech's truck, that tech gets a +0.1 boost in AI dispatch scoring. Without a truck location, techs score a neutral baseline on the truck-stock factor.

A dedicated kind=truck for stock locations (with explicit truck filters in the Stock UI) is queued for the next release. For now, mark trucks as kind=virtual and identify them by name.

Availability

The dispatcher checks the technician's resource calendar before suggesting them for an appointment. Three things mark a tech unavailable:

  1. Working pattern — recurring availability windows set on resource_working_patterns (e.g. Mon-Fri 8:00-17:00, no weekends)
  2. One-off unavailability — time off, sick days, training — captured on resource_unavailability
  3. Booked appointments — any other appointment overlapping the candidate window

AI dispatch hard-skips techs with overlapping unavailability — they never appear in the ranked list.

Removing / deactivating a technician

To take a tech out of rotation without losing history:

  1. Open the technician detail page.
  2. Toggle Active off.
  3. The tech disappears from dispatcher lists + AI suggestions but their historical appointments + work orders remain attached.

To permanently delete: use the delete action. Their appointments and work orders are preserved (with assigned_user_id set to NULL).

  • Dispatch — how skills + home base + truck inventory feed scoring
  • Service Areas — what "home service area" refers to
  • Appointments — what techs get assigned to