Research
Maak van één vraag een onderbouwde researchbrief
Vraag het web, bewaar de pagina’s achter het antwoord als Markdown, voeg toe wat practitioners op X zeggen en houd het bewijs in een LiveDoc dat je later opnieuw kunt doorzoeken.
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.
Maak een onderbouwd onderzoeksbrief voor [vraag of beslissing]. Bereik: [markt, regio, taal]. Tijdvenster: [laatste 30 dagen / laatste 12 maanden]. Publiek: [wie het leest]. Diepgang: [overzicht van één pagina / volledig brief]. Lever een Markdown-brief met: 1. Een kort antwoord in drie punten. 2. Een bewijstabel: bewering, titel van de bron, URL, publicatiedatum. 3. Waar de bronnen van mening verschillen. 4. Wat nog onbekend is. 5. Een volledige bronnenlijst. Regels: - Elke feitelijke bewering heeft een bronlink. Scheid feiten, meningen en je eigen gevolgtrekkingen. - Verzin nooit citaten, cijfers, datums of bronnen. Ontbrekende data heet ‘Niet beschikbaar’, nooit nul. - Geef primaire bronnen voorrang. Gebruik X als signaal van vakgenoten, niet als bewijs. - Zet het tijdvenster om in expliciete begin- en einddatums en noem de tijdzone. - Voordat er credits worden gebruikt, toon je de geplande API-aanroepen en wacht je op mijn goedkeuring. - Maak geen terugkerende taak, stuur geen berichten en publiceer niets. - Schrijf het resultaat naar ./research-brief.md en vat het samen in de chat.
De kopie bevat ook de installatiestappen en veiligheidsregels.
Wat je krijgt
Voorbeelduitvoer van een run. Geen live generatie.
Vervangen kleine modellen grote in supportbots?
Kort antwoord
- Kleine modellen volstaan al voor classificatie en eerstelijns antwoorden.
- De bottleneck is retrievalkwaliteit, niet modelgrootte.
- Overgestapte teams melden lagere kosten per ticket, niet hogere oplossingspercentages.
| Claim | Bron | Datum |
|---|---|---|
| Retrievalkwaliteit bepaalt antwoordkwaliteit | https://example.com/rag-eval | 2026-10-12 |
| Kosten per opgelost ticket daalden 38% | https://example.com/support-case | 2026-09-28 |
Waar de bronnen van mening verschillen
Leveranciersbenchmarks tonen bijna pariteit; onafhankelijke tests zien nog een kloof bij meerstaps terugbetalingen.
Nog onbekend
Of de kloof sluit met betere tooling of een groter model vereist.
De exacte aanroepen
Voor ontwikkelaars: dezelfde workflow als kopieerbare code in uitvoeringsvolgorde.
Exacte API-aanroepen tonen
Stel het web een vraag
Chat doorzoekt het web, rangschikt bronnen, schrijft het antwoord en geeft de gebruikte resources terug. Bewaar de top drie: elke volgende stap volgt een van die links. De helper stuurt de sleutel één keer en gooit een fout bij een niet-2xx-reactie.
research.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 ChatData = { data: { answer: string; resources: { link: string; title: string }[] }; }; export async function answer(question: string) { const chat = await felo<ChatData>("/v2/chat", { query: question }); return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) }; }Voorbeelduitvoer
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Haal de pagina’s achter het antwoord op
Een fragment is niet genoeg voor een brief. Haal de pagina’s op als Markdown met leesbaarheid aan, zodat citaten en koppen bewaard blijven zonder navigatieruis. Dezelfde URL opnieuw opvragen kan de extractiecache raken.
research.ts type ExtractData = { data: { content: string } }; const pages = await Promise.all( sources.map((source) => felo<ExtractData>("/v2/web/extract", { url: source.link, output_format: "markdown", with_readability: true, with_cache: true, }).then((page) => ({ ...source, content: page.data.content })), ), );Voorbeelduitvoer
// pages[0].content "# Example Article\n\nExtracted article content…"
Voeg toe wat X zegt
Nieuws dekt aankondigingen; X laat zien waar mensen in de praktijk tegenaan lopen. Zoek de laatste zeven dagen en bewaar auteur en tijd zodat de brief elke bewering kan toeschrijven. Verhoog
limitvoor een breder net; elke resultatenpagina heeft een cursor.research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; }[]; }; }; const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000); const social = await felo<XData>("/v2/x/tweet/search", { query: question, limit: 10, since_time: since, });Voorbeelduitvoer
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Bewaar het bewijs in een LiveDoc
Maak een LiveDoc en voeg de bronnen toe als URL-resources. De API dedupliceert wat het al heeft gezien en geeft per URL een resource id terug, zodat latere vragen hetzelfde bewijs kunnen doorzoeken zonder opnieuw op te halen.
research.ts type LiveDocData = { data: { short_id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: `Research: ${question.slice(0, 60)}`, description: "Sources collected while answering the question", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, { urls: sources.map((source) => ({ url: source.link, title: source.title })), }); console.log(doc.data.short_id); // keep this for later queriesVraag het bewijs later opnieuw
Dat is de winst: de volgende vraag doet semantische zoekopdracht op de LiveDoc in plaats van het open web. Geef
resource_idsalleen mee als je tot een bekende subset wilt beperken.research.ts type Retrieved = { data: { title: string; content: string; score: number }[]; }; async function ask(livedoc: string, query: string) { const hits = await felo<Retrieved>( `/v2/livedocs/${livedoc}/resources/retrieve`, { query }, ); return hits.data.filter((hit) => hit.score >= 0.7); }Voorbeelduitvoer
[ { "title": "…", "content": "…", "score": 0.92 } ]
Wat inbegrepen is
- Onderbouwd antwoord van de Chat API en de pagina’s erachter
- Markdown-extractie van volledige pagina’s voor de sterkste bronnen
- X-posts met auteur en tijd als practitionersignaal
- LiveDoc dat bewijs doorzoekbaar houdt voor latere vragen
Wat het niet doet
- Alleen openbare bronnen; paywall- en loginpagina’s kunnen falen
- X-dekking is een signaal, geen representatief onderzoek
- Geen interviews, privégegevens of betaalde databases
- Als bewijs dun is, zegt de brief dat in plaats van gaten te vullen
- Één run per prompt; planning hoort bij je agent of cron
Vragen
Waar komen de bronnen vandaan?
De Chat API geeft de gebruikte pagina’s terug, Web Fetch maakt de sterkste pagina’s Markdown en X Search voegt gedateerde posts van practitioners toe. Elk item behoudt zijn URL.
Kan ik een markt buiten tech onderzoeken?
Ja. Vervang de scopeplek door je markt. Nichemarkten hebben soms minder openbare bronnen; de brief markeert die gaten in plaats van te gissen.
Blijft het bewijs na de run bewaard?
Ja, als de LiveDoc-stap draait. De teruggegeven short_id laat latere vragen dezelfde pagina’s doorzoeken zonder ze opnieuw op te halen.
Wat kost een brief?
Facturering op basis van gebruikte credits; actuele tarieven staan op de prijspagina. De prompt vraagt goedkeuring voordat er wordt uitgegeven.
Kan ik het elke week draaien?
Ja, maar deze prompt draait één keer. Zet de planning in een agent of cron die dezelfde workflow uitvoert.
Wat als een bron achter een paywall zit?
Die wordt overgeslagen en als niet beschikbaar gemarkeerd. De brief vult het gat nooit met een verzonnen feit of citaat.
Gerelateerde workflows
Publiceer een dagelijkse AI-nieuwsdigest die je team echt leest
Haal een onderbouwde nieuwssamenvatting, voeg discussies van practitioners op X toe, neem één videotranscript op, stel de editie samen in Markdown en archiveer in een LiveDoc.
Workflow openenKantoorMaak van een onderzoekspagina een presentatie
Extraheer de pagina, bewaar hem als LiveDoc-context, laat de PPT Task API het deck bouwen en vraag door tot de voltooide link.
Workflow openenSupportBeantwoord 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.
Workflow openenMaak het van jou
Hetzelfde recept, aangepast aan hoe je echt oplevert.
Schrijf de brief naar een bestand
Voeg antwoord, paginafragmenten en X-citaten samen in Markdown en geef dat aan je rapportagetool of commit het in de docs-repo. Houd bronlinks naast de beweringen — de brief is zo goed als zijn citaten.
Draai het volgens schema
Verpak `answer()` in een cron en schrijf elke brief naar een gedateerd bestand. Dezelfde LiveDoc verzamelt bronnen, zodat week vier antwoordt met het bewijs van week één tot drie.
Sla de LiveDoc over
Heb je al een database, sla daar dan het chatantwoord en de geëxtraheerde pagina’s op. De LiveDoc-stap is voor zoeken, niet voor standaardopslag.
Verder
De referentiepagina’s achter dit recept en de volgende stappen.