Novo Chatbot

Novo Cinemas (Qatar & UAE) client logo

A bilingual (Arabic + English) AI assistant for Novo Cinemas — handles ticket booking, movie and showtime queries, policy questions, and complaint registration. Structured queries over a live database, RAG over unstructured content, streamed voice in both languages.

Status
Shipped
Client
Novo Cinemas (Qatar & UAE)
Context
Conversational booking + support across the Novo website and app
Role
Creator and lead engineer. Built end-to-end under a partner company's umbrella.

Bill of materials

  • Node.js
  • Python
  • PostgreSQL
  • MongoDB
  • Redis
  • Whisper
  • ElevenLabs
  • PlayAI
  • Freshdesk API

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.