Skip to main content
Jonathan Andrei
Retour aux billets
Juil.-août 202612 min de lecture

Bloom : personne n'annule, on cesse simplement de venir. Bloom lit le rythme de visite propre à chaque client, signale ceux qui s'en écartent, et écrit une note personnelle à chacun. Les règles décident QUI, Gemini décide QUOI DIRE.

Un salon typique perd environ 40 % de ses clients chaque année, un premier-timer qui ne re-réserve pas dans les 30 jours a environ une chance sur cinq de jamais revenir, et un habitué fidèle vaut plusieurs centaines de dollars par an. Le signal est invisible parce que c'est une absence, répartie sur des centaines de personnes qui ont chacune leur propre rythme. L'architecture de Bloom est l'idée : les règles décident QUI (moteur de risque déterministe sur l'écart de visite médian propre à chaque client), Gemini décide QUOI DIRE (une note courte dans la voix du propriétaire, référençant l'histoire réelle de cette personne). La démo de toute la thèse est deux clientes : Aisha et Jane sont toutes deux à 44 jours depuis leur dernière visite ; Aisha vient toutes les 8 semaines, Jane toutes les 4. Tout outil qui signale « pas de visite en 60 jours » se trompe sur l'une d'elles.

GeminiXPRIZEHackerFundGoogle Gemini 2.5 FlashVertex AINext.jsPrismaNeonStripeResendClient Retention
J'ai créé ce billet et le projet Bloom pour le Google Gemini XPRIZE / Hacker.fund Build with Gemini hackathon (catégorie Small Business Services, clôture le 17 août). #GeminiXPRIZE #HackerFund
La revendication en une phrase : la plus grande fuite de profit unique que la plupart des commerces locaux ont n'est pas le marketing, c'est la mémoire. Personne n'annule ; on cesse simplement de venir, et le propriétaire l'apprend des mois plus tard. Un premier-timer qui ne re-réserve pas dans les 30 jours a environ une chance sur cinq de jamais revenir, donc les jours 7 à 30 après une première visite sont le moment le plus précieux de toute l'entreprise et celui que personne ne regarde. Bloom le regarde en lisant le rythme de visite propre à chaque client et en signalant la dérive contre lui, puis rédige une note personnelle que le propriétaire revoit et envoie. C'est votre carnet de rendez-vous, mais qui se lit lui-même.
Page d'accueil de Bloom en mode sombre : gros titre serif « Nobody cancels. They just stop coming. » avec un soulignement sur « coming ». Le côté droit montre le radar client avec six clientes (Priya R, Aisha B, Jane W, Marcus D, Elena S, Nina K) et une frise de visites en icônes fleur ; Jane et Marcus sont signalées en rouge à 44 jours, Elena dérive, Nina a 12 jours restants. Sous-titre : « It is not a marketing problem. It is a memory problem. »
Toute la thèse en un écran. Six clientes, une frise chacune, une ligne de prose en dessous : « Aisha et Jane sont toutes deux passées il y a 44 jours. Une seule d'entre elles s'en va. » Tout le reste dans le produit, c'est cette phrase, rendue actionnable.

L'architecture est l'idée

Les règles décident QUI. Gemini décide QUOI DIRE. Le moteur de risque est déterministe, et délibérément. Il calcule l'écart médian entre les vraies visites d'un client (médiane, pas moyenne, parce qu'un écart de six mois pour une blessure tirerait une moyenne assez loin pour cacher une vraie rupture), puis les note contre leur propre cadence. C'est exact, auditable, reproductible, et ça n'hallucine jamais : le même carnet produit toujours le même verdict, ce qui compte quand la sortie est « cette personne vaut 1 295 $ par an et elle s'en va ». Gemini fait ensuite ce qu'une règle ne peut pas : lit une histoire humaine désordonnée (ce qu'ils ont fait en dernier, à quelle fréquence ils viennent normalement, à quel point ils sont au-delà de leur propre rythme) et leur écrit une note courte dans la voix de marque du propriétaire. Le propriétaire revoit, édite n'importe quelle ligne s'il le veut, et approuve avant que Bloom n'envoie depuis le domaine vérifié de l'entreprise. Jamais en masse : un message, une personne, une fois.

La démo à deux clientes de toute la thèse. Aisha vue pour la dernière fois il y a 44 jours, cadence 56 jours (8 semaines), verdict vert. Jane vue pour la dernière fois il y a 44 jours, cadence 28 jours (4 semaines), verdict drapeau rouge. Tout outil qui signale « pas de visite en 60 jours » les traite identiquement. Bloom reste silencieux sur Aisha et écrit à Jane.
Même date de dernière visite, verdicts opposés, et la règle basée sur le calendrier ne voit pas la différence. C'est la seule image que tout le produit existe pour rendre possible.

Rien à migrer : ce que le propriétaire utilise déjà

Le propriétaire exporte un CSV de ce qu'il utilise déjà (Fresha, Square, Vagaro, Booksy, même Google Calendar) et l'upload. Rien à migrer, rien à installer. Le parser trouve les colonnes par mot-clé plutôt que par nom d'en-tête, donc les exports de plateformes que Bloom n'a jamais vues fonctionnent quand même. Les lignes du même jour sont fusionnées en une visite, parce que ces plateformes exportent une ligne par ligne de service. Cette partie est gratuite, parce que ça ne coûte rien de montrer à quelqu'un ses propres pertes. Ce que le propriétaire voit est un radar client qui note chaque client contre sa propre cadence, avec ce que chacun vaut par an attaché ; à partir de là, le propriétaire déclenche un win-back un client à la fois. La livraison est plafonnée par entreprise et globalement, avec un send-claim atomique comme filet de sécurité pour qu'un cron relancé ne double jamais un message. La sauvegarde est mesurée sur les propres données du propriétaire : ré-upload d'un export frais, et si le client a re-réservé après le départ de la note, Bloom le compte.

Tableau de bord Bloom pour l'entreprise « The Corner Cafe » : tuiles de stats (0 infolettres envoyées, 0 abonnés, 1 semaine de contenu, 4 actions IA journalisées), le contenu de la semaine (trois publications + un sujet d'infolettre), un journal d'activité IA (« A rejeté son propre brouillon 65/100, l'a réécrit, mais la réécriture a noté 35/100 donc il a gardé l'original » ; « Self-QA a noté 65/100 » ; « A choisi l'angle de la semaine »), et un panneau d'abonnés à l'infolettre.
Le journal d'activité IA inclut les brouillons rejetés et les scores de self-QA, pas seulement la sortie finale. Cette transparence est ce que AI-Native Operations (un critère noté à ce hackathon) demande vraiment.

