Felo API PlatformFelo API Platform

Ricerca

Studia un account target prima del primo contatto

Leggi il sito dell’azienda, la copertura recente e ciò che pubblica, poi scrivi un brief con mosse recenti, priorità probabili, spunti di conversazione e incognite oneste.

Tempo20 minutiLivelloBaseAggiornato2026-10-30
Per chiFondatori e operatoriAccount executiveResponsabili 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 sull’account [nome o dominio azienda] prima di [contatto / call di discovery / rinnovo].

La nostra offerta: [prodotto o servizio]. Compratore che ci interessa: [ruolo]. Finestra dei movimenti recenti: [ultimi 90 giorni / ultimi 12 mesi].

Leggi il loro sito, la copertura pubblica e i post pubblici. Produci un brief Markdown con:
1. Cosa fanno, in un paragrafo, con fonti.
2. Movimenti recenti: lanci, finanziamenti, assunzioni, leadership, partnership — con date e link.
3. Priorità probabili del trimestre, chiaramente segnate come deduzione.
4. Spunti di conversazione: tre osservazioni concrete, ciascuna con la sua fonte.
5. Incognite: ciò che non hai potuto verificare da fonti pubbliche.
6. Un elenco completo delle fonti.

Regole:
- Non inventare mai nome di contatto, email, telefono, numero di dipendenti, fatturato o importo di finanziamento.
- Solo fonti pubbliche: niente dati privati, pagine riservate al login o directory raschiate.
- Non scrivere in un CRM o in un altro sistema. Il brief è un file che una persona rivede.
- Segna ogni deduzione come tale; conserva i fatti con link e date.
- Non presentare l’intento del compratore come un fatto.
- Prima di consumare crediti, mostra le chiamate API previste e attendi la mia approvazione.
- Non inviare, programmare, pubblicare né scrivere a nessuno.
- Scrivi il risultato in ./account-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 account (estratto)

Brief account — [azienda], verificato il 2026-10-30

Cosa fanno

Costruisce robot di picking per magazzini di operatori logistici medi. Fonte: https://example.com/about (verificato il 2026-10-30).

Movimenti recenti

  • Aperto un secondo sito di assemblaggio — https://example.com/news/expansion (2026-10-24)
  • Assunzioni per un team «deployment operations» — https://example.com/careers (verificato il 2026-10-30)
  • Post del loro account su un’integrazione partner — @example_company (2026-10-21)

Priorità probabili (deduzione)

Deployment più rapidi su più siti. Deduzione dal post di espansione e dal nuovo ruolo deployment — non un piano dichiarato, né confermato pubblicamente.

Spunti di conversazione

  • Il secondo sito è nuovo: chiedere come cambia il playbook di deployment quando i siti differiscono. Fonte: https://example.com/news/expansion
  • Un ruolo dedicato alle operations di deployment suggerisce un passaggio tra vendite e installazione. Fonte: https://example.com/careers

Incognite

  • Chi guida oggi deployment operations: non disponibile da fonti pubbliche.
  • Dimensione della flotta e valori dei contratti: non disponibile.

Fonti

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

Le chiamate esatte

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

Mostra le chiamate API reali
  1. Ottieni la panoramica

    Chiedi a Chat cosa fa l’azienda e quali cambiamenti pubblici recenti ci sono, conservando le fonti citate.

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

    Output di esempio

    {
      "answer": "The company builds …",
      "sources": [
        { "link": "https://example.com/about", "title": "…", "snippet": "…" }
      ]
    }
  2. Leggi sito, prezzi e carriere

    Con Web Fetch leggi About, prezzi e carriere per capire prodotto, clienti e ruoli aperti.

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

    Output di esempio

    {
      "url": "https://example.com/careers",
      "checkedAt": "2026-10-30",
      "content": "# Careers\n\nOpen roles: deployment operations…"
    }
  3. Guarda i segnali pubblici degli ultimi 90 giorni

    Cerca su X nome azienda e prodotto, conservando post pubblici, account e date degli ultimi 90 giorni.

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

    Output di esempio

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

    Descrivi panoramica, mosse recenti, priorità probabili, spunti, incognite e fonti.

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

    Output di esempio

    # Account brief — Example Robotics
  5. Salva nel LiveDoc

    Salva brief e fonti nel LiveDoc per riusarli al prossimo contatto.

    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

    Output di esempio

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Cosa include

  • Panoramica aziendale con fonti da Chat
  • Sito, prezzi e carriere in Markdown
  • Post pubblici datati su X
  • Brief strutturato
  • LiveDoc con le prove

Cosa non fa

  • Non fornisce email, telefoni o dati personali
  • Non legge dati privati o pagine solo login
  • Non scrive nel CRM e non invia messaggi
  • Dipendenti, ricavi e finanziamenti solo con fonte esplicita
  • Priorità e intenzioni sono marcate come inferenza

Domande

Fornisce email di contatto?

No. Il workflow fa solo ricerca pubblica e non fornisce email, telefono o dati personali.

Da dove vengono i dati?

Chat restituisce una panoramica con fonti, Web Fetch legge sito, prezzi e carriere, X Search aggiunge post pubblici. Ogni elemento conserva link e data.

Posso studiare aziende non tech?

Sì. Dove mancano informazioni pubbliche, il brief segnala le incognite invece di inventare.

Scrive nel CRM?

No. Genera solo un brief Markdown; l’integrazione CRM è tua.

Le priorità sono fatti?

No. Il brief marca “priorità probabili” come inferenza e mostra la base; la decisione finale è del venditore.

Quanto costa un’esecuzione?

Chat, estrazione e X Search sono a consumo; le tariffe attuali sono nella pagina prezzi e il prompt chiede approvazione prima di spendere.

Workflow correlati

Adattala a te

La stessa ricetta, adattata a come lavori davvero.

Solo un segmento

Restringi a settore o regione per un brief più concreto.

Aggiungi l’ultimo lancio

Includi la pagina del lancio come fonte extra per spunti attuali.

Insieme all’analisi competitiva

Confronta le priorità del brief con il posizionamento dell’analisi e trova un angolo.

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