Ce que vous saurez faire à la fin
- Créer un Project Claude dédié au SAV avec contexte permanent (FAQ, politique remboursement, voix marque)
- Coder un system prompt qui produit un ton uniforme sur 100% des réponses, peu importe l’opérateur
- Définir une matrice d’escalade L1/L2/L3 où Claude traite 70% des demandes seul
- Intégrer Claude dans Front ou Zendesk via API et webhooks pour une expérience native agent
- Mettre en place un A/B test rigoureux sur le ton (formel vs amical) avec mesure NPS et CSAT
Durée : 4h30. Pré-requis : compte Anthropic API, abonnement Front (49 USD/agent) ou Zendesk Suite (55 USD/agent), 50 à 200 conversations historiques exportées en CSV pour calibration, budget API mensuel 45 000 à 90 000 FCFA pour un volume de 2000 tickets/mois.
Étape 1 — Documenter la voix de marque avant tout prompt
Avant d’écrire la moindre ligne de code, formalisez sur 2 pages : 5 adjectifs qui décrivent le ton (ex : direct, chaleureux, précis, respectueux, francophone soigné), 10 mots interdits (ex : « désolé », « malheureusement », « impossible »), 10 formules signature (ex : « On regarde ça tout de suite », « Merci de votre patience »), 3 exemples de réponses parfaites annotées. Pour une PME sénégalaise vendant en ligne, la voix peut intégrer des marqueurs locaux subtils (« on vous tient au courant dans la matinée ») sans tomber dans le folklore.
Étape 2 — Créer un Project Claude dédié SAV
Dans la console Anthropic, créez un Project nommé « SAV Marque XYZ ». Ce Project permet de pré-charger le contexte permanent : FAQ produit, politique de remboursement, conditions générales de vente conformes à l’OHADA, grille tarifaire en FCFA, procédures internes. Tout ce contexte est mis en cache et facturé à 90% de réduction sur les requêtes suivantes via le prompt caching.
import anthropic
client = anthropic.Anthropic()
CONTEXTE_SAV = """[FAQ COMPLÈTE - 40 questions/réponses]
[POLITIQUE REMBOURSEMENT - 14 jours, conditions précises]
[CGV OHADA - article par article]
[GRILLE TARIFAIRE FCFA - 200 références]
[PROCÉDURES INTERNES - escalade, urgences, weekend]
[GLOSSAIRE TECHNIQUE - termes métier]"""
SYSTEM_PROMPT_SAV = f"""Tu es Aïda, conseillère SAV senior chez Marque XYZ, PME sénégalaise.
VOIX MARQUE :
- Direct, chaleureux, précis, respectueux, francophone soigné
- Tu utilises 'on' plutôt que 'nous' (chaleur)
- Tu termines toujours par une question ou un engagement précis
- Tu mentionnes une échéance concrète (date, heure)
MOTS INTERDITS : 'désolé', 'malheureusement', 'impossible', 'je ne peux pas'
À LA PLACE : 'on regarde ça', 'voici ce qu'on peut faire', 'la solution est'
CONTEXTE PERMANENT :
{CONTEXTE_SAV}
RÈGLES DE TRAITEMENT :
1. Si la demande relève de la FAQ : réponds directement
2. Si remboursement < 50 000 FCFA et conforme aux conditions : valide
3. Si litige client mécontent ou remboursement > 50 000 FCFA : escalade vers humain
4. Si demande hors périmètre : redirige avec contact précis"""
Étape 3 — Activer le prompt caching pour diviser le coût par 10
Le contexte SAV pèse environ 8000 tokens. Sans cache, chaque ticket coûterait 0,024 USD juste pour ce contexte. Avec le caching, le coût tombe à 0,0024 USD par ticket après le premier appel de la fenêtre de 5 minutes.
def repondre_ticket(message_client, historique=None):
messages = []
if historique:
messages.extend(historique)
messages.append({"role": "user", "content": message_client})
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=600,
system=[{
"type": "text",
"text": SYSTEM_PROMPT_SAV,
"cache_control": {"type": "ephemeral"}
}],
messages=messages
)
return response.content[0].text
Étape 4 — Construire la matrice d’escalade L1/L2/L3
| Niveau | Type de demande | Acteur | SLA réponse |
|---|---|---|---|
| L1 | FAQ, statut commande, suivi livraison, infos produit | Claude (autonome) | < 30 secondes |
| L2 | Remboursement < 50k FCFA, échange taille, geste commercial | Claude propose, agent valide | < 2 heures |
| L3 | Litige, avis Google négatif, demande presse, remboursement > 50k FCFA | Manager humain | < 4 heures (jours ouvrés) |
Étape 5 — Coder le routeur d’escalade automatique
PROMPT_ROUTEUR = """Analyse ce message client et retourne UNIQUEMENT un JSON :
{
"niveau": "L1" ou "L2" ou "L3",
"categorie": "livraison" ou "produit" ou "remboursement" ou "litige" ou "autre",
"urgence": "basse" ou "moyenne" ou "haute",
"sentiment": "positif" ou "neutre" ou "negatif" ou "tres_negatif",
"montant_estime_fcfa": nombre ou null,
"raison": "1 phrase d'explication"
}
Critères d'escalade :
- L3 si sentiment = tres_negatif
- L3 si montant > 50000 FCFA
- L3 si mots-clés : avocat, justice, presse, scandale, RTS, Le Soleil
- L2 sinon avec action commerciale
- L1 si simple FAQ"""
def router_ticket(message):
import json
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=300,
system=PROMPT_ROUTEUR,
messages=[{"role": "user", "content": message}]
)
return json.loads(response.content[0].text)
Étape 6 — Intégrer dans Front via API
Front expose une API REST permettant de créer des drafts, d’envoyer des réponses, ou de poser des commentaires internes. L’approche recommandée pour démarrer : Claude crée un draft, l’agent valide en 2 secondes ou édite à la marge. Au bout d’un mois et de 95% de validations sans édition, vous activez l’envoi automatique sur les L1.
import requests
FRONT_TOKEN = "votre_token_front"
def creer_draft_front(conversation_id, contenu, channel_id):
url = f"https://api2.frontapp.com/conversations/{conversation_id}/drafts"
headers = {
"Authorization": f"Bearer {FRONT_TOKEN}",
"Content-Type": "application/json"
}
payload = {
"channel_id": channel_id,
"body": contenu,
"mode": "private"
}
return requests.post(url, headers=headers, json=payload).json()
Étape 7 — Intégrer dans Zendesk via API
ZENDESK_SUBDOMAIN = "marquexyz"
ZENDESK_EMAIL = "agent@marquexyz.com/token"
ZENDESK_TOKEN = "votre_token_zendesk"
def ajouter_note_interne_zendesk(ticket_id, contenu):
url = f"https://{ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets/{ticket_id}.json"
payload = {
"ticket": {
"comment": {
"body": f"[Suggestion Claude]\n\n{contenu}",
"public": False
}
}
}
r = requests.put(
url,
json=payload,
auth=(ZENDESK_EMAIL, ZENDESK_TOKEN)
)
return r.json()
Étape 8 — Configurer le webhook pour traitement temps réel
Front et Zendesk déclenchent un webhook à chaque nouveau ticket. Recevez ce webhook dans une fonction serverless (AWS Lambda, Cloudflare Worker ou n8n auto-hébergé), routez avec Claude Haiku (rapide et bon marché), générez la réponse avec Claude Sonnet (qualité), postez le draft. Latence cible : moins de 8 secondes entre arrivée du ticket et apparition du draft pour l’agent.
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/webhook/front", methods=["POST"])
def webhook_front():
payload = request.json
if payload["type"] != "inbound":
return jsonify({"status": "ignored"})
conv_id = payload["conversation"]["id"]
msg = payload["target"]["data"]["body"]
routage = router_ticket(msg)
if routage["niveau"] == "L3":
return jsonify({"status": "escalade_humaine", "raison": routage["raison"]})
reponse = repondre_ticket(msg)
creer_draft_front(conv_id, reponse, payload["conversation"]["recipient"]["handle"])
return jsonify({"status": "draft_cree", "niveau": routage["niveau"]})
Étape 9 — A/B tester deux variantes de ton
Préparez deux system prompts : variante A (formel, vouvoiement strict, formules institutionnelles) et variante B (chaleureux, « on » inclusif, ton conversationnel). Affectez aléatoirement chaque ticket à une variante et tracez l’identifiant. Sur 30 jours et 1500 tickets minimum, comparez : CSAT (note 1-5 envoyée après résolution), NPS (recommandation), taux de réouverture, temps moyen de résolution.
| Métrique | Variante A (formel) | Variante B (chaleureux) | Verdict |
|---|---|---|---|
| CSAT moyen | 4,1/5 | 4,5/5 | Variante B gagnante |
| NPS | +32 | +47 | Variante B gagnante |
| Taux réouverture | 11% | 9% | Variante B légère avance |
| Temps résolution moyen | 14 min | 11 min | Variante B gagnante |
Étape 10 — Calibrer le ton sur 50 conversations historiques
Exportez 50 conversations parfaitement résolues par votre meilleur agent. Pour chacune, soumettez le contexte à Claude et demandez-lui de générer la réponse. Comparez côte à côte la réponse Claude et la vraie réponse de l’agent. Notez sur 10 la similarité de ton. Ajustez le system prompt jusqu’à atteindre une note moyenne de 8/10 sur l’échantillon. Cette calibration prend environ 4 heures et économise des semaines de tâtonnement en production.
PROMPT_CALIBRATION = """Voici une conversation client réelle et la réponse parfaite de notre meilleur agent.
CONVERSATION CLIENT :
{conversation}
RÉPONSE AGENT IDÉALE :
{reponse_agent}
RÉPONSE CLAUDE GÉNÉRÉE :
{reponse_claude}
Note la réponse Claude sur 10 selon ces critères :
- Ton (chaleur, professionnalisme) : note /10
- Précision (info juste, pas d'invention) : note /10
- Engagement (action concrète promise) : note /10
- Brièveté (juste assez de mots) : note /10
Donne la note finale moyenne et 1 phrase de feedback pour améliorer le system prompt."""
Étape 11 — Gérer les conversations multilingues (français, wolof, anglais)
Au Sénégal, 30% des messages WhatsApp peuvent contenir du wolof transcrit en alphabet latin (« nanga def », « ba beneen yoon »). Claude comprend le wolof écrit et peut répondre en français standard ou en mode hybride si vous l’autorisez. Ajoutez dans le system prompt : « Si le client écrit en wolof, réponds en français mais glisse une formule en wolof en ouverture (Salaamaalekum) ou clôture (jërëjëf) pour la chaleur. »
Étape 12 — Mesurer le NPS post-interaction
3 heures après résolution, envoyez automatiquement un mini-questionnaire (1 question : « De 0 à 10, recommanderiez-vous notre SAV ? »). Stockez la note avec l’ID de la conversation, la variante utilisée, et le niveau d’escalade. Visez un NPS supérieur à +40 sur les tickets traités majoritairement par Claude. Si NPS < +20, l’IA dégrade l’expérience et il faut revoir le system prompt en urgence.
Étape 13 — Mettre en place un quality monitoring hebdomadaire
Chaque vendredi, échantillonnez 30 conversations aléatoires (10 L1 Claude seul, 10 L2 Claude + agent, 10 L3 humain). Soumettez chaque conversation à Claude Opus avec ce prompt : « Note cette conversation sur 5 critères : précision, ton, conformité voix marque, résolution effective, satisfaction probable. » Calculez un score qualité hebdomadaire et alertez le manager SAV si la moyenne descend sous 4/5.
Étape 14 — Itérer le system prompt chaque mois
Le system prompt n’est jamais figé. Chaque fin de mois, analysez les 20 tickets les moins bien notés (CSAT < 3) et identifiez les patterns récurrents. Ajoutez 1 à 3 règles précises dans le system prompt pour traiter ces cas. Versionnez chaque version dans Git avec changelog. Sur 6 mois, attendez-vous à passer de 65% de drafts validés sans édition à 92%, ce qui libère 60% du temps agent pour les vraies escalades à valeur ajoutée.
Erreurs classiques à éviter
- Activer l’envoi automatique dès le jour 1 : conséquence, 1 réponse Claude maladroite virale sur Twitter, 3 mois de réparation d’image.
- Ignorer le prompt caching : conséquence, facture API multipliée par 10, projet non rentable au-dessus de 500 tickets/mois.
- Coder un system prompt vague (« sois sympa ») : conséquence, ton incohérent, 30% des clients le détectent comme IA et se désengagent.
- Ne pas tracer la variante A/B : conséquence, impossible de prouver le ROI, l’arbitrage ton repose sur l’opinion du dirigeant.
- Sauter l’escalade L3 sur les litiges : conséquence, Claude promet un remboursement non conforme aux CGV, contentieux à 800 000 FCFA.
Checklist Fine-tune ton SAV
✓ Voix marque documentée (5 adjectifs, 10 mots interdits, 10 formules)
✓ Project Claude créé avec contexte FAQ + CGV OHADA
✓ Prompt caching activé sur le system prompt SAV
✓ Matrice escalade L1/L2/L3 validée par direction
✓ Routeur Claude Haiku opérationnel (sentiment + urgence)
✓ Intégration Front ou Zendesk testée en mode draft
✓ Webhook temps réel configuré (latence < 8 secondes)
✓ Mode wolof + français + anglais activé si pertinent
✓ Calibration sur 50 conversations historiques (note > 8/10)
✓ A/B test variante A vs B planifié sur 1500 tickets
✓ NPS post-interaction automatisé à H+3
✓ Quality monitoring hebdomadaire avec Claude Opus
✓ Versioning Git du system prompt avec changelog mensuel
✓ Procédure de pause d'urgence (kill switch) documentée
✓ Budget API mensuel plafonné dans la console Anthropic