Research
Ein Zielkonto vor dem ersten Outreach recherchieren
Lies die Website des Unternehmens, aktuelle Berichterstattung und öffentliche Posts, dann schreibe ein Account-Briefing mit jüngsten Schritten, wahrscheinlichen Prioritäten, Gesprächseinstiegen und ehrlichen Unbekannten.
Prompt kopieren
Ersetze die Felder in eckigen Klammern und füge den Prompt in Claude Code, Codex oder eine KI mit Terminalzugriff ein. Sie installiert den Felo-Skill, fragt vor Credits und führt den Workflow aus.
Erstelle ein Account-Briefing zu [Firmenname oder Domain] vor [Ansprache / Discovery-Call / Verlängerung]. Unser Angebot: [Produkt oder Service]. Käufer, der uns interessiert: [Rolle]. Zeitraum für aktuelle Bewegungen: [letzte 90 Tage / letzte 12 Monate]. Lies ihre eigene Website, öffentliche Berichterstattung und öffentliche Beiträge. Erstelle ein Markdown-Briefing mit: 1. Was sie tun, in einem Absatz, mit Quellen. 2. Aktuellen Bewegungen: Launches, Finanzierung, Hiring, Führung, Partnerschaften — mit Daten und Links. 3. Wahrscheinlichen Prioritäten dieses Quartals, klar als Schlussfolgerung markiert. 4. Gesprächseinstiegen: drei konkrete Beobachtungen, jeweils mit Quelle. 5. Unbekannten: was du aus öffentlichen Quellen nicht verifizieren konntest. 6. Einer vollständigen Quellenliste. Regeln: - Erfinde niemals Kontaktnamen, E-Mail, Telefonnummer, Mitarbeiterzahl, Umsatz oder Finanzierungssumme. - Nur öffentliche Quellen: keine privaten Daten, keine loginpflichtigen Seiten, keine gescrapten Verzeichnisse. - Schreibe nicht in ein CRM oder ein anderes System. Das Briefing ist eine Datei, die ein Mensch prüft. - Markiere jede Schlussfolgerung als solche; Fakten behalten Link und Datum. - Stelle die Absicht des Käufers nicht als Tatsache dar. - Bevor Credits verbraucht werden, zeige die geplanten API-Aufrufe und warte auf meine Freigabe. - Versende, plane, veröffentliche oder schreibe niemandem. - Schreibe das Ergebnis nach ./account-brief.md und fasse es im Chat zusammen.
Die Kopie enthält auch die Installationsschritte und Sicherheitsregeln.
Das bekommst du
Beispielausgabe eines Laufs. Keine Live-Generierung.
Account-Briefing — [Unternehmen], geprüft am 2026-10-30
Was sie tun
Baut Lagerkommissionier-Roboter für mittelgroße Logistiker. Quelle: https://example.com/about (geprüft am 2026-10-30).
Aktuelle Bewegungen
- Zweiten Montagestandort eröffnet — https://example.com/news/expansion (2026-10-24)
- „Deployment Operations“-Team wird gesucht — https://example.com/careers (geprüft am 2026-10-30)
- Beitrag ihres Accounts zu einer Partnerintegration — @example_company (2026-10-21)
Wahrscheinliche Prioritäten (Schlussfolgerung)
Schnellere Deployments an mehr Standorten. Schluss aus dem Expansionsbeitrag und der neuen Deployment-Rolle — kein erklärter Plan und öffentlich nicht bestätigt.
Gesprächseinstiege
- Der zweite Standort ist neu: fragen, wie sich das Deployment-Playbook ändert, wenn Standorte differieren. Quelle: https://example.com/news/expansion
- Eine eigene Deployment-Operations-Rolle deutet auf eine Übergabe zwischen Vertrieb und Installation hin. Quelle: https://example.com/careers
Unbekanntes
- Wer Deployment Operations heute verantwortet: Nicht verfügbar aus öffentlichen Quellen.
- Flottengröße und Vertragswerte: Nicht verfügbar.
Quellen
- https://example.com/about
- https://example.com/news/expansion
- https://example.com/careers
Die konkreten Aufrufe
Für Entwickler: derselbe Workflow als kopierbarer Code in Ausführungsreihenfolge.
Konkrete API-Aufrufe zeigen
Überblick holen
Frage Chat, was das Unternehmen macht und welche öffentlichen Veränderungen es gab, und behalte die zitierten Quellen.
account.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; snippet: string }[]; }; }; const company = "Example Robotics"; const domain = "example.com"; const buyerRole = "Head of Operations"; const overview = await felo<ChatData>("/v2/chat", { query: `What does ${company} do, who buys from it, and what changed in the last 90 days?`, }); const seedSources = overview.data.resources.slice(0, 5);Beispielausgabe
{ "answer": "The company builds …", "sources": [ { "link": "https://example.com/about", "title": "…", "snippet": "…" } ] }Website, Preise und Karriere lesen
Lies mit Web Fetch About, Preise und Karriere, um Produkt, Kunden und offene Rollen zu verstehen.
account.ts type ExtractData = { data: { content: string } }; const companyPages = [ { url: `https://${domain}/about`, title: "About" }, { url: `https://${domain}/pricing`, title: "Pricing" }, { url: `https://${domain}/careers`, title: "Careers" }, ]; const pages = await Promise.all( companyPages.map(async (page) => { const res = await felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, with_cache: true, }); const checkedAt = new Date().toISOString().slice(0, 10); return { ...page, checkedAt, content: res.data.content }; }), );Beispielausgabe
{ "url": "https://example.com/careers", "checkedAt": "2026-10-30", "content": "# Careers\n\nOpen roles: deployment operations…" }Öffentliche Signale der letzten 90 Tage
Suche auf X nach Firmen- und Produktname und behalte öffentliche Posts, Konten und Daten der letzten 90 Tage.
account.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const posts = await felo<XData>("/v2/x/tweet/search", { query: `"${company}" (hiring OR launch OR partnership OR expansion)`, limit: 20, since_time: since, }); const recent = posts.data.tweets.slice(0, 5);Beispielausgabe
{ "data": { "tweets": [ { "content": "We just opened our second assembly site", "author": { "username": "example_company" }, "created_at": "2026-10-21T14:02:00Z", "metrics": { "retweet_count": 4, "favorite_count": 31 } } ] } }Account-Briefing schreiben
Beschreibe Firmenüberblick, jüngste Schritte, wahrscheinliche Prioritäten, Gesprächseinstiege, Unbekannte und Quellen.
account.ts const today = new Date().toISOString().slice(0, 10); const accountBrief = [ `# Account brief — ${company}`, `Checked ${today}. Buyer role: ${buyerRole}.`, "", "## What they do", overview.data.answer, "", "## Recent moves", ...recent.map( (post) => `- ${post.created_at.slice(0, 10)}: ${post.content} (from @${post.author.username})`, ), ...pages.map((page) => `- ${page.title} page captured ${page.checkedAt}: ${page.url}`), "", "## Likely priorities (inference)", "<!-- One or two sentences from the moves above. Mark them as inference, never a stated plan. Delete this comment when filled. -->", "", "## Conversation starters", ...recent.slice(0, 3).map( (post) => `- Ask about: ${post.content.slice(0, 100)} (dated ${post.created_at.slice(0, 10)})`, ), "", "## Unknowns", "- Who owns the workflow we sell into: Not available from public sources.", "- Contract values and team size: Not available.", "", "## Sources", ...pages.map((page) => `- ${page.title}: ${page.url}`), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(accountBrief);Beispielausgabe
# Account brief — Example Robotics
Im LiveDoc speichern
Speichere Briefing und Quellen im LiveDoc, um sie beim nächsten Kontakt wiederzuverwenden.
account.ts type LiveDocData = { data: { short_id: string } }; const accountDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Account: ${company}`, description: `Briefs and sources checked ${today}`, }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/urls`, { urls: [ ...pages.map((page) => ({ url: page.url, title: page.title })), ...seedSources.map((source) => ({ url: source.link, title: source.title })), ], }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/doc`, { title: `Account brief ${today}`, content: accountBrief, }); console.log(accountDoc.data.short_id); // the next call reuses this LiveDocBeispielausgabe
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Enthalten
- Belegter Firmenüberblick aus Chat
- Website, Preise und Karriere als Markdown
- Datierte öffentliche Posts auf X
- Strukturiertes Account-Briefing
- LiveDoc mit Belegen
Was es nicht macht
- Liefert keine Kontakt-E-Mails, Telefonnummern oder persönlichen Daten
- Liest keine privaten Daten oder Login-only-Seiten
- Schreibt nicht ins CRM und versendet keine Nachrichten
- Mitarbeiterzahl, Umsatz und Finanzierung nur mit klarer Quelle
- Prioritäten und Absichten sind als Schlussfolgerung markiert
Fragen
Gibt es Kontakt-E-Mails?
Nein. Der Workflow betreibt nur öffentliche Recherche und liefert keine E-Mail, Telefonnummer oder persönlichen Daten.
Woher kommen die Daten?
Chat liefert einen belegten Firmenüberblick, Web Fetch liest Website, Preise und Karriere, X Search ergänzt öffentliche Posts. Jeder Eintrag behält Link und Datum.
Gehen auch Nicht-Tech-Firmen?
Ja. Wo es wenig öffentliche Informationen gibt, markiert das Briefing Unbekannte statt zu erfinden.
Schreibt es ins CRM?
Nein. Es erzeugt nur ein Markdown-Briefing; die CRM-Integration ist deine Aufgabe.
Sind Prioritäten Fakten?
Nein. Das Briefing markiert „wahrscheinliche Prioritäten“ als Schlussfolgerung und nennt die Grundlage; die Entscheidung bleibt beim Vertrieb.
Was kostet ein Lauf?
Chat, Extraktion und X Search werden nutzungsbasiert abgerechnet; aktuelle Preise stehen auf der Preisseite, und der Prompt fragt vor Ausgaben nach Bestätigung.
Verwandte Workflows
Eine Marktfrage in ein Go-to-Market-Briefing verwandeln
Stelle dem Markt eine präzise Frage, lies die Kategorie- und Preisseiten hinter der Antwort, sammle auf X, wie Käufer das Problem beschreiben, und speichere ein GTM-Briefing mit belegten Aussagen und offenen Fragen.
Workflow öffnenResearchEin Wettbewerbs-Teardown erstellen, das dein Vertrieb direkt nutzt
Sammle die Seiten des Wettbewerbers, die Berichterstattung darum und die Stimmen von Käufern auf X und baue daraus ein Teardown, in dem jede Aussage Quelle, Datum und Status trägt.
Workflow öffnenContentEin Produktbriefing in eine Landingpage verwandeln
Recherchiere die Zielgruppe, speichere das Briefing im LiveDoc, erstelle aus diesem Kontext eine Landing-Page-Aufgabe und frage ab, bis die gehostete Seite fertig ist.
Workflow öffnenMach es zu deinem
Dasselbe Rezept, angepasst an deinen tatsächlichen Ablauf.
Nur ein Segment
Beschränke dich auf Branche oder Region, damit das Briefing konkreter wird.
Letzten Launch ergänzen
Füge die Launch-Seite als zusätzliche Quelle hinzu, damit Gesprächseinstiege aktuell sind.
Zusammen mit der Wettbewerbsanalyse
Vergleiche Prioritäten aus dem Account-Briefing mit dem Positioning der Wettbewerbsanalyse und finde einen Differenzierungswinkel.
Weiter
Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.