Supporto
Rispondi alle domande di supporto dalla tua documentazione
Crea un LiveDoc, carica help center e runbook interno, recupera i passaggi che rispondono al ticket e lascia che il modello risponda solo da quelle prove.
Copia il prompt
Sostituisci i campi tra parentesi quadre e incolla in Claude Code, Codex o qualsiasi IA con accesso al terminale. Installa lo skill Felo, chiede prima di spendere crediti ed esegue il workflow.
Rispondi a questa domanda di supporto usando solo la nostra documentazione: [domanda del cliente]. Base di conoscenza: [URL del centro assistenza o LiveDoc short_id]. Percorso di escalation: [responsabile o coda]. Contesto cliente disponibile: [piano, regione, prodotto] (non chiedere mai password o dati di pagamento). Produci: 1. Una risposta diretta in due-quattro frasi. 2. I passaggi di documentazione che la sostengono, con il titolo della risorsa. 3. Il passo successivo per il cliente. 4. Una nota interna: risorse usate e punteggi di rilevanza. Regole: - Rispondi solo dai passaggi recuperati. Se non ci sono risultati o la rilevanza è bassa, escala; non indovinare mai. - Non inventare politiche, rimborsi, prezzi o azioni sull’account. - Non inserire dati privati del cliente, credenziali o informazioni di pagamento. - Chiedi prima di consumare crediti per ingestione o recupero. - Non inviare la risposta al cliente; restituiscila per la mia revisione.
La copia include anche i passaggi di installazione e le regole di sicurezza.
Cosa ottieni
Output di esempio di un'esecuzione. Non è generazione dal vivo.
Risposta: Il tuo piano si rinnova il primo del mese. Una carta rifiutata viene ritentata per tre giorni prima di sospendere la licenza.
Fonti: «domande frequenti sulla fatturazione» - https://example.com/help/billing
Se non è coperto: escala alla coda fatturazione con l’ID della fattura.
Le chiamate esatte
Per gli sviluppatori: lo stesso workflow come codice, nell'ordine di esecuzione.
Mostra le chiamate API reali
Crea la base di conoscenza
Crea la base con la LiveDoc API e salva lo 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 configOutput di esempio
{ "short_id": "PvyKouzJirXjFdst4uKRK3", "name": "Support knowledge base", "description": "Help center, policy pages, and internal runbooks" }Carica l’help center pubblico
Aggiungi l’URL dell’help center come risorsa 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");Output di esempio
[ { "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" } ]Aggiungi la documentazione interna
Aggiungi il runbook interno come documento.
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 updatesRecupera le prove per la domanda
La ricerca semantica restituisce i passaggi e i punteggi più rilevanti.
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);Output di esempio
[ { "id": "res_005", "title": "Refund policy", "content": "Refunds are available within 30 days of purchase…", "score": 0.92 } ]Rispondi solo con le prove
Fai usare al modello solo i passaggi recuperati e escala senza risultati.
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);Output di esempio
"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."
Cosa include
- LiveDoc con help center e runbook interno
- Ricerca semantica con passaggi e titoli
- Risposta con fonti citabili
- Escalation chiara quando manca copertura
Cosa non fa
- Risponde solo dalla tua documentazione e non naviga il web aperto
- Non esegue azioni account, rimborsi o cambi piano
- Niente dati privati dei clienti o credenziali nella base
- Documentazione obsoleta produce risposte obsolete; aggiornala
- Solo bozza della risposta, nessun invio al cliente
Domande
Da dove viene la risposta?
Solo dal tuo LiveDoc: pagine help center e runbook. La ricerca restituisce passaggi e l’agent scrive da lì.
E se la documentazione non copre?
Escalation. Nessun risultato o rilevanza bassa viene trattato come non coperto, non come permesso di indovinare.
Come mantengo aggiornata la base?
Quando cambia una policy, riaggiungi URL e aggiorna i documenti; il workflow include comandi di aggiornamento e audit.
Posso usarlo nella coda ticket?
Sì, come passo di bozza. Mantieni l’approvazione umana prima di inviare al cliente.
Gestisce domande specifiche dell’account?
Non solo con la documentazione. I dati account sono nel tuo sistema; passa solo il contesto sicuro necessario, mai credenziali.
Quanto costa un’esecuzione?
Ingestione e ricerca sono a consumo; le tariffe sono nella pagina prezzi e il prompt chiede approvazione prima di spendere.
Workflow correlati
Trasforma una domanda in un brief di ricerca con fonti
Interroga il web, salva come Markdown le pagine dietro la risposta, aggiungi ciò che dicono i professionisti su X e conserva le prove in un LiveDoc che potrai interrogare di nuovo.
Apri il workflowContenutiPubblica un digest quotidiano di notizie IA che il team legga davvero
Ottieni una rassegna con fonti, aggiungi le discussioni dei professionisti su X, prendi una trascrizione video, componi l’edizione in Markdown e archiviala in un LiveDoc.
Apri il workflowUfficioTrasforma una pagina di ricerca in una presentazione
Estrai la pagina, salvala come contesto LiveDoc, lascia che la PPT Task API costruisca il deck e interroga finché il link è pronto.
Apri il workflowAdattala a te
La stessa ricetta, adattata a come lavori davvero.
Solo una linea prodotto
Restringi a un prodotto per una base più pulita.
Aggiungi classificazione ticket
Classifica il tipo di domanda prima di cercare la documentazione.
Audit periodico
Controlla ogni mese link rotti e policy vecchie.
Continua
Le pagine di riferimento dietro questa ricetta e i prossimi passi.