S Sanad
← saadm.dev
Demo · AI customer-support copilot

Customer support, augmented by Claude.

A SaaS-style helpdesk where every screen has an AI affordance: suggested replies with KB citations, conversation summaries, sentiment + category auto-tagging, RAG chat for end users, and EN ↔ AR translation. Built to demonstrate real LLM wiring — system prompts, streaming, caching, fallback, cost tracking — not just an OpenAI playground demo.

Browse the help centre · ~80 articles · works offline (mock mode) or with a real Anthropic key (live-mode setup)
AI Copilot · live
Suggested reply
Sorry for the trouble. Try the password reset link from the login screen — it sometimes lands in spam. If it doesn't arrive within 60 seconds, I can manually trigger one via our backup provider.
📎 Resetting your password

Every screen has an AI affordance

Not a wrapper around a chat widget — Claude is woven into the helpdesk workflow.

💬

Agent inbox + AI sidebar

Suggested reply, conversation summary, sentiment + category auto-tag, EN↔AR translation. Click "Insert" to push the AI's draft into the composer.

🤖

Customer chat with RAG

End-users chat with an AI that answers from the knowledge base with clickable citations. "Talk to a human" creates a real ticket in the agent inbox.

📚

Knowledge base + AI actions

Admin-only buttons on each article: Generate FAQ, Suggest improvements, Translate to Arabic. "Find gaps" clusters recent tickets and proposes new articles.

AI Console (admin)

Switch between Haiku 4.5 / Sonnet 4.6 / Opus 4.7 live. Edit the system prompt with a test-with-sample preview. Temperature, max-tokens, prompt caching toggles.

📈

Cost + fallback tracking

Dashboard shows AI calls, latency, fallback %, and dollar cost. Every call (live or mock) is logged so you can see what the LLM is actually being used for.

🛡

Server-side key handling

API key never touches the browser. Cloudflare Worker proxy at /api/sanad/ai/* holds the secret. Per-IP rate limit. Falls back to mock when key is absent — demo never breaks.

Two-minute walkthrough

  1. Open the agent inbox. Pick any conversation. Within ~600ms the right sidebar fills with a suggested reply (with KB citations), summary, sentiment, and category.
  2. Click "Insert" on the suggested reply → composer fills. Edit if you want, then send (⌘+Enter).
  3. Open an Arabic conversation. Click the Translate card → see English in the thread. Send a reply → auto-translates back to Arabic.
  4. Open the chat widget. Ask "How do I reset my password?" → streaming reply with a clickable citation chip.
  5. Click "Talk to a human" → ticket appears in the agent inbox in a second tab.
  6. Open admin → AI Console. Switch the model. Edit the system prompt. Click "Test with sample" → see the new prompt in action.
  7. Browse admin → Analytics → see AI calls, fallback %, latency, cost.