Lesson 8 of 10 · 5 min
Assigning Technicians, Editors, and Project Managers
Assign the right people to a job using the Rankings picker, inline dropdowns, and bulk assignment — and understand how permission rules govern who can assign what.
Assigning Technicians, Editors, and Project Managers
Video coming soon
Lesson Notes
Technician assignment is the most visible assignment action because it must happen before a job can move into the Shooting stage. On a Pending job, a 'Find Technician' button appears both on the JobCard and in the table row's Actions column. Clicking it opens the Rankings dialog — a ranked list of available technicians showing factors like availability, distance to the property, preferred status, reliability score, and skill match, each expressed as a visual bar. The top-ranked technician is labeled 'Recommended.' Clicking a technician's name or the Assign button assigns them and moves the job's status from Pending to Assigned.
Inside the JobTaskView's Task tab, every assignee slot (Customer, Technician, Project Manager, Editor) can be changed inline by clicking the current assignee's row. A dropdown appears with a search box and member list. For the Technician slot, clicking 'Change technician' on an already-assigned job re-opens the Rankings dialog rather than a plain dropdown, preserving the scoring context. For Customer, PM, and Editor, a simple searchable dropdown is shown. The Customer field can only be changed by Owners and Admins. The Technician field can be changed by Owners, Admins, and Project Managers. Editors and Technicians cannot change any assignment.
On the iOS app, the AssignTechnicianView is a full-screen sheet that opens from the 'Assign Technician' button in OrderDetailView. It shows a Mapbox map pinning the property and each technician's home base, with a scrollable ranked list below the map. The ranking algorithm matches the web's TechnicianRanker: Availability 30%, Preferred 25%, Reliability 20%, Distance 15%, Skill 10%. Each card shows the technician's name, avatar, distance from the property (if coordinates are available), and factor bars. The currently assigned technician is pre-highlighted. Tapping a technician selects them; the 'Unassign' toolbar button removes the assignment.
Bulk assignment from the list view is the fastest path when you need to assign the same technician, PM, or editor to many jobs at once. Select the target jobs using the checkboxes, then click the 'Assign' button in the bulk action bar. A popover opens with four role tabs at the top: Technician, Project Manager, Editor, Customer. Switch to the role you want, then click a team member's name from the list. The assignment runs in parallel across all selected jobs via Promise.allSettled, and the toast shows '5 jobs assigned' or '2 jobs failed' per role. The list re-fetches immediately after.
Permission rules for assignment: PERSONAL_OWNER (solo provider) does not see assignment UI — they are the technician and editor by definition. OWNER and ADMIN can assign any role on any job. PROJECT_MANAGER can assign technicians and editors on jobs they manage (where they are the PM). TECHNICIAN and EDITOR cannot assign any role. These rules are enforced both in the frontend permission helpers and on the backend, so sending an unauthorized request returns a 403 even if the client-side guard is bypassed.
Key Takeaways
- The 'Find Technician' button opens the Rankings dialog with a scored, ranked list — the top result is labeled 'Recommended.'
- All four assignment slots (Customer, Technician, PM, Editor) are editable inline inside the Task tab via searchable dropdowns.
- On iOS, AssignTechnicianView shows a Mapbox map plus a ranked list using the same weighting algorithm as the web.
- Bulk assignment from the list view assigns the same person to all selected jobs in parallel across Technician, PM, Editor, and Customer roles.
- Owners and Admins assign any role on any job; Project Managers only on their managed jobs; Technicians and Editors cannot assign.