Support
Répondez aux questions support depuis votre propre documentation
Créez un LiveDoc, chargez le centre d’aide et le runbook interne, récupérez les passages qui répondent au ticket et laissez le modèle répondre uniquement à partir de ces preuves.
Copier le prompt
Remplacez les champs entre crochets, puis collez dans Claude Code, Codex ou toute IA avec accès au terminal. Elle installe le skill Felo, demande avant de dépenser des crédits et exécute le workflow.
Réponds à cette question de support uniquement avec notre documentation : [question du client]. Base de connaissances : [URL du centre d’aide ou LiveDoc short_id]. Voie d’escalade : [responsable ou file]. Contexte client disponible : [offre, région, produit] (ne demande jamais de mot de passe ni de données de paiement). Produis : 1. Une réponse directe en deux à quatre phrases. 2. Les passages de documentation qui la justifient, avec le titre de la ressource. 3. La prochaine étape pour le client. 4. Une note interne : ressources utilisées et scores de pertinence. Règles : - Réponds uniquement à partir des passages récupérés. En cas d’absence de résultat ou de pertinence faible, escalade ; ne devine jamais. - N’invente ni politique, ni remboursement, ni prix, ni action sur le compte. - N’intègre aucune donnée client privée, aucun identifiant et aucune information de paiement. - Demande avant de consommer des crédits pour l’ingestion ou la recherche. - N’envoie pas la réponse au client ; rends-la-moi pour relecture.
La copie inclut aussi les étapes d'installation et les règles de sécurité.
Ce que vous obtenez
Exemple de sortie d'une exécution. Pas de génération en direct.
Réponse : Votre offre se renouvelle le premier du mois. Une carte refusée est retentée pendant trois jours avant la suspension du siège.
Sources : « questions fréquentes de facturation » - https://example.com/help/billing
Si ce n’est pas couvert : escalader vers la file facturation avec l’ID de facture.
Les appels exacts
Pour les développeurs : le même workflow en code, dans l'ordre d'exécution.
Afficher les appels API
Créez la base de connaissances
Créez la base via l’API LiveDoc et enregistrez le short_id.
support.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type LiveDocData = { data: { short_id: string } }; const kb = await felo<LiveDocData>("/v2/livedocs", { name: "Support knowledge base", description: "Help center, policy pages, and internal runbooks", }); const kbId = kb.data.short_id; // save this in your configExemple de sortie
{ "short_id": "PvyKouzJirXjFdst4uKRK3", "name": "Support knowledge base", "description": "Help center, policy pages, and internal runbooks" }Chargez le centre d’aide public
Ajoutez l’URL du centre d’aide comme ressource LiveDoc.
support.ts type UrlResult = { data: { url: string; status: string; fail_reason: string | null; resource_id: string | null; }[]; }; const added = await felo<UrlResult>( `/v2/livedocs/${kbId}/resources/urls`, { urls: [ "https://example.com/help/getting-started", { url: "https://example.com/help/billing", title: "Billing FAQ" }, ], }, ); const failed = added.data.filter((item) => item.status === "failed");Exemple de sortie
[ { "url": "https://example.com/help/getting-started", "status": "success", "resource_id": "res_003" }, { "url": "https://example.com/help/billing", "status": "existed", "resource_id": "res_004" } ]Ajoutez la documentation interne
Ajoutez le runbook interne comme document.
support.ts type ResourceData = { data: { id: string } }; const runbook = `# Refund policy Refunds are available within 30 days of purchase. Requests after 30 days need a manual review by the billing team. `; const policy = await felo<ResourceData>( `/v2/livedocs/${kbId}/resources/doc`, { title: "Refund policy", content: runbook }, ); console.log(policy.data.id); // use this for updatesRécupérez les preuves de la question
La recherche sémantique renvoie les passages les plus pertinents et leurs scores.
support.ts type Hit = { id: string; title: string; content: string; score: number }; async function findEvidence(question: string) { const res = await felo<{ data: Hit[] }>( `/v2/livedocs/${kbId}/resources/retrieve`, { query: question }, ); return res.data.filter((hit) => hit.score >= 0.7).slice(0, 4); } const question = "Can I get a refund after 45 days?"; const hits = await findEvidence(question);Exemple de sortie
[ { "id": "res_005", "title": "Refund policy", "content": "Refunds are available within 30 days of purchase…", "score": 0.92 } ]Répondez uniquement depuis les preuves
Le modèle n’utilise que les passages récupérés et escalade sans résultat.
support.ts type Completion = { choices: { message: { content: string | null } }[]; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number }; }; const context = hits .map((hit) => `### ${hit.title}\n${hit.content}`) .join("\n\n"); const completion = await felo<Completion>("/api/v1/chat/completions", { model: "anthropic/claude-haiku-5.5", messages: [ { role: "system", content: "Answer only from the context. If the context does not cover the question, say so and hand the ticket to a human.", }, { role: "user", content: `Context:\n${context}\n\nQuestion: ${question}`, }, ], }); console.log(completion.choices[0].message.content); console.log(completion.usage.total_tokens);Exemple de sortie
"No. The Refund policy says refunds are available within 30 days of purchase, so a request at 45 days needs a manual review by the billing team."
Ce qui est inclus
- LiveDoc avec centre d’aide et runbook interne
- Recherche sémantique avec passages et titres
- Réponse avec sources citables
- Escalade claire quand la documentation manque
Ce qu'elle ne fait pas
- Répond uniquement depuis votre documentation et ne navigue pas sur le web ouvert
- N’exécute pas d’actions de compte, remboursements ou changements de plan
- Pas de données clients privées ni d’identifiants dans la base
- Une documentation périmée produit des réponses périmées ; mettez-la à jour
- Rédige seulement la réponse, ne l’envoie pas au client
Questions
D’où vient la réponse ?
Uniquement de votre LiveDoc : pages du centre d’aide et runbook. La recherche renvoie des passages et l’agent écrit la réponse à partir d’eux.
Et si la documentation ne couvre pas ?
Escalade. Aucun résultat ou une pertinence faible est traité comme non couvert, pas comme une permission de deviner.
Comment garder la base à jour ?
Quand une politique change, ajoutez à nouveau les URL et mettez à jour les documents ; le workflow inclut des commandes de mise à jour et d’audit.
Puis-je l’utiliser dans la file de tickets ?
Oui, comme étape de brouillon. Gardez une approbation humaine avant l’envoi au client.
Gère-t-il les questions liées au compte ?
Pas uniquement avec la documentation. Les données de compte sont dans votre système ; ne transmettez que le contexte sûr nécessaire, jamais d’identifiants.
Combien coûte une exécution ?
Ingestion et recherche sont facturées à l’usage ; les tarifs actuels sont sur la page des prix, et le prompt demande votre accord avant dépense.
Workflows liés
Transformez une question en brief de recherche sourcé
Interrogez le web, récupérez les pages derrière la réponse en Markdown, ajoutez ce que disent les praticiens sur X, puis conservez les preuves dans un LiveDoc que vous pourrez interroger plus tard.
Ouvrir le workflowContenuPubliez un résumé quotidien d’actualité IA que votre équipe lit vraiment
Obtenez une synthèse sourcée, ajoutez ce que publient les praticiens sur X, récupérez une transcription vidéo, composez l’édition en Markdown et archivez-la dans un LiveDoc.
Ouvrir le workflowBureauTransformez une page de recherche en présentation
Extrayez la page, enregistrez-la comme contexte LiveDoc, laissez l’API PPT Task construire le deck et interrogez jusqu’au lien final.
Ouvrir le workflowAdaptez-la
La même recette, adaptée à votre façon de livrer.
Une seule gamme produit
Restreignez à un produit pour une base plus propre.
Ajoutez la classification des tickets
Classifiez le type de question avant de chercher la bonne documentation.
Audit régulier
Vérifiez chaque mois les liens cassés et les politiques obsolètes.
Aller plus loin
Les pages de référence derrière cette recette et la suite.