DEV Community

Ujjwal Dubey
Ujjwal Dubey

Posted on

Holding Bridal Consultation Slots: A Two-Phase Booking Pattern With Human Confirmation

Bridal jewellery in India is usually bought in long, planned visits: the family comes together, often on a weekend, and expects a salesperson's full attention. Double-booking that slot is a real problem.

When I sketch AI automation for jewellery retail India showrooms booking bridal visits on WhatsApp, I use a two-phase pattern: the system holds a slot, a person confirms it.

Phase 1: hold

from datetime import datetime, timedelta

HOLD_MINUTES = 30
slots = {}  # slot_id -> dict(state, phone, held_until, party)

def hold(slot_id, phone, party_size, now=None):
    now = now or datetime.now()
    s = slots.get(slot_id)
    if s and s['state'] in ('held', 'confirmed') and (s['state'] == 'confirmed' or s['held_until'] > now):
        return None  # not available
    slots[slot_id] = dict(state='held', phone=phone, party=party_size,
                          held_until=now + timedelta(minutes=HOLD_MINUTES))
    return slots[slot_id]
Enter fullscreen mode Exit fullscreen mode

The customer gets: "We have held Saturday 4 p.m. for you. Our team will confirm shortly."

Phase 2: confirm (a person)

def confirm(slot_id, staff_name, salesperson):
    s = slots[slot_id]
    if s['state'] != 'held':
        raise ValueError('slot not held')
    s.update(state='confirmed', confirmed_by=staff_name, salesperson=salesperson)
    return s

def expire(now=None):
    now = now or datetime.now()
    for sid, s in slots.items():
        if s['state'] == 'held' and s['held_until'] <= now:
            s['state'] = 'free'
Enter fullscreen mode Exit fullscreen mode

Staff confirm after checking that the right salesperson is in, that the family size fits the space, and whether the customer wants to see a particular collection.

Details that matter in jewellery

  • Assign a salesperson, not just a time. Families often ask for "the same person as last time".
  • Ask about the occasion and date in the hold message, so the salesperson can prepare pieces.
  • Reminder the day before, drafted automatically, with the store location.
  • No prices in any automated message.

Why two phases

Fully automatic booking is fine for a salon. For a high-value, emotional visit, the human confirmation is part of the service. For deciding what to build at all, see picking the first jewellery workflow to audit.

I run NxFlowAI (Mumbai). Code is illustrative.

Top comments (0)