Mémoire des prospects pour les agents IA
Mémoire de recherche durable par entreprise, relue par les agents IA externes avant chaque recherche et enrichie ensuite, commune à toutes les campagnes du compte.
Les agents connectés au serveur MCP de Kit peuvent enregistrer des recherches sur une entreprise et les relire lors de tâches ultérieures, au lieu de répéter les mêmes recherches.
Données stockées
Il existe une mémoire par domaine d’entreprise et par compte. [email protected], https://www.acme.dev/careers et acme.dev renvoient tous vers acme.dev.
Chaque note contient :
- un corps Markdown chiffré au repos ;
- une ou plusieurs URL sources ;
-
observed_at, date à laquelle le fait était vrai ; - un titre facultatif ;
- un embedding utilisé uniquement pour détecter les recoupements au sein du compte.
La mémoire est commune à toutes les campagnes du compte. Une entreprise possède donc un seul dossier, pas trois. Une note enregistrée lors d’une campagne de recrutement reste disponible lorsqu’une campagne commerciale vise le même domaine six semaines plus tard.
Les notes observées depuis plus de 30 jours sont marquées stale. Le rappel renvoie aussi un indicateur stale pour tout le dossier : vrai lorsque la note la plus récente a plus de 30 jours, ou quand aucune note n’existe. Obsolète signifie qu’il faut vérifier le fait avant de l’utiliser dans un brouillon, pas jeter le dossier.
La boucle
Quatre outils interviennent. Leurs paramètres et réponses complets figurent dans la référence des outils MCP.
-
outreach_recall_prospect_context: premier appel de chaque exécution, avant toute recherche sur le web. Il renvoie les notes et l’historique du compte avec cette entreprise : campagnes, nombre de messages, dernière réponse et sentiment, exclusion éventuelle de l’adresse ou du domaine. -
outreach_save_prospect_research: un appel par constat distinct, pas un par exécution. Au moins une URL source est requise. -
Lisez
data.overlapdans la réponse. Ce résultat identifie les notes similaires et les sources partagées pour ce domaine. -
outreach_compact_prospect_context: fusionne les notes en un dossier. Uniquement à votre demande.
outreach_get_writing_guide renvoie le guide de rédaction naturelle de Kit pour en, de, fr, es ou pl. L’agent doit le lire avant de rédiger, pas après.
Deux conditions d’arrêt figurent dans chaque rappel : relationship.suppressed vaut true, ou relationship.last_reply.sentiment vaut negative ou bounce. Dans les deux cas, n’ajoutez pas le prospect et ne préparez aucun brouillon.
Prompt pour une tâche planifiée
Collez le prompt suivant dans une tâche planifiée Claude Cowork en remplaçant <CAMPAIGN NAME> par le nom de la campagne :
Run today's outreach research pass for the <CAMPAIGN NAME> campaign.
For every company on the list, in this order:
1. Call outreach_recall_prospect_context with the company domain FIRST, before any
web search. Read data.known, data.stale, and data.relationship.
2. If data.relationship.suppressed is true, or data.relationship.last_reply.sentiment
is "negative" or "bounce": skip the company entirely. Do not add a prospect, do not
draft. Add it to a "skipped" list in your summary with the reason.
3. If data.known is true and data.stale is false, do NOT re-research. Use the stored
notes.
4. Otherwise research the company, then call outreach_save_prospect_research once per
distinct finding, each with at least one source URL and the observed_at date the
fact was true.
5. Read data.overlap on every save response. Report any near_duplicates you created
and any shared_sources that show you re-read a page already cited.
6. Before drafting anything, call outreach_get_writing_guide for the campaign's
language and follow it.
7. Do NOT call outreach_compact_prospect_context. If data.compaction_suggested is true
for a company, list that company under "compaction suggested" in your summary and
stop there.
Finish with a summary containing four lists: researched, reused-from-memory, skipped
(with reasons), and compaction suggested.
Surveillez surtout la liste des éléments réutilisés depuis la mémoire. Si une exécution a tout recherché de nouveau, vérifiez si elle a relu la mémoire et si les faits stockés étaient à jour.
Ce que l’agent apprend sur les recoupements
Chaque réponse d’enregistrement comporte trois catégories. Les notes sont comparées par distance cosinus entre leurs embeddings.
| Catégorie | Déclencheur | Action attendue |
|---|---|---|
near_duplicates |
distance ≤ 0,10 : la note répète presque une note existante, dont le corps complet est renvoyé | Comparez-les. Si rien n’est ajouté, supprimez la nouvelle. Si elle actualise le fait, signalez-la pour compactage. |
overlaps |
0,10 < distance ≤ 0,30 : sujet proche, détail potentiellement différent. Un extrait de 300 caractères est renvoyé. | Signalez les deux et laissez une personne décider d’une fusion. |
shared_sources |
une URL canonique figure déjà dans une autre note | Vérifiez si l’agent a relu la page et si elle contenait de nouvelles informations. |
Si les trois catégories sont vides, aucune similarité ni source partagée n’a été détectée. Cela ne prouve pas que le contenu est nouveau : la comparaison sémantique ignore les notes sans embedding. Ce rapport n’est pas une instruction : les agents doivent le présenter et vous laisser décider de la fusion.
Le rappel ajoute overlap_pairs, les paires de notes stockées dont la distance ne dépasse pas 0,30, calculées sur les 20 plus récentes. Cette liste sert de base à une demande de compactage.
Compactage
outreach_compact_prospect_context crée un dossier fusionné et remplace les notes sélectionnées. La note conservée hérite de toutes leurs URL sources et de la plus ancienne date observed_at.
Les notes remplacées sont archivées, pas supprimées. Elles conservent un pointeur vers la note qui les remplace, ce qui permet de récupérer une mauvaise fusion.
L’outil reçoit expected_note_count, la valeur note_count du rappel utilisé pour préparer la fusion. Si quelqu’un ajoute une note entre-temps, le nombre ne correspond plus et la fusion s’interrompt au lieu d’absorber la nouvelle note.
Limites
| Limite | Valeur |
|---|---|
| Corps d’une note | 10 Ko. Toute valeur supérieure est refusée. |
| Titre | Réduit à une ligne et limité à 120 caractères. |
| URL sources | De 1 à 20. Chacune doit être une URL http ou https de moins de 2 Ko. |
observed_at |
Obligatoire, sans valeur par défaut. Utilisez la date de validité du fait : elle détermine l’obsolescence. |
| Notes enregistrées par jour | 200 par compte. Au-delà, l’outil refuse tout ajout jusqu’au lendemain. |
| Notes par domaine | 50. Au-delà, l’ajout est refusé ; le compactage permet de redescendre sous la limite. |
| Obsolescence | 30 jours |
| Compactage suggéré | Plus de 8 notes pour un domaine |
| Charge utile du rappel | 100 Ko. Au-delà, les notes sont classées sémantiquement et truncated vaut true. |
Le rappel exige la portée outreach_read. L’enregistrement et le compactage exigent outreach_write ainsi que le rôle d’administration du module Outreach. L’ensemble nécessite le module complémentaire Outreach et un abonnement actif.
Affichage des notes dans Kit
La page du prospect affiche les trois notes les plus récentes selon leur date d’observation, avec un lien View all (Tout afficher).
La liste permet la lecture et la suppression. Supprimer une note l’enlève du dossier et de tous les futurs rappels. Le navigateur ne permet ni d’écrire ni de modifier une note : seuls les outils disposent d’un chemin d’écriture.
Ce que cette mémoire n’est pas
- Pas un CRM. Elle stocke des recherches sur une entreprise, pas des contacts, des contrats ni un pipeline.
- Pas une mémoire générale d’agent. Elle est indexée par domaine et accessible uniquement par les quatre outils Outreach. Elle ne conserve ni notes arbitraires, ni état de tâche, ni historique de conversation.
- Pas partagée entre les comptes. Chaque requête reste limitée au compte connecté. Aucune note ne franchit la frontière d’un tenant et rien n’est agrégé entre clients.
- Pas un canal d’envoi. Rien ici n’envoie d’e-mail. L’envoi reste soumis à une validation humaine dans le flux de revue des messages.