Felo API PlatformFelo API Platform

Recherche

Étudiez un compte cible avant votre premier contact

Lisez le site de l’entreprise, la couverture récente et ce qu’elle publie, puis écrivez un brief de compte avec mouvements récents, priorités probables, sujets de conversation et inconnues honnêtes.

Temps20 minutesNiveauDébutantMis à jour2026-10-30
Pour quiFondateurs et opérateursAccount executivesResponsables commerciaux

Copier le prompt

Remplacez les champs entre crochets, puis collez dans Claude Code, Codex ou toute IA avec accès au terminal. Elle installe le skill Felo, demande avant de dépenser des crédits et exécute le workflow.

Rédige un brief de compte sur [nom ou domaine de l’entreprise] avant [prise de contact / appel de découverte / renouvellement].

Notre offre : [produit ou service]. Acheteur visé : [rôle]. Période des mouvements récents : [90 derniers jours / 12 derniers mois].

Lis leur site, la couverture publique et leurs publications publiques. Produis un brief Markdown avec :
1. Ce qu’ils font, en un paragraphe, avec sources.
2. Les mouvements récents : lancements, levées, recrutements, direction, partenariats — avec dates et liens.
3. Les priorités probables du trimestre, clairement marquées comme déduction.
4. Des amorces de conversation : trois observations précises, chacune avec sa source.
5. Les inconnues : ce que tu n’as pas pu vérifier publiquement.
6. Une liste complète des sources.

Règles :
- N’invente jamais de nom de contact, d’e-mail, de téléphone, d’effectif, de chiffre d’affaires ou de montant de levée.
- Sources publiques uniquement : pas de données privées, pas de pages réservées aux connectés, pas d’annuaires scrapés.
- N’écris dans aucun CRM ni autre système. Le brief est un fichier qu’un humain relit.
- Marque chaque déduction comme telle ; garde les faits avec leurs liens et dates.
- Ne présente pas l’intention de l’acheteur comme un fait.
- Avant de consommer des crédits, montre les appels API prévus et attends mon accord.
- N’envoie, ne planifie, ne publie et n’écris à personne.
- Écris le résultat dans ./account-brief.md et résume-le dans le chat.

La copie inclut aussi les étapes d'installation et les règles de sécurité.

Ce que vous obtenez

Exemple de sortie d'une exécution. Pas de génération en direct.

Exemple de brief compte (extrait)

Brief compte — [entreprise], vérifié le 2026-10-30

Ce qu’ils font

Fabrique des robots de picking d’entrepôt pour des logisticiens de taille moyenne. Source : https://example.com/about (vérifié le 2026-10-30).

Mouvements récents

  • Ouverture d’un deuxième site d’assemblage — https://example.com/news/expansion (2026-10-24)
  • Recrutement d’une équipe « deployment operations » — https://example.com/careers (vérifié le 2026-10-30)
  • Publication de leur compte sur une intégration partenaire — @example_company (2026-10-21)

Priorités probables (déduction)

Déploiements plus rapides sur plus de sites. Déduction tirée de la publication d’expansion et du nouveau rôle deployment — pas un plan annoncé, ni confirmé publiquement.

Amorces de conversation

  • Leur deuxième site est récent : demander comment le playbook de déploiement change quand les sites diffèrent. Source : https://example.com/news/expansion
  • Un rôle dédié deployment operations suggère une passation entre ventes et installation. Source : https://example.com/careers

Inconnues

  • Qui pilote deployment operations aujourd’hui : non disponible publiquement.
  • Taille de flotte et valeurs de contrat : non disponible.

Sources

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

Les appels exacts

Pour les développeurs : le même workflow en code, dans l'ordre d'exécution.

Afficher les appels API
  1. Obtenez la vue d’entreprise

    Demandez à Chat ce que fait l’entreprise et quels changements publics sont récents, en gardant les sources citées.

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

    Exemple de sortie

    {
      "answer": "The company builds …",
      "sources": [
        { "link": "https://example.com/about", "title": "…", "snippet": "…" }
      ]
    }
  2. Lisez site, tarifs et carrières

    Avec Web Fetch, lisez About, tarifs et carrières pour comprendre produit, clients et postes ouverts.

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

    Exemple de sortie

    {
      "url": "https://example.com/careers",
      "checkedAt": "2026-10-30",
      "content": "# Careers\n\nOpen roles: deployment operations…"
    }
  3. Regardez les signaux publics sur 90 jours

    Cherchez sur X le nom de l’entreprise et du produit, en gardant posts publics, comptes et dates sur 90 jours.

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

    Exemple de sortie

    { "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. Écrivez le brief de compte

    Décrivez vue d’entreprise, mouvements récents, priorités probables, sujets de conversation, inconnues et sources.

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

    Exemple de sortie

    # Account brief — Example Robotics
  5. Enregistrez dans le LiveDoc

    Enregistrez le brief et les sources dans le LiveDoc pour le prochain contact.

    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

    Exemple de sortie

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Ce qui est inclus

  • Vue d’entreprise sourcée par Chat
  • Site, tarifs et carrières extraits en Markdown
  • Posts publics datés sur X
  • Brief de compte structuré
  • LiveDoc avec les preuves

Ce qu'elle ne fait pas

  • Ne fournit pas d’e-mails, téléphones ou données personnelles
  • Ne lit pas les données privées ni les pages derrière login
  • N’écrit pas dans le CRM et n’envoie pas de messages
  • Effectifs, chiffre d’affaires et financement seulement avec source explicite
  • Priorités et intentions marquées comme inférence

Questions

Donne-t-il des e-mails de contact ?

Non. Le workflow fait uniquement de la recherche publique et ne fournit ni e-mail, ni téléphone, ni données personnelles.

D’où viennent les données ?

Chat renvoie une vue sourcée, Web Fetch lit site, tarifs et carrières, X Search ajoute des posts publics. Chaque élément garde lien et date.

Puis-je étudier des entreprises hors tech ?

Oui. Là où l’information publique manque, le brief marque les inconnues au lieu d’inventer.

Écrit-il dans le CRM ?

Non. Il génère seulement un brief Markdown ; l’intégration CRM est à votre charge.

Les priorités sont-elles des faits ?

Non. Le brief marque les « priorités probables » comme inférence et donne la base ; la décision finale revient au commercial.

Combien coûte une exécution ?

Chat, extraction et recherche X sont facturés à l’usage ; les tarifs actuels sont sur la page des prix, et le prompt demande votre accord avant dépense.

Workflows liés

Adaptez-la

La même recette, adaptée à votre façon de livrer.

Un seul segment

Restreignez à un secteur ou une région pour un brief plus précis.

Ajoutez le dernier lancement

Ajoutez la page du lancement comme source supplémentaire pour des sujets actuels.

Avec l’analyse concurrentielle

Comparez les priorités du brief avec le positionnement de l’analyse concurrentielle pour trouver un angle.

Les pages de référence derrière cette recette et la suite.