Felo API PlatformFelo API Platform

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.

Dauer20 MinutenLevelEinsteigerAktualisiert2026-10-30
Für wenGründer & BetreiberAccount ExecutivesVertriebsleiter

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.

Beispiel-Account-Briefing (Auszug)

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
  1. Ü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": "…" }
      ]
    }
  2. 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…"
    }
  3. Ö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 }
      }
    ] } }
  4. 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
  5. 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 LiveDoc

    Beispielausgabe

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

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

Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.