Life Truck Delivery Date Confirmation

Before a Life truck delivery goes out, we text the customer the date and ask them to confirm it. If they say yes we lock it in; if they say no we offer the next dates that actually have room on a truck and take their pick; if they never answer we give the date back and start again. Only deliveries on our own trucks go through this, and any delivery that needs a person rather than an automation is handed to the fulfilment team with the whole conversation attached.

Rules & IDs

Rule ID Rule Reading
LI-BL-FUL-005 Which deliveries we ask about Business logic
LI-BL-FUL-006 One conversation per customer per day Business logic
LI-BL-FUL-007 Two attempts, then stop asking Business logic
LI-BL-FUL-008 Authority to Leave needs no reply Business logic
LI-BL-FUL-009 Giving back an unconfirmed date Business logic
LI-BL-FUL-010 Reading the customer's reply Business logic
LI-BL-FUL-011 Confirming the date we offered Business logic
LI-BL-FUL-012 Offering the next available dates Business logic
LI-BL-FUL-013 Accepting the date they chose Business logic
LI-BL-FUL-014 Handing back to the team Business logic
LI-BL-FUL-015 Replies after the conversation closes Business logic
LI-BL-FUL-016 The reminder before delivery day Business logic
LI-BL-FUL-017 Escalating a delivery we cannot settle Business logic

Project owner
Kim Hoang Nguyen
Developers
Yvonne Kotevski
Sushil Adhikari
Julian Ayoub
For department
Fulfilment Team and Customer Care
Status
active
Documented
created 2026-08-24 · updated 2026-09-28this registry entry
Script created / updated
created 2025-09-03 · updated 2026-08-18from GitHub
Verified against production
2026-08-2485d4a74 · 85d4a74 · e7e44ef · e7e44ef · e7e44ef · 7a55ec6 · 1750369
Systems touched
aws-lambdanetsuiteaws-dynamodbkustomeraws-end-user-messaginggoogle-sheetssupabase
Rules
Terms

Three readings of the same rules. Nothing is duplicated between them. Printing gives you the business reading followed by the diagrams.

What it does. It runs the conversation that turns an intended delivery date into a confirmed one. It texts the customer the date, reads their reply, and writes the answer back against the order so the rest of the fulfilment chain knows whether the delivery is agreed. When the customer does not want the date, it offers alternatives that are genuinely available and books the one they choose. When nothing can be settled automatically, it stops and puts the delivery in front of a person.

Why it exists. A Life truck delivery that turns up when nobody is home is the single most expensive failure in fulfilment: the truck, the driver, the slot on the run and the second attempt are all lost, and the customer is the one who has to chase it. Confirming the date first turns that cost into a text message. It also stops the older failure mode, where a delivery nobody had agreed to sat on a truck run and blocked capacity that a confirmed delivery could have used.

Who it affects. Customers waiting on a Life truck delivery notice first — they receive the messages. The Fulfilment Team feels it next: every delivery this cannot settle lands in their queue, and every date it releases goes back into truck scheduling. Customer Care picks up the customers who reply after a conversation has closed, or who reply with something the automation cannot read.

When it runs. The outbound side runs on a schedule and works backwards through the conversation — last chances first, then follow-ups, then deliveries nobody has been asked about yet. A delivery becomes eligible once it is going on a Life truck and has a delivery date set. Replies are handled the moment they arrive, not on a schedule. The reminder goes out about three days before the delivery date, and the escalation sweep runs over deliveries that have already gone wrong.

How it decides.

  • Only Life truck deliveries with a date set are asked about at all, and any delivery a person has marked as manually handled is left alone entirely.
  • Orders going to the same customer on the same day are treated as one delivery and get one message, not one per order.
  • A customer who has authorised the driver to leave the delivery is told the date rather than asked to confirm it — unless part of the delivery needs the customer present, in which case they are asked like anyone else.
  • A customer gets two chances to reply. After the second unanswered message the date is given back and the delivery goes for rescheduling.
  • A "no" is never treated as a dead end: we come back with the next dates that have real capacity and let the customer pick one.
  • Anything the automation cannot read with confidence — an ambiguous reply, a choice we never offered, a delivery with no available dates — goes to a person rather than being guessed at.

Outcomes. A delivery leaves this process in one of six states: confirmed on the original date; confirmed on a date the customer chose instead; released for rescheduling because nobody replied; waiting on the Life Interiors team because the reply needed a human; left untouched because someone marked it for manual handling; or escalated to the fulfilment team because it has been rescheduled too many times or we have no usable phone number for it.

Which deliveries we ask about LI-BL-FUL-005

