Novo Cinemas runs one of the larger cinema chains in Qatar and the UAE and was rebuilding their web and app stack. They wanted a chatbot that could genuinely replace large chunks of the support surface — not an FAQ widget, but something that could list showtimes, book a specific seat, answer questions about experiences and formats, handle complaints, and do it all natively in Arabic and English with voice on both ends. I built the full assistant end to end under a partner company’s umbrella.
Architecture
The bot blends two retrieval shapes: a tools/functions layer that writes and executes structured queries against the live cinema database (movies, genres, showtimes, seat maps, prices, experiences) and a RAG layer over unstructured content (FAQs, terms, cinema-experience write-ups, policies). The LLM decides which surface to hit for each turn. Tools I built include live showtime fetch, seat availability by auditorium, booking initiation, complaint registration (which calls through to Freshdesk), movie metadata lookup, and a handful of domain-specific utilities like “what’s playing near me this weekend after 8pm”.
The data layer is split across PostgreSQL (structured cinema data — showtimes, bookings, seat maps), MongoDB (conversation memory, user preferences, transcripts), and Redis (rate limiting, session state, tool-call cache).
Voice
Full-duplex streaming voice on both sides. Speech-to-text is Whisper, streamed in real time. Text-to-speech is a hybrid — ElevenLabs and PlayAI both integrated, switched per voice/language to get the best result for Arabic and English respectively. Responses stream token-by-token to the user while the audio generator pipelines it back.
Bilingual native handling
Not translation. The assistant handles Arabic and English as first-class languages end to end — the prompts, the tool descriptions, the retrieved documents, the generation, the voice. A user typing Arabic gets an assistant that thinks in Arabic, queries the database in Arabic, retrieves Arabic FAQs, and speaks Arabic back. Same for English. Mixed-language turns are handled too, which matters in the GCC where code-switching is routine.
Shipped
Deployed across Novo’s digital surface. Handles the scale of a major cinema chain’s customer-facing queries.