Concierge UI system
Right-side desktop launcher and fixed panel, mobile sheet, welcome state, clear chat, return-to-browse, loading, error, and fallback states.
Home / Work / Case study
Case study · AI chat concierge
A production Nuxt concierge for a jewelry marketplace: buyer prompts, natural-language diamond search, recommendation cards, grounded policy answers, analytics, and handoff when a human expert should take over.
The problem
Buyers often arrive with half-formed intent: a budget, a certificate preference, a shape, or a goal like value, sparkle, clarity, or an occasion. The assistant had to translate that conversation into usable product criteria, show real inventory cards, answer company policy questions from verified knowledge, and move uncertain cases toward an expert instead of guessing.
Architecture
What was engineered
Right-side desktop launcher and fixed panel, mobile sheet, welcome state, clear chat, return-to-browse, loading, error, and fallback states.
Starter paths for value, certification, clarity, sparkle, investment, and occasion, with follow-up budget, shape, priority, and color chips.
Natural-language intent becomes diamond search criteria; responses render recommendation cards with carat, color, clarity, certification, price, and detail navigation.
GemGem process and policy questions use a server knowledge base with embedding retrieval, then fall back to the agent only when appropriate.
Input validation blocks unsafe prompts, server sessions expire, guest messages are capped, requests are rate-limited, and LLM calls have a per-request budget.
No-match and expert-help paths collect sourcing, consultation, or callback details and create support tickets instead of pretending the AI can solve every case.
Implementation facts
Nuxt/Vue components, Pinia state, composables for assistant flow, recommendation actions, comparison, and sourcing requests.
POST /api/diamond-assistant/chat owns provider calls, session state, rate limiting, knowledge retrieval, and final response serialization.
Default model is gpt-4o-mini, with code paths for OpenAI-compatible APIs, OpenRouter, Gemini, HuggingFace, and Ollama.
Policy/process answers use a JSON knowledge base plus embeddings loaded from CDN/object storage or local fallback, retrieving the top 3 candidates.
Defaults include 60-second frontend request timeout, 180-second server timeout, 12 LLM calls per request, and 100 messages maximum per session.
Existing tracking covers opens, messages, recommendations received, product clicks, compare clicks, sourcing fallback, and submitted requests.
Screens



We map the job, the data, the actions, and the handoff rules before the model gets near production.