# If… Then… Because
1 The delivery is going on a Life truck and has a delivery date set It enters the confirmation conversation These are the only deliveries where our own capacity is at stake and a failed attempt costs us a truck slot
2 Someone has marked the delivery as manually handled It is left completely alone — no message, no field written A person has taken ownership; automation writing over them would undo their work
3 The delivery is not on a Life truck It never enters this process Third-party couriers run their own notification and booking

One conversation per customer per day LI-BL-FUL-006

# If… Then… Because
1 A customer has several orders arriving the same day, on the same terms They get one message covering all of them, and one reply settles them all Three texts about one van turning up reads as a fault, and three separate answers would let the orders drift apart
2 The same customer has orders on two different days Each day is its own conversation They are two deliveries, and the customer may want one and not the other
3 Two orders for the same day differ on whether the driver may leave them They are handled as separate conversations One can be left on the doorstep and one cannot, so they cannot share an answer

Two attempts, then stop asking LI-BL-FUL-007

# If… Then… Because
1 Nobody has been asked about this delivery yet Send the first request and record that one attempt has been made The conversation has to start somewhere, and the record is what stops it starting twice
2 One attempt has been made and no reply has come Send a second, more direct request and record the second attempt People miss a text; one reminder is reasonable, and it is cheap next to a failed delivery
3 Two attempts have been made and no reply has come Stop asking, tell the customer the delivery will be rescheduled, and release the date Asking a third time does not produce an answer, and holding an unconfirmed slot costs capacity
4 The delivery has a confirmation state we do not recognise Raise it for review rather than guessing which attempt it is on Guessing could mean texting a customer who already answered

Authority to Leave needs no reply LI-BL-FUL-008

# If… Then… Because
1 The customer authorised the driver to leave the delivery, and nothing in the delivery needs them present Tell them the date, expect no reply, and mark the delivery agreed They have already told us they do not need to be home, so asking them to confirm adds nothing
2 The customer authorised leaving, but part of the delivery needs the customer present Ask them to confirm as normal A two-man or full-service delivery cannot be left on a doorstep, so the authority does not apply

Giving back an unconfirmed date LI-BL-FUL-009

# If… Then… Because
1 Two attempts have gone unanswered Clear the delivery date, the dispatch date, the courier approval and the reason it was changed, so the delivery looks unscheduled again This is deliberately how the order falls back into shipping automation for a fresh date — leaving any one of them set would keep it out
2 The date is released Also clear the confirmation state itself The next date has not been asked about yet, so any leftover state would put the delivery in the wrong queue
3 The date is released Still tell the customer it is being rescheduled Silence after two messages reads as the order being lost

Reading the customer's reply LI-BL-FUL-010

# If… Then… Because
1 The reply clearly agrees Treat it as a yes Customers say yes in many ways and we should not fail them on wording
2 The reply clearly declines or asks to change the date Treat it as a no and move to offering alternatives Declining is the start of rescheduling, not a dead end
3 We asked the customer to pick from a numbered list and they reply Only a number we actually offered counts; anything else is treated as needing a person Acting on a number we never offered would book a delivery onto the wrong run
4 The reply cannot be read with confidence Treat it as needing a person, never as a yes A wrong yes puts a truck on the road; a wrong hand-off costs someone a phone call
5 The customer says no again after we already offered dates Hand it to a person rather than offering the same list again They have seen the options and none worked, so repeating them wastes everyone's time

Confirming the date we offered LI-BL-FUL-011

# If… Then… Because
1 The customer agrees to the date Mark the delivery confirmed and acknowledge it The delivery is now agreed and the rest of fulfilment can rely on it
2 The delivery is confirmed Close the conversation There is nothing further to ask, and leaving it open would let a stray reply reopen it

Offering the next available dates LI-BL-FUL-012

# If… Then… Because
1 The customer declines the date Offer up to three of the next dates that have real truck capacity for their address and volume Offering dates we cannot actually deliver on just moves the failure later
2 Dates are offered Leave the delivery's confirmation state untouched until they pick Nothing has been agreed yet, and marking it early would misreport the delivery as settled
3 We hold no volume or address for the delivery, or the availability engine returns nothing Do not offer anything — hand it to a person An offer we cannot honour is worse than a phone call

Accepting the date they chose LI-BL-FUL-013

# If… Then… Because
1 The customer picks one of the offered dates Move the delivery to that date, book it onto the run that had the capacity, and confirm it The offer was made against a specific run, so the booking has to land on that run to be real
2 The chosen run travels by linehaul Record the linehaul date too The goods have to travel to the delivery city before the delivery date
3 The delivery is rebooked Tell the customer the new date is confirmed They chose from a list and need to know it landed

