Skip to content

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.

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"]

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.
  • 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:

ReplyWhat happens
AcceptMoves to booking (step 4).
Counter, fits the customer’s windowBooks it at the countered time.
Counter, doesn’t fitAsks the same technician once more. If still no fit, moves to the next technician.
DeclineMoves to the next technician.
Question, before any technician has said yesStops and hands off to a dispatcher, in most cases.
Question, after a technician already said yesDoes 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.

Before booking, it re-checks the job is still open and that no person has already scheduled it elsewhere. If both checks pass:

  1. Writes technician, date, and time to the job through the normal scheduling process.
  2. Texts the technician the full job card — customer name, phone, address, time, vehicle, part number, warehouse.
  3. Texts the customer the normal time-confirmation text.
  4. 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.

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
TypeMeaning
ExactThe technician must match the exact time.
Flexible / part of dayAny time in that window works.
After a timeThe job can start at or after the named hour.
Before a deadlineWork must finish by the named hour — the system only offers times early enough to make the deadline.
  • 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.