Work

Year 2025 · KLIKIT · Architect · Shipped

Voice ordering and reservations

A unified voice-AI surface for ordering and reservations, designed as a tenant-provisioned module atop the platform's own order, menu, payment, and booking primitives.

Context

The voice-AI category for hospitality is fragmenting into single-purpose vendors: one provider handles orders, another reservations, another deposit collection. Each must then be integrated against a third-party point-of-sale, booking system, and payment provider, multiplying the surface of dependence and error. The platform on which this work was carried out already maintained ownership of those primitives — order pipeline, menu catalogue, payment service, and reservations system. What was missing was not the engine but the conversational front door.

Design

  • A microservice fronting a conversational voice agent. Inbound calls resolve to a business, a branch, and the streams that branch is provisioned for: ordering, reservations, or both.
  • A two flows, one entry point model. Per-venue provisioning toggles drive a split-flow suggestor at call start, filtering the agent's tools and greeting to the surfaces the venue actually offers.
  • A payment-first ordering principle: an order is never written until payment is confirmed. This eliminates an entire class of fault — orders placed but never paid — that arises whenever ordering and settlement are loosely coupled.
  • Reservations reuse the existing prepayment state machine rather than re-implementing it. The voice layer relays a deposit link and observes settlement; the underlying booking remains the authoritative record.
  • A shared-number entry model using parameterised messaging links carrying a per-business entry code. Onboarding is therefore not gated on procuring a phone number per venue.

Outcome

The result is a unified voice surface that competes on each axis with the single-purpose vendors, precisely because the underlying platform is the system of record for orders, menu, payment, and bookings — rather than an integrator into someone else's. The model is also extensible: any future conversational channel (chat, walk-in kiosk) can be layered above the same provisioning and state primitives.

Stack

Go · Echo · Redis (session and cart state) · GORM · MySQL · provider-agnostic conversation runtime · messaging channel abstraction (WhatsApp / SMS).