Handing back to the team LI-BL-FUL-014

# If… Then… Because
1 The reply cannot be read, or picks something we never offered Mark the delivery as needing the Life Interiors team and stop automating it The automation has run out of confident moves
2 No delivery dates can be offered Mark it the same way The customer has said no and we have nothing to offer them
3 A delivery is handed back Leave the date as it stands Releasing a date the customer may still want would make the follow-up call harder

Replies after the conversation closes LI-BL-FUL-015

# If… Then… Because
1 A customer replies after their delivery is already settled Record what they said, tell them a person will pick it up, and raise it for the team Their delivery is agreed and a late reply must not silently re-open it
2 A late reply arrives Change nothing on the order The automation cannot tell whether they are confirming, cancelling or asking a question, and a person can

The reminder before delivery day LI-BL-FUL-016

# If… Then… Because
1 A confirmed delivery is about three days away Send one reminder that the date is locked and routes are being finalised It is the last useful moment for a customer to tell us something has changed
2 A reminder has already gone out today Do not send another A duplicate reminder reads as a system fault
3 The reminder goes out Change nothing on the order, and expect no reply It is informational; the delivery is already agreed

Escalating a delivery we cannot settle LI-BL-FUL-017

# If… Then… Because
1 A delivery's date has been changed three or more times Stop automating it and raise it for the fulfilment team Three reschedules means something is wrong that a text message will not fix
2 We have no mobile number, or only a landline Raise it for the fulfilment team The whole process is SMS-based, so there is no way to ask
3 A delivery is escalated Give the team the conversation so far, and ask them to set the confirmation state by hand The team's phone call is what decides what happens next, and the automation follows that state

Field registry

Every field this automation reads or writes, by the name it carries in the system — what it means, and what changes when it changes. Field ids are in the developer reading.

Inputs — what it reads

Values the automation looks at to make its decision. Change one of these and the decision changes.

FieldWhat it meansWhat it changesStatus
Customer Delivery ConfirmationSales Order Where this delivery has got to in the confirmation conversation with the customer. The single most important field here. Its value decides which saved search an order appears in, and therefore what the automation does next. Cleared to blank when two attempts go unanswered, which is what sends the order back for a new date. confirmed
Scheduled Delivery DateSales Order The date the customer is being asked to confirm, and the date we intend to deliver. Supplies the date quoted in every message, and is part of the key that groups orders into one conversation. Overwritten when a customer picks a different offered date, and cleared on the no-confirmation reset. confirmed
needs confirmingSales Order The customer has authorised the driver to leave the delivery without anyone home. Decides whether we ask for a reply at all. An ATL order whose whole group is Standard Courier is told the date rather than asked to confirm it. needs confirming
needs confirmingSales Order How many times this order's delivery date has been changed. At three or more, the order stops being handled automatically and is escalated to the fulfilment team instead. needs confirming

Outputs — what it writes

Values the automation puts back. Everything downstream of this rule reads them, so a wrong value here travels.

FieldWhat it meansWhat it changesStatus
Customer Delivery ConfirmationSales Order Where this delivery has got to in the confirmation conversation with the customer. The single most important field here. Its value decides which saved search an order appears in, and therefore what the automation does next. Cleared to blank when two attempts go unanswered, which is what sends the order back for a new date. confirmed
Scheduled Delivery DateSales Order The date the customer is being asked to confirm, and the date we intend to deliver. Supplies the date quoted in every message, and is part of the key that groups orders into one conversation. Overwritten when a customer picks a different offered date, and cleared on the no-confirmation reset. confirmed
Ship DateSales Order The date the order is due to leave the warehouse. Cleared on the no-confirmation reset so the order re-enters Shipping Automation module 2, and set from the chosen run when a customer picks an offered date. confirmed
Courier ApprovalSales Order Whether a courier has been approved for this order. Set back to false on the no-confirmation reset. Without this the order would not be picked up again for courier selection. needs confirming
Reason for Service ChangeSales Order Why the delivery service on this order was changed. Cleared on the no-confirmation reset so the order is re-assessed from scratch rather than carrying a stale reason. needs confirming
needs confirmingSales Order The truck run allocated to this delivery. Written when a customer picks one of the offered dates, so the delivery is booked onto the specific run that had the capacity. needs confirming
needs confirmingSales Order The date the goods travel on the linehaul leg for the chosen run. Written alongside the chosen date when the selected run uses a linehaul truck. needs confirming