Un agent commercial dans Obsidian
J'ai construit un agent commercial local-first pour Story by Numbers.
Il repère les entreprises néerlandaises qui correspondent au type de travail que je vends, les note face à mes créneaux de service et écrit chaque jour une courte note dans Obsidian.
Comment fonctionnent les signaux
Un signal est un petit fait observable au sujet d'une entreprise. A-t-elle un catalogue de produits ? Une archive ? Une collection de recherche publiée ? Un portail B2B ? Une production éditoriale ?
Chaque fait fait monter ou descendre une note. Certains signaux sont des barrières. Ils rejettent des candidats avant tout appel à un modèle. D'autres sont des poids. Ils inclinent des candidats similaires vers des créneaux différents.
Un grossiste doté d'un catalogue profond et d'un portail B2B obtiendra une note élevée dans une direction. Une fondation de recherche dotée d'une archive numérisée obtiendra une note élevée dans une autre. Le même agent examine les deux, mais les lit très différemment.
Je garde privé l'ensemble de mes signaux. C'est la version encodée de mon offre et de mon goût, et cela évolue à mesure que j'apprends.
Filtrer avant le modèle
Le nettoyage a lieu avant que le modèle de langage n'intervienne. Les secteurs auxquels je ne vends jamais disparaissent avant toute étape de raisonnement. Les entreprises hors du modèle de service sont rejetées à la couche des règles. Seuls les survivants passent par une évaluation structurée.
Cela ne laisse au modèle que les jugements à porter, et cela maintient le coût d'exécution prévisible.
Obsidian comme boucle de rétroaction
La note atterrit dans Obsidian, où je tiens déjà mes notes.
Je marque les entreprises comme rejetées, mises en attente, perdues ou gagnées. Ces annotations sont relues dans la base locale à l'exécution suivante. Une étape de réflexion propose des ajustements de scoring à partir des résultats récents. Je les examine à la main avant qu'aucun ne prenne effet.
L'agent s'améliore. Le jugement final me revient.
Petit, local, inspectable
La pile est volontairement simple. Python, SQLite, sources publiques, markdown, Obsidian.
L'ensemble tourne sur mon ordinateur portable. L'étape de raisonnement appelle Claude via la CLI, qui utilise mon abonnement mensuel, donc il n'y a pas de facture d'API par exécution à laquelle penser. Une tâche cron lance une exécution chaque matin pendant que je prépare le café.
Pas de tableau de bord, pas de service hébergé, pas de prospection automatisée. Chaque phase écrit dans une base locale, de sorte que les exécutions peuvent être reprises et les décisions inspectées plus tard.
L'agent est utile parce qu'il est étroit. Il encode mon contexte commercial et me donne chaque semaine un petit nombre d'entreprises plausibles.
Pour un studio comme le mien, c'est suffisant.