SOP: AI scheduler ("Schedule w/ AI")
“Schedule w/ AI” negotiates a job’s time slot with technicians over text, one at a time, instead of a dispatcher calling/texting each tech by hand. It only ever settles the date/time and which tech — everything else about the job (distance pay, warehouse changes, other schedule checks) stays with a person.
The flow
Section titled “The flow”flowchart TD START["Dispatcher clicks 'Schedule w/ AI'<br/>(job view or Send Welcome screen)"] --> SETUP[Review/edit window, time type,<br/>warehouse, tech order, mode] SETUP --> BUILD[System builds ranked tech list<br/>opted-in only, filtered by day-part load & conflicts] BUILD --> TEXT[Text top technician an offer] TEXT --> REPLY{Technician reply} REPLY -->|Accept| BOOK REPLY -->|Counter — fits window| BOOK REPLY -->|Counter — doesn't fit| RETRY["Ask same tech once more"] RETRY -->|Still no fit| NEXT[Move to next technician] REPLY -->|Decline| NEXT REPLY -->|Question, before any yes| PAUSE[Stop — dispatcher steps in] REPLY -->|Question, after a yes| BOOK REPLY -->|Emoji / ambiguous| CONFIRM["Read the meaning back<br/>before booking"] CONFIRM --> BOOK NEXT --> TEXT BOOK{"Still open?<br/>Not already scheduled by a person?"} BOOK -->|Pass| WRITE[Write tech/date/time via normal scheduling] WRITE --> CARDTXT[Text tech full job card] WRITE --> CUSTTXT[Text customer time confirmation] WRITE --> TG[Post one alert to Telegram] WRITE -.->|No warehouse set| ASKWH["Ask tech which warehouse, after booking<br/>never blocks or cancels the booking"]1. A dispatcher starts a session
Section titled “1. A dispatcher starts a session”Open a job → Schedule w/ AI. This button lives on the job view and on the Send Welcome screen. Before starting, the dispatcher reviews/edits:
- Date/time the customer wants — pulled from intake, editable.
- Time type — exact time, part of day, after a time, before a deadline, or any time (see The four time types).
- Warehouse for the part — can be left empty.
- List of technicians to contact, in order — drag to reorder.
- Mode:
- Simulate — no real texts send.
- Approve — a person must click send on each text.
- Live — the system sends texts on its own.
2. The system builds the technician list
Section titled “2. The system builds the technician list”- Only technicians opted in for AI texts are contacted.
- A technician is skipped if they already have two jobs in the same part of the day (morning/afternoon/evening), or if they’re busy on a job at the same exact time.
- Technicians with room in their day are ranked first.
- Two separate rank lists exist — normal cars and luxury cars. The system uses whichever list matches the job’s vehicle.
3. The system texts technicians, one at a time
Section titled “3. The system texts technicians, one at a time”The top-ranked technician gets a text offering a time slot. If they don’t reply in time, the system moves to the next technician on the list. Possible replies:
| Reply | What happens |
|---|---|
| Accept | Moves to booking (step 4). |
| Counter, fits the customer’s window | Books it at the countered time. |
| Counter, doesn’t fit | Asks the same technician once more. If still no fit, moves to the next technician. |
| Decline | Moves to the next technician. |
| Question, before any technician has said yes | Stops and hands off to a dispatcher, in most cases. |
| Question, after a technician already said yes | Does not cancel the booking — books the time and answers the question later. |
| Emoji / ambiguous reply (e.g. 👍) | Treated as a weak yes — the system reads the meaning back to the technician before booking. |
Warehouse pushback: if a specific warehouse is already set on the job, the first text tells the technician the pickup location. If the technician pushes back, the system replies once with a firm answer — it does not change the warehouse without a person’s help.
4. The system books the job
Section titled “4. The system books the job”Before booking, it re-checks the job is still open and that no person has already scheduled it elsewhere. If both checks pass:
- Writes technician, date, and time to the job through the normal scheduling process.
- Texts the technician the full job card — customer name, phone, address, time, vehicle, part number, warehouse.
- Texts the customer the normal time-confirmation text.
- Posts one alert to the Telegram group so a person can check the booking.
If no warehouse was set going in, the system asks the technician which warehouse to use after booking — that question never blocks or cancels the booking.
5. Dispatcher controls during a session
Section titled “5. Dispatcher controls during a session”The AI Scheduling page shows texts live as they happen. A dispatcher can:
- Pause / resume the session
- Skip the current technician
- Cancel the session
- Take over and finish the booking by hand
The four time types
Section titled “The four time types”| Type | Meaning |
|---|---|
| Exact | The technician must match the exact time. |
| Flexible / part of day | Any time in that window works. |
| After a time | The job can start at or after the named hour. |
| Before a deadline | Work must finish by the named hour — the system only offers times early enough to make the deadline. |
What the AI scheduler does NOT do
Section titled “What the AI scheduler does NOT do”- Distance pay never comes up. The AI never asks about it and never books it. A dispatcher can add distance pay after the AI books the job, up until the job’s start time — this keeps the negotiation focused on the time slot only.
- Only the two-jobs-per-part-of-day check runs inside the AI scheduler’s search. Other checks — part-vs-glass mismatch and the OEM parts deposit — are not checked inside the AI scheduler’s own flow. They still show up later if a dispatcher opens the manual Schedule or Reschedule screens for the same job.