Felo API PlatformFelo API Platform

Badania

Zbadaj konto docelowe przed pierwszym kontaktem

Przeczytaj stronę firmy, ostatnie relacje i to, co publikują, a potem napisz brief konta z ostatnimi ruchami, prawdopodobnymi priorytetami, tematami rozmowy i uczciwie nieznanymi.

Czas20 minutPoziomPodstawowyZaktualizowano2026-10-30
Dla kogoFounderzy i operatorzyAccount executiveLiderzy sprzedaży

Skopiuj prompt

Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.

Przygotuj briefing konta [nazwa firmy lub domena] przed [kontakt / rozmowa discovery / odnowienie].

Nasza oferta: [produkt lub usługa]. Kupujący, na którym nam zależy: [rola]. Okres ostatnich ruchów: [ostatnie 90 dni / ostatnie 12 miesięcy].

Przeczytaj ich stronę, publiczne relacje i publiczne posty. Przygotuj briefing w Markdown zawierający:
1. Czym się zajmują, w jednym akapicie, ze źródłami.
2. Ostatnie ruchy: premiery, finansowanie, rekrutacja, kierownictwo, partnerstwa — z datami i linkami.
3. Prawdopodobne priorytety na ten kwartał, wyraźnie oznaczone jako wnioski.
4. Tematy do rozpoczęcia rozmowy: trzy konkretne obserwacje, każda ze źródłem.
5. Niewiadome: czego nie udało się zweryfikować w publicznych źródłach.
6. Pełną listę źródeł.

Zasady:
- Nigdy nie wymyślaj nazwiska kontaktu, e-maila, telefonu, liczby pracowników, przychodu ani kwoty finansowania.
- Tylko publiczne źródła: bez danych prywatnych, stron wymagających logowania i scrapowanych katalogów.
- Nie zapisuj w CRM ani innym systemie. Briefing to plik, który przegląda człowiek.
- Oznaczaj każdy wniosek jako wniosek; fakty zachowuj z linkami i datami.
- Nie przedstawiaj intencji kupującego jako faktu.
- Zanim zużyjesz kredyty, pokaż planowane wywołania API i poczekaj na moją zgodę.
- Nie wysyłaj, nie planuj, nie publikuj i nie pisz do nikogo.
- Zapisz wynik w ./account-brief.md i podsumuj go w czacie.

Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.

Co otrzymujesz

Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.

Przykładowy briefing konta (fragment)

Briefing konta — [firma], sprawdzono 2026-10-30

Czym się zajmują

Buduje roboty do kompletacji magazynowej dla średnich operatorów logistycznych. Źródło: https://example.com/about (sprawdzono 2026-10-30).

Ostatnie ruchy

  • Otworzył drugi zakład montażowy — https://example.com/news/expansion (2026-10-24)
  • Rekrutuje zespół „deployment operations” — https://example.com/careers (sprawdzono 2026-10-30)
  • Post ich konta o integracji partnerskiej — @example_company (2026-10-21)

Prawdopodobne priorytety (dedukcja)

Szybsze wdrożenia w większej liczbie lokalizacji. Dedukcja z posta o ekspansji i nowej roli wdrożeniowej — nie ogłoszony plan i publicznie niepotwierdzony.

Tematy na start rozmowy

  • Druga lokalizacja jest nowa: zapytać, jak zmienia się playbook wdrożenia, gdy lokalizacje się różnią. Źródło: https://example.com/news/expansion
  • Dedykowana rola deployment operations sugeruje przekazanie między sprzedażą a instalacją. Źródło: https://example.com/careers

Niewiadome

  • Kto dziś odpowiada za deployment operations: brak danych publicznych.
  • Wielkość floty i wartości kontraktów: brak danych.

Źródła

  • https://example.com/about
  • https://example.com/news/expansion
  • https://example.com/careers

Dokładne wywołania

Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.

Pokaż rzeczywiste wywołania API
  1. Weź przegląd firmy

    Zapytaj Chat, czym firma się zajmuje i jakie są ostatnie publiczne zmiany, zachowując cytowane źródła.

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

    Przykładowy wynik

    {
      "answer": "The company builds …",
      "sources": [
        { "link": "https://example.com/about", "title": "…", "snippet": "…" }
      ]
    }
  2. Przeczytaj stronę, ceny i kariery

    Przez Web Fetch przeczytaj About, ceny i kariery, by zrozumieć produkt, klientów i otwarte role.

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

    Przykładowy wynik

    {
      "url": "https://example.com/careers",
      "checkedAt": "2026-10-30",
      "content": "# Careers\n\nOpen roles: deployment operations…"
    }
  3. Zobacz publiczne sygnały z 90 dni

    Szukaj na X nazwy firmy i produktu, zachowując publiczne posty, konta i daty z ostatnich 90 dni.

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

    Przykładowy wynik

    { "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. Napisz brief konta

    Opisz przegląd, ostatnie ruchy, prawdopodobne priorytety, tematy rozmowy, niewiadome i źródła.

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

    Przykładowy wynik

    # Account brief — Example Robotics
  5. Zapisz w LiveDoc

    Zapisz brief i źródła w LiveDoc, by użyć ich przy kolejnym kontakcie.

    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

    Przykładowy wynik

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Co zawiera

  • Przegląd firmy ze źródłami z Chat
  • Strona, ceny i kariery jako Markdown
  • Datowane publiczne posty na X
  • Ustrukturyzowany brief konta
  • LiveDoc z dowodami

Czego nie robi

  • Nie podaje e-maili, telefonów ani danych osobowych
  • Nie czyta prywatnych danych ani stron tylko po logowaniu
  • Nie zapisuje do CRM i nie wysyła wiadomości
  • Liczba pracowników, przychody i finansowanie tylko z wyraźnym źródłem
  • Priorytety i intencje oznaczone jako inferencja

Pytania

Czy podaje e-maile kontaktowe?

Nie. Workflow robi tylko publiczne badanie i nie podaje e-maila, telefonu ani danych osobowych.

Skąd dane?

Chat zwraca przegląd ze źródłami, Web Fetch czyta stronę, ceny i kariery, X Search dodaje publiczne posty. Każdy element zachowuje link i datę.

Czy bada firmy poza technologią?

Tak. Gdzie publicznych informacji jest mało, brief oznacza niewiadome zamiast wymyślać.

Czy zapisuje do CRM?

Nie. Tworzy tylko brief Markdown; integracja z CRM należy do ciebie.

Czy priorytety to fakty?

Nie. Brief oznacza „prawdopodobne priorytety” jako inferencję i pokazuje podstawę; decyzja końcowa należy do sprzedawcy.

Ile kosztuje jedno uruchomienie?

Chat, ekstrakcja i X Search są rozliczane według użycia; aktualne stawki na stronie cen, a prompt pyta o zgodę przed wydaniem.

Powiązane workflowy

Dostosuj

Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.

Tylko jeden segment

Ogranicz do branży lub regionu, by brief był konkretniejszy.

Dodaj ostatni launch

Dodaj stronę launchu jako dodatkowe źródło bieżących tematów.

Razem z analizą konkurencji

Porównaj priorytety z briefu z pozycjonowaniem z analizy, by znaleźć kąt.

Strony referencyjne za tą recepturą i kolejne kroki.