Skip to content

SOP: the Follow Ups module

The Follow Ups module is a shared to-do list for the dispatch team. It stores promises that must not get lost between shifts.

Examples: “Call the customer about a late part.” · “Ask the tech to send cash today.”

  • Operations → Follow Ups (FollowUpResource) — lists every follow-up item.
  • Job view — each job page has its own Follow Ups section, showing items linked to that job.
  • Daily digests — all three daily ops messages show open follow-ups.

Each item is one row in the follow_ups table.

  • job_id can be empty. Many follow-ups are about a tech, a vendor, or a supplier — they aren’t linked to any job at all.
  • due_date is a plain text date (YYYY-MM-DD) — there’s no special date type behind it.
  • “Overdue” means the due date is before today, where today is Pacific time, not UTC.
  • A follow-up with no due date is a normal state, not a data gap. The system sorts these last, never marks them overdue, and never includes them in the daily Telegram message.
  • An assignee is optional. With no one assigned, the item belongs to the shared team — not to any one person.
  • Only dispatch staff can be assigned — technicians are excluded from the assignee list.
  • Any dispatch staff can close an item, even one assigned to someone else. Assignment is about ownership, not a lock.
  • markDone(?note, Employee) — closes the item with a result. The note is optional; most items need none.
  • cancel() — cancels the item instead of completing it.
  • Both actions are safe to repeat. A double-click doesn’t overwrite anything — the system keeps the first result.

Follow Ups is a living list, not a set-and-forget one. Dispatch should:

  1. Check it at the start of shift — pick up anything left open from the previous shift.
  2. Add new items as promises come up through the day (a callback owed, something to ask a tech, a vendor to chase).
  3. Review it again at least a couple more times during the day — don’t wait for the end of shift to find out something slipped.