L'agent hebdomadaire autonome, qui ship encore

Bloom a commencé comme un agent de contenu marketing et a pivoté vers la rétention. Le pivot est arrivé parce que le contenu est une commodité : n'importe quel propriétaire peut obtenir des légendes d'un chatbot en trente secondes, et je vendais quelque chose de gratuit. Ce qu'aucun d'eux ne pouvait obtenir, c'était une réponse à une question plus difficile : lequel de mes clients suis-je sur le point de perdre. C'est là que la rétention vit maintenant. Séparément, l'agent de contenu hebdomadaire original tourne toujours entièrement autonome sur un sidecar cron. Chaque lundi il choisit l'angle de la semaine, génère trois publications sociales et une infolettre dans la voix de marque du propriétaire, exécute une porte self-QA qui rejette et réécrit ses propres brouillons s'ils notent en dessous d'un seuil, et en Pro envoie l'infolettre depuis le domaine vérifié. Chaque action atterrit dans un fil d'agent public en direct (`/agent`) qu'un juge (ou n'importe qui) peut regarder en temps réel. Ce n'est plus le titre, mais c'est la raison pour laquelle AI-Native Operations, un tiers du score de ce hackathon, est vraiment satisfait plutôt que joué.

Page du fil « /agent » en direct : « Ce que l'agent a fait · Un enregistrement en direct, non édité, de chaque décision et action que l'agent de Bloom a prise en production. » Stats : 21 actions d'agent, 3 exécutions de contenu, 0 abonnés atteints, 3 entreprises. Entrées de log : actions « rewrote », « qa », « decide », « generate », « pause », « activate » avec horodatages et infos de modèle (gemini-2.5-flash via vertex, 5 360 tokens, 23,7s), une entrée montrant « Self-QA a noté 65/100. Le call to action dans Post 2 est un peu générique. »
Public, non édité, inclut les rejets. Voilà à quoi ressemble une opération autonome continue quand elle n'est pas curée pour une démo. Le cron a tourné chaque lundi depuis début juillet.
Projet associé

Bloom: Nobody Cancels, They Just Stop Coming. Bloom Reads Each Client's Own Visit Rhythm, Flags the Ones Drifting from It, and Writes a Personal Note to Each. Rules Decide Who, Gemini Decides What to Say.

Voir le projet
Unsay : un agent IA de sécurité médicamenteuse qui revient et défait ce qu'il a dit. Quand la FDA élève un rappel, il corrige chaque patient nommé qu'il avait déjà rassuré, en quelques secondes.
Article précédent

Unsay : un agent IA de sécurité médicamenteuse qui revient et défait ce qu'il a dit. Quand la FDA élève un rappel, il corrige chaque patient nommé qu'il avait déjà rassuré, en quelques secondes.

La mémoire d'agent a un mode d'échec que la qualité de récupération ne peut pas réparer : le contexte périmé. La similarité à une mémoire stockée ne prouve pas que la mémoire est encore vraie. Pour la plupart des agents c'est embarrassant. Dans une pharmacie c'est un rappel de Classe I. Le correctif d'Unsay est un schéma bitemporel sur CockroachDB (`valid_from`/`valid_to` pour le monde, `asserted_at`/`retracted_at` pour la croyance de ce système), et un join qu'aucune base vectorielle ne peut exprimer : chaque réponse encore debout qui s'appuyait sur une version d'affirmation qu'on ne croit plus. La relecture fonctionne encore au-delà de l'horizon AS OF SYSTEM TIME, et chaque correction est exactly-once à travers une panne de région.

Août 202613 min de lecture
coldpath : le build Ollama Windows-on-Arm est expédié avec l'unité matricielle éteinte. Correctif d'une ligne déposé en amont, 5,75x sur le traitement de prompt.
Article suivant

coldpath : le build Ollama Windows-on-Arm est expédié avec l'unité matricielle éteinte. Correctif d'une ligne déposé en amont, 5,75x sur le traitement de prompt.

Je ne pouvais pas répondre à une question basique sur ma propre machine Arm : quand un LLM local tourne, utilise-t-il réellement l'unité matricielle de la puce, ou retombe-t-il silencieusement sur du code scalaire ? Alors j'ai écrit l'outil qui répond, l'ai pointé sur l'écosystème, et j'ai trouvé le runner LLM Windows-on-Arm le plus populaire froid. coldpath est un désassembleur AArch64 basé sur Capstone qui prouve qu'un binaire contient des instructions SME, i8mm et dotprod ; la trouvaille est que le build officiel win-arm64 d'Ollama en a zéro. Correctif d'une ligne déposé en amont (PR #17654), 5,75x récupéré sur le traitement de prompt mesuré en direct sur Azure Cobalt 100, gaté en CI comme GitHub Action réutilisable.

Août 202612 min de lecture