Felo API PlatformFelo API Platform

Support

Beantwoord supportvragen vanuit je eigen documentatie

Maak een LiveDoc, laad het helpcenter en de interne runbook, haal de passages op die het ticket beantwoorden en laat het model alleen uit dat bewijs antwoorden.

Tijd20 minutenNiveauBeginnerBijgewerkt2026-10-29
Voor wieSupportteamsCustomer successHelpdeskbouwers

Prompt kopiëren

Vervang de velden tussen blokhaken en plak in Claude Code, Codex of een AI met terminaltoegang. Die installeert de Felo-skill, vraagt voor credits en voert de workflow uit.

Beantwoord deze supportvraag alleen met onze documentatie: [klantvraag].

Kennisbank: [helpdesk-URL of LiveDoc short_id]. Escalatieroute: [verantwoordelijke of wachtrij].
Beschikbare klantcontext: [plan, regio, product] (vraag nooit om wachtwoorden of betaalgegevens).

Lever:
1. Een direct antwoord in twee tot vier zinnen.
2. De ondersteunende documentatiepassages, met de resourcetitel.
3. De volgende stap voor de klant.
4. Een interne notitie: gebruikte resources en relevantiescores.

Regels:
- Antwoord alleen uit de opgehaalde passages. Bij geen resultaat of lage relevantie escaleer je; raad nooit.
- Verzin geen beleid, terugbetalingen, prijzen of accountacties.
- Neem geen privégegevens van klanten, inloggegevens of betaalinformatie op.
- Vraag het voordat je credits uitgeeft aan ingestie of retrieval.
- Stuur het antwoord niet naar de klant; geef het aan mij terug voor beoordeling.

De kopie bevat ook de installatiestappen en veiligheidsregels.

Wat je krijgt

Voorbeelduitvoer van een run. Geen live generatie.

Voorbeeldantwoord (fragment)

Antwoord: Je plan vernieuwt op de eerste van de maand. Een mislukte kaart wordt drie dagen opnieuw geprobeerd voordat de seat wordt gepauzeerd.

Bronnen: “veelgestelde vragen over facturatie” - https://example.com/help/billing

Als dit niet gedekt is: escaleer naar de facturatiewachtrij met het factuur-ID.

De exacte aanroepen

Voor ontwikkelaars: dezelfde workflow als kopieerbare code in uitvoeringsvolgorde.

Exacte API-aanroepen tonen
  1. Maak de kennisbank

    Maak de basis via de LiveDoc API en bewaar de 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 config

    Voorbeelduitvoer

    {
      "short_id": "PvyKouzJirXjFdst4uKRK3",
      "name": "Support knowledge base",
      "description": "Help center, policy pages, and internal runbooks"
    }
  2. Laad het openbare helpcenter

    Voeg de helpcenter-URL als resource toe aan de 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");

    Voorbeelduitvoer

    [
      { "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" }
    ]
  3. Voeg interne documentatie toe

    Voeg de interne runbook als document toe.

    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 updates
  4. Haal bewijs voor de vraag op

    De semantische zoekopdracht levert de relevantste passages en 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);

    Voorbeelduitvoer

    [
      {
        "id": "res_005",
        "title": "Refund policy",
        "content": "Refunds are available within 30 days of purchase…",
        "score": 0.92
      }
    ]
  5. Antwoord alleen uit bewijs

    Laat het model alleen de opgehaalde passages gebruiken en escaleer zonder treffer.

    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);

    Voorbeelduitvoer

    "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."

Wat inbegrepen is

  • LiveDoc uit helpcenter en interne runbook
  • Semantische zoekopdracht met passages en titels
  • Antwoord met citeerbare bronnen
  • Duidelijke escalatie bij ontbrekende dekking

Wat het niet doet

  • Antwoordt alleen uit je documentatie en doorzoekt niet het open web
  • Voert geen accountacties, terugbetalingen of planwijzigingen uit
  • Geen privéklandata of inloggegevens in de kennisbank
  • Verouderde documentatie geeft verouderde antwoorden; houd de basis actueel
  • Alleen een conceptantwoord, geen verzending naar de klant

Vragen

Waar komt het antwoord vandaan?

Alleen uit je LiveDoc: helpcenterpagina’s en runbook. De zoekopdracht levert passages en de agent schrijft het antwoord daaruit.

Wat als de documentatie niet dekt?

Escalatie. Geen treffers of lage relevantie gelden als niet gedekt, niet als toestemming om te gissen.

Hoe houd ik de kennisbank actueel?

Voeg bij beleidswijzigingen URL’s opnieuw toe en werk documenten bij; de workflow bevat update- en auditcommando’s.

Kan ik het in de ticketwachtrij gebruiken?

Ja, als conceptstap. Houd menselijke goedkeuring voor verzending naar de klant.

Kan het accountspecifieke vragen behandelen?

Niet met documentatie alleen. Accountdata staat in jouw systeem; geef alleen de nodige veilige context mee, nooit inloggegevens.

Wat kost een run?

Ingestie en zoekopdracht worden op gebruik gefactureerd; actuele tarieven staan op de prijspagina en de prompt vraagt goedkeuring voor uitgaven.

Gerelateerde workflows

Maak het van jou

Hetzelfde recept, aangepast aan hoe je echt oplevert.

Alleen één productlijn

Beperk tot één product voor een schonere basis.

Voeg ticketclassificatie toe

Classificeer eerst het vraagtype en zoek daarna de juiste documentatie.

Periodieke audit

Controleer maandelijks gebroken links en oude beleidsregels.

De referentiepagina’s achter dit recept en de volgende stappen.