Meet Laila. The jewellery concierge that listens. A fully deployed AI sales assistant for Astraea Fine Jewellery — built from scratch in weeks, live in production, and capable of selling in various languages through text, voice, and image.
WHAT WAS BUILT
Not a chatbot.
A concierge.
Laila is an AI-powered sales assistant embedded directly into Astraea Fine Jewellery's website. She understands what a customer is looking for — by reading what they type, listening to their voice, or analysing a photo they share — and responds the way a trained in-store stylist would: with curated product recommendations, elegant replies, and a genuine sense of the brand.
FOR BUSINESS OWNERS
Your best salesperson. Available always.
Laila answers customer questions at 2 am in Arabic, recommends a pearl necklace to someone browsing in Hindi, and helps a French speaker find the perfect anniversary gift — all without a single human agent involved.
She knows your entire catalogue, never pushes too hard, speaks the customer's language naturally, and sends them directly to checkout with one tap. Think of her as your most consistent, most patient, most knowledgeable team member — who never calls in sick.
Updating the catalogue is as simple as editing a spreadsheet. No developers, no deployments.
FOR TECHNICAL EVALUATORS
Production-grade. Auditable. Extensible.
A single-file HTML shell loads two external JS modules (config.js, catalog.js) and communicates exclusively with a Deno Deploy edge proxy. No API keys, prompts, or webhook URLs are exposed in page source.
The proxy abstracts four backend layers: Make.com automation (8-route GPT-4o scenario), ElevenLabs TTS, Airtable catalog, and OpenAI Whisper transcription. The catalog provider is hot-swappable via a single env var — Airtable today, Cloudflare D1 or KV tomorrow. Conversation history persists in a Make datastore keyed by sessionId. The architecture is fully stateless on the client — drop-in replaceable at every layer.
Notes: Only a few items have been uploaded in the catalog therefore there could be limitations in the chat bot response