Felo API PlatformFelo API Platform

Дослідження

Перетворіть питання ринку на go-to-market бриф

Поставте ринку точне питання, прочитайте сторінки категорій і цін за відповіддю, зберіть, як покупці описують проблему на X, і збережіть GTM-бриф із твердженнями з джерел і відкритими питаннями.

Час30 хвилинРівеньСереднійОновлено2026-10-30
Для когоЗасновники й операториProduct marketingЛідери продажів

Скопіювати промпт

Замініть поля в квадратних дужках і вставте в Claude Code, Codex або AI з доступом до термінала. Він встановить скіл Felo, запитає перед витратою кредитів і запустить процес.

Склади go-to-market дослідницький бриф для [продукт], що виходить у [сегмент або ICP] у [регіон], мовою [мова].

Модель: [self-serve / продажі / партнери]. Рішення, яке він підтримує: [запуск / ціни / репозиціонування]. Період: [останні 90 днів / останні 12 місяців].

Створи Markdown-бриф із:
1. Визначенням сегмента: хто вони, що використовують сьогодні й що джерела кажуть про розмір — цитуй джерело або пиши «Даних немає».
2. Мовою покупців: як вони описують проблему, з посиланнями й датами.
3. Альтернативами: від чого переходять, включно з таблицями й «нічого не робити».
4. Запереченнями й доказами, яких вимагають покупці.
5. Відкритими питаннями, на які публічні джерела не відповідають.
6. Повним списком джерел.

Правила:
- Кожне ринкове твердження потребує посилання й дати. Ніколи не оцінюй розмір ринку, зростання чи бюджет на відчуття.
- Відокремлюй незалежні джерела, сторінки постачальників і власні висновки.
- X використовуй для мови й заперечень, не як доказ розміру ринку.
- Перетвори період і регіон на явні значення.
- Перед витратою кредитів покажи заплановані виклики API і дочекайся мого схвалення.
- Нічого не публікуй, не надсилай, не плануй і не записуй у CRM.
- Запиши результат у ./gtm-brief.md і підсумуй його в чаті.

Копія також містить кроки встановлення й правила безпеки.

Що ви отримаєте

Приклад результату одного запуску. Не живе генерування.

Приклад GTM-брифа (фрагмент)

GTM-бриф — [сегмент] у [регіоні]

Визначення сегмента

Малі операційні команди, які ведуть розклад у таблицях. Розмір: даних немає в перевірених публічних джерелах — без джерела число в бриф не писати.

Мова покупців

  • «ми досі робимо це в таблиці» — допис X, 2026-10-18
  • «налаштування — найскладніша частина» — допис X, 2026-10-02

Позначено як мову, а не доказ поширеності.

Альтернативи, які називають покупці

Таблиці, наявний набір інструментів і нічого не робити. Джерело: https://example.com/thread (2026-10-18).

Заперечення й потрібні докази

Перевірка безпеки та шлях міграції. Покупці просять іменований референс; публічно його немає, тож питання відкрите.

Відкриті питання

  • Яка частина сегмента вже має окремий рядок бюджету?
  • Чи змінюється заперечення з розміром компанії?

Джерела

  • https://example.com/category-page
  • https://example.com/pricing-page
  • https://example.com/thread

Точні виклики

Для розробників: той самий процес як код, у порядку виконання.

Показати справжні виклики API
  1. Окресліть питання ринку

    Chat повертає відповідь і використані сторінки, тож почніть із достатньо вузького питання: хто купує, що використовують сьогодні, які заперечення виникають. Тримайте ресурси як посилання-підказки; відповідь — підказка, посилання — доказ, і вони закривають список джерел.

    gtm.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 product = "scheduling tool"; // replace with your product
    const segment = "operations teams at 50-200 person companies";
    const region = "DACH";
    
    const market = await felo<ChatData>("/v2/chat", {
      query: `Who buys ${product} for ${segment} in ${region}, what do they use today, and what objections come up?`,
    });
    
    const seedSources = market.data.resources.slice(0, 5);

    Приклад результату

    {
      "answer": "Buyers in this segment usually start from spreadsheets and …",
      "sources": [
        { "link": "https://example.com/category-page", "title": "…", "snippet": "…" }
      ]
    }
  2. Прочитайте сторінки категорій

    Завантажте сторінки, що окреслюють ринок: огляд категорії, порівняння й ціни. Вилучіть їх як Markdown із режимом читання й запишіть дату завантаження, бо якість читання ринку залежить від сторінок за ним.

    gtm.ts
    type ExtractData = { data: { content: string } };
    
    const marketPages = [
      { url: "https://example.com/category", title: "Category overview" },
      { url: "https://example.com/comparison", title: "Comparison page" },
      { url: "https://example.com/pricing", title: "Pricing page" },
    ];
    
    const pages = await Promise.all(
      marketPages.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 };
      }),
    );

    Приклад результату

    {
      "url": "https://example.com/category",
      "checkedAt": "2026-10-30",
      "content": "# Category overview\n\nExtracted page text…"
    }
  3. Зберіть, як покупці описують проблему

    Шукайте на X слова, які покупці вживають, стикаючись із проблемою, а не назву продукту. Зберігайте акаунти й дати; бриф використовує пости для мови й заперечень, ніколи як міру розміру ринку чи частоти.

    gtm.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 language = await felo<XData>("/v2/x/tweet/search", {
      query: `(spreadsheet OR "scheduling tool") (alternative OR "looking for")`,
      limit: 25,
      since_time: since,
    });
    
    const quotes = language.data.tweets.slice(0, 5);

    Приклад результату

    { "data": { "tweets": [
      {
        "content": "we are still doing this in a spreadsheet",
        "author": { "username": "example_ops" },
        "created_at": "2026-10-18T11:05:00Z",
        "metrics": { "retweet_count": 1, "favorite_count": 18 }
      }
    ] } }
  4. Напишіть бриф навколо рішення

    Поєднайте визначення сегмента, мову покупців, альтернативи, заперечення й відкриті питання в один Markdown. Кожне твердження зберігає джерело й дату, розмір ринку з’являється лише з джерелом, а те, чого публічні джерела не відповідають, іде у відкриті питання замість висновків.

    gtm.ts
    const today = new Date().toISOString().slice(0, 10);
    
    const sourceLine = (title: string, url: string, date: string) =>
      `- ${title}: ${url} (checked ${date})`;
    
    const brief = [
      `# GTM brief — ${segment} in ${region}`,
      "",
      "## Segment definition",
      "See the category page for how the segment is described. Market size: Not available from public sources reviewed.",
      "",
      "## Buyer language",
      ...quotes.map((post) => `- @${post.author.username}, ${post.created_at.slice(0, 10)}: ${post.content}`),
      "",
      "## Alternatives buyers mention",
      "Spreadsheets, an incumbent suite, and doing nothing. Treated as language until a source ranks them.",
      "",
      "## Objections and proof required",
      "Migration path and a named reference. Marked open: whether the objection changes by company size.",
      "",
      "## Open questions",
      "- How much of the segment already has a dedicated budget line?",
      "- Which objection blocks a pilot most often?",
      "",
      "## Sources",
      ...pages.map((page) => sourceLine(page.title, page.url, page.checkedAt)),
      ...seedSources.map((source) => `- ${source.title}: ${source.link}`),
    ].join("\n");
    
    console.log(brief);

    Приклад результату

    # GTM brief — operations teams at 50-200 person companies in DACH
  5. Збережіть докази для наступного ринку

    Створіть один LiveDoc на сегмент і регіон, додайте завантажені сторінки як URL-ресурси й бриф як документ. Наступний ринок стартує з тих самих джерел без повторного завантаження категорій, а повторне додавання URL дедуплікується.

    gtm.ts
    type LiveDocData = { data: { short_id: string } };
    
    const briefDoc = await felo<LiveDocData>("/v2/livedocs", {
      name: `GTM: ${segment} — ${region}`,
      description: `Market evidence checked ${today}`,
    });
    
    await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, {
      urls: pages.map((page) => ({ url: page.url, title: page.title })),
    });
    
    await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, {
      title: `GTM brief ${today}`,
      content: brief,
    });
    
    console.log(briefDoc.data.short_id); // reuse for the next region

    Приклад результату

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Що входить

  • Читання ринку з джерелами з Chat API і сторінками за ним
  • Сторінки категорій, порівняння й цін як Markdown
  • Мова й заперечення покупців із X з акаунтами й датами
  • Бриф навколо рішення про запуск, а не теми
  • LiveDoc, щоб наступний регіон чи запуск використав докази повторно

Чого не робить

  • Лише публічні джерела; без платних звітів, панелей і інтерв’ю з клієнтами
  • Ніколи не оцінює розмір чи зростання ринку — без даних пише «Недоступно»
  • Пости X — мова й сигнал, не репрезентативна вибірка покупців
  • Не обирає за вас сегмент чи ціну
  • Не публікує бриф і не записує в CRM

Запитання

Чи потрібен платний звіт про ринок?

Ні. Процес читає публічні джерела й позначає прогалини. Якщо звіт уже є, додайте його як документ у LiveDoc і цитуйте, як інше джерело.

Чи можна досліджувати ринок іншою мовою?

Так. Задайте регіон і мову. Цитати лишаються мовою оригіналу з перекладом поруч, щоб місцевий рецензент перевірив формулювання.

Чи отримаю розмір ринку?

Лише коли джерело його наводить, із посиланням і датою. Інакше бриф пише «Недоступно», а не вигадує число чи екстраполює з одного поста.

Чи говорить із клієнтами?

Ні. Він читає публічні джерела. Додайте нотатки інтерв’ю як документ і позначте внутрішніми; бриф ніколи не подає приватні нотатки як публічні докази.

Чим відрізняється від дослідницького брифу?

Дослідницький бриф відповідає на одне питання. Цей процес складає докази навколо рішення go-to-market — сегмент, мова покупців, альтернативи, заперечення й докази, яких просять — щоб увійти в план запуску.

Скільки коштує один бриф?

Кожен виклик чату, вилучення й пошуку X витрачає кредити за використання; актуальні тарифи на сторінці цін. Промпт просить схвалення перед витратою.

Пов’язані процеси

Адаптуйте

Той самий рецепт, підлаштований під те, як ви насправді працюєте.

Запускайте за регіоном

Збережіть структуру розділів і змініть лише регіон та мову. Один LiveDoc на регіон і ті самі питання, щоб брифі були порівнювані.

Додайте нотатки інтерв’ю

Вставте нотатки дзвінків із клієнтами як документ і позначте внутрішніми. Бриф може цитувати їх поруч із публічними доказами, але ніколи не подає приватну нотатку як публічне джерело.

Нагодуйте launch deck

Передайте розділ заперечень і доказів у процес deck, зберігши список джерел. Бриф лишається шаром доказів; deck — презентація, не друге джерело істини.

Довідкові сторінки за цим рецептом і наступні кроки.