Felo API PlatformFelo API Platform

Ricerca

Trasforma una domanda di mercato in un brief go-to-market

Fai una domanda precisa al mercato, leggi le pagine di categoria e prezzi dietro la risposta, raccogli come gli acquirenti descrivono il problema su X e salva un brief GTM con affermazioni documentate e domande aperte.

Tempo30 minutiLivelloIntermedioAggiornato2026-10-30
Per chiFondatori e operatoriProduct marketingResponsabili vendite

Copia il prompt

Sostituisci i campi tra parentesi quadre e incolla in Claude Code, Codex o qualsiasi IA con accesso al terminale. Installa lo skill Felo, chiede prima di spendere crediti ed esegue il workflow.

Prepara un brief di ricerca go-to-market per [prodotto] che entra in [segmento o ICP] in [regione], in [lingua].

Motion: [self-serve / vendite / partner]. Decisione che supporta: [lancio / prezzi / riposizionamento]. Finestra temporale: [ultimi 90 giorni / ultimi 12 mesi].

Produci un brief Markdown con:
1. Definizione del segmento: chi sono, cosa usano oggi e cosa dicono le fonti sulla dimensione — cita una fonte o scrivi «Non disponibile».
2. Linguaggio dei compratori: come descrivono il problema, con link e date.
3. Alternative: da cosa passano, inclusi fogli di calcolo e non fare nulla.
4. Obiezioni e le prove che i compratori chiedono.
5. Domande aperte a cui le fonti pubbliche non rispondono.
6. Un elenco completo delle fonti.

Regole:
- Ogni affermazione di mercato richiede link e data. Non stimare mai dimensione, crescita o budget a sensazione.
- Separa fonti indipendenti, pagine dei fornitori e tue deduzioni.
- Usa X per linguaggio e obiezioni, non come prova della dimensione di mercato.
- Trasforma finestra temporale e regione in valori espliciti.
- Prima di consumare crediti, mostra le chiamate API previste e attendi la mia approvazione.
- Non pubblicare, inviare, programmare né scrivere in alcun CRM.
- Scrivi il risultato in ./gtm-brief.md e riassumilo in chat.

La copia include anche i passaggi di installazione e le regole di sicurezza.

Cosa ottieni

Output di esempio di un'esecuzione. Non è generazione dal vivo.

Esempio di brief GTM (estratto)

Brief GTM — [segmento] in [regione]

Definizione del segmento

Piccoli team operativi che gestiscono la pianificazione in fogli di calcolo. Dimensione: non disponibile nelle fonti pubbliche esaminate — nessun numero senza fonte.

Linguaggio degli acquirenti

  • «lo facciamo ancora in un foglio di calcolo» — post X, 2026-10-18
  • «la configurazione è la parte difficile» — post X, 2026-10-02

Etichettato come linguaggio, non come prova di diffusione.

Alternative citate

Fogli di calcolo, una suite esistente e non fare nulla. Fonte: https://example.com/thread (2026-10-18).

Obiezioni e prove richieste

Revisione di sicurezza e percorso di migrazione. Gli acquirenti chiedono una referenza con nome; non ne abbiamo pubbliche, quindi resta aperto.

Domande aperte

  • Quanta parte del segmento ha già una linea di budget dedicata?
  • L’obiezione cambia con la dimensione dell’azienda?

Fonti

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

Le chiamate esatte

Per gli sviluppatori: lo stesso workflow come codice, nell'ordine di esecuzione.

Mostra le chiamate API reali
  1. Inquadra la domanda di mercato

    Chat restituisce risposta e pagine usate, quindi parti da una domanda abbastanza stretta: chi compra, cosa usano oggi, quali obiezioni emergono. Tieni le risorse come link-pista; la risposta è pista, i link sono prove e chiudono la lista fonti.

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

    Output di esempio

    {
      "answer": "Buyers in this segment usually start from spreadsheets and …",
      "sources": [
        { "link": "https://example.com/category-page", "title": "…", "snippet": "…" }
      ]
    }
  2. Leggi le pagine di categoria

    Scarica le pagine che inquadrano il mercato: panoramica categoria, confronto e prezzi. Estraile in Markdown con leggibilità e metti la data di recupero, perché la qualità della lettura dipende dalle pagine dietro.

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

    Output di esempio

    {
      "url": "https://example.com/category",
      "checkedAt": "2026-10-30",
      "content": "# Category overview\n\nExtracted page text…"
    }
  3. Raccogli come gli acquirenti descrivono il problema

    Cerca su X le parole che usano gli acquirenti quando incontrano il problema, non il nome del prodotto. Conserva account e date; il brief usa i post per linguaggio e obiezioni, mai come misura di dimensione o frequenza.

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

    Output di esempio

    { "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. Scrivi il brief intorno alla decisione

    Unisci definizione del segmento, linguaggio, alternative, obiezioni e domande aperte in un Markdown. Ogni affermazione conserva fonte e data, la dimensione appare solo con una fonte e ciò che le fonti pubbliche non rispondono va nelle domande aperte invece che in inferenza.

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

    Output di esempio

    # GTM brief — operations teams at 50-200 person companies in DACH
  5. Conserva le prove per il prossimo mercato

    Crea un LiveDoc per segmento e regione, aggiungi le pagine come risorse URL e il brief come documento. Il prossimo mercato parte dalle stesse fonti senza riscaricare le categorie, e riaggiungere un URL viene deduplicato.

    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

    Output di esempio

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Cosa include

  • Lettura di mercato con fonti dal Chat API e le pagine dietro
  • Pagine categoria, confronto e prezzi in Markdown
  • Linguaggio e obiezioni degli acquirenti da X con account e date
  • Brief strutturato intorno alla decisione di lancio, non al tema
  • LiveDoc per riusare le prove nella prossima regione o lancio

Cosa non fa

  • Solo fonti pubbliche; niente report a pagamento, panel o interviste con clienti
  • Non stima mai dimensione o crescita del mercato — senza dati scrive “Non disponibile”
  • I post X sono linguaggio e segnale, non un campione rappresentativo
  • Non sceglie segmento o prezzo per te
  • Non pubblica il brief né scrive nel CRM

Domande

Serve un report di mercato a pagamento?

No. Il workflow legge fonti pubbliche e segnala i vuoti. Se hai già un report, aggiungilo come documento nel LiveDoc e citalo come qualsiasi altra fonte.

Posso ricercare un mercato in un’altra lingua?

Sì. Imposta regione e lingua. Le citazioni restano nella lingua originale con traduzione accanto, così un revisore locale può controllare la formulazione.

Mi dà la dimensione del mercato?

Solo quando una fonte la indica, con link e data. Altrimenti il brief scrive “Non disponibile” invece di inventare un numero o estrapolare da un post.

Parla con i clienti?

No. Legge fonti pubbliche. Aggiungi note di intervista come documento e marcate come interne; il brief non presenta mai note private come prove pubbliche.

In cosa differisce dal brief di ricerca?

Il brief di ricerca risponde a una domanda. Questo workflow organizza le prove intorno a una decisione go-to-market — segmento, linguaggio, alternative, obiezioni e prove richieste — per alimentare un piano di lancio.

Quanto costa un brief?

Ogni chiamata chat, estrazione e ricerca X consuma crediti a consumo; le tariffe attuali sono nella pagina prezzi. Il prompt chiede approvazione prima di spendere.

Workflow correlati

Adattala a te

La stessa ricetta, adattata a come lavori davvero.

Esegui per regione

Mantieni la struttura e cambia solo regione e lingua. Un LiveDoc per regione e le stesse domande, così i brief sono confrontabili.

Aggiungi le tue note di intervista

Incolla note di chiamate come documento e marcate come interne. Il brief può citarle accanto alle prove pubbliche, ma non presenta mai una nota privata come fonte pubblica.

Alimenta il deck di lancio

Passa la sezione obiezioni e prove al workflow deck tenendo la lista fonti. Il brief resta lo strato di prove; il deck è una presentazione, non una seconda fonte di verità.

Le pagine di riferimento dietro questa ricetta e i prossimi passi.