โ† All docs

Set Up the Booking System

Configure resources (rooms, tables, courts, agents) so your AI can actually book โ€” with conflict prevention.

7 min read ยท bookings

EmirVoice's booking engine prevents double-bookings at the database level using a Postgres exclusion constraint.

1. Define your resources

Go to Resources in the dashboard. Add what's bookable:

  • Hotel room: type room, capacity 2-6, price per_night
  • Restaurant table: type table, capacity 2-12, price per_slot
  • Padel court: type court, capacity 4, price per_hour
  • Agent (real estate): type agent, capacity 1, price per_session
  • Coach (sports/fitness): type coach, capacity 1-4, price per_session

Each resource has metadata (JSON) for context โ€” view, surface, area.

2. Reminder offsets

Default: 24 hours before for hotel check-ins, 1 hour before for everything else. Configurable per-resource.

3. Test conflict-free booking

Try booking the same court twice via the assistant โ€” the second one is rejected automatically with "that slot just got taken โ€” want X?"

4. Waitlist (Wave D autonomy)

When a popular slot fills up, the AI offers waitlist. The moment a cancellation happens, the worker auto-WhatsApp the next waiter โ€” within 60 seconds.

5. No-show handling

After booking start time + grace period (default 30 min), un-checked-in bookings auto-flip to no_show. The freed slot becomes available โ€” and the waitlist gets notified.