05Toul'BarzEn chantier

« on a vu qu'il y a plein de trucs de fou qui se font niveau automatisation. toi qui connais, tu penses que ça peut nous aider pour la gestion de l'asso ? »

le bureau d'une association de street workout, à Toulouse

Une asso pilotée depuis les LLM qu'elle utilise déjà.

Le bureau écrit à Claude ou à ChatGPT, comme il le fait déjà. Derrière, une passerelle reconnaît l'asso et refuse ce qui dépasse ; un tableau de bord monochrome tient les événements, les adhésions et les envois. Rien ne part sans passer par le goulot, rien ne se perd en silence.

Du premier fichier aux modules en service
6 semaines
Ce qui en reste aujourd'hui
233 membres, 76 événements sortis des tableurs
Socle en production
3 juin 2026

tbEntrer Plateforme privée de l'asso · conception, code, mise en production, en solo

Événements

Le cœur de l'asso, de l'idée jusqu'au bilan.

Prochain programme WhatsApp (lundi)

Le cycle de vie d'un événement, repris du code du tableau de bord (StatusStepper.vue, ADR 0020) : cinq états, de l'idée au bilan. Cliquez un état pour y passer, ou annulez : les règles, les délais et le message de confirmation sont ceux du produit. Rien n'est enregistré ici. Copier prend le programme du lundi reproduit plus bas.

Ce que la phrase voulait dire

Un bureau bénévole qui passe ses soirées dans des tableurs et du papier : événements, adhésions, relances, communications de groupe. Ce bureau utilise déjà Claude et ChatGPT pour l'asso, et voit passer « plein de trucs de fou niveau automatisation ». Personne ne demandait une plateforme. La question posée était : est-ce que ça peut nous rendre du temps.

Ne pas leur apprendre un nouvel outil : brancher leurs LLM, par MCP, sur une passerelle qui sait qui parle et ce qu'elle a le droit d'envoyer. Et sortir des tableurs ce qui se répète : les événements suivis en cinq états, les adhésions HelloAsso traitées à l'arrivée, les relances envoyées à l'heure, les groupes WhatsApp servis le lundi matin.

Ce qui a été construit

Un tableau de bord argent et encre derrière un seuil ; une API sur un serveur, avec un planificateur en heure de Paris ; une passerelle d'envoi commune à tous les projets de la maison ; et un accès MCP pour que le bureau pilote depuis ses LLM.

Piloté depuis leurs LLM, par MCP

L'asso n'a pas de nouvel outil à apprendre. Ses LLM se connectent à la passerelle d'envoi par MCP ; le jeton porte l'identité de l'asso, et chaque appel passe par le même goulot que tous les envois de la plateforme. Ce que le LLM demande, le serveur le vérifie : un refus revient lisible, avec la raison et le délai exact avant la prochaine fenêtre.

LE BUREAU Claude, ChatGPT les LLM déjà utilisés pour l'asso depuis leurs propres outils MCP jeton au nom de l'asso LA PASSERELLE ENVOI LE GOULOT kill switch, suspension quotas et débit consentement liste de suppression anti-ban WhatsApp garde-fous de contenu côté serveur, jamais dans le prompt admis CE QUI PART E-mail contact@admin.toulbarz.fr WhatsApp le numéro de l'asso Notification push sur le téléphone · à venir refus lisible : quota, consentement, délai exact avant la prochaine fenêtre la clé, échangée une fois, n'entre jamais dans le contexte du LLM
L'accès client de la passerelle (spec 1 de la plateforme, ADR-020 et ADR-021 d'envoi) : la clé de projet sert de credential OAuth une seule fois, le jeton porte le tenant, et les outils lisent cette identité. Aucun repli sur un projet par défaut : à la moindre ambiguïté, refus.

La sécurité ne repose pas sur le modèle de langage. Elle est dans le serveur, et elle s'applique avant lui : identité par jeton, cloisonnement par association, quotas et débit, consentement, liste de suppression, cadence WhatsApp. Un modèle qui demanderait un envoi interdit se fait refuser, quoi qu'on lui ait écrit.

Le bloc d'instructions posé à côté ne sert donc pas à faire respecter ces règles : il sert à faire gagner du temps. Il dit d'avance à qui on peut écrire et ce qui ne passera pas, pour que personne, humain ou modèle, ne dépense des minutes et des jetons sur des chemins déjà fermés.

Les e-mails de l'asso partent de contact@admin.toulbarz.fr, avec leur propre plafond et leur propre domaine.

Les plafonds, la cadence et les listes de refus sont réglés pour rester à l'intérieur des politiques d'usage des messageries et de WhatsApp. Un envoi qui les dépasserait est retenu par la plateforme, pas par la bonne volonté de qui la pilote. L'ensemble est vérifié par un test de bout en bout à deux associations : identité, cloisonnement, quotas, propriété du numéro, révocation immédiate.

La limite, côté serveur

Mécanique. Rien ici ne dépend de ce qu'on écrit au modèle.

  • identité par jeton : l'appel porte l'association, pas le modèle
  • cloisonnement : aucune donnée d'une autre association n'est atteignable
  • quotas et débit, par heure et par jour
  • consentement et liste de suppression, vérifiés à chaque envoi
  • propriété du numéro WhatsApp, et cadence anti-blocage
  • coupe-circuit et révocation, immédiats

La consigne, côté modèle

Indicative. Elle ne protège rien : elle évite de buter sur des portes déjà fermées.

Tu agis pour Toul'Barz, association de street workout de Toulouse. Tu envoies au nom de l'asso, jamais en ton nom propre.

DESTINATAIRES PERMIS : membres et adhérents de l'asso, personnes qui ont écrit d'elles-mêmes, référents et partenaires d'événements. RIEN d'autre.

INTERDITS, sans exception : démarchage à froid ; envoi de masse non sollicité ; contourner un désabonnement en changeant de canal. Le serveur refusera de toute façon.

AVANT D'ENVOYER : fais relire tout message à un humain de l'asso. En cas de refus du serveur, lis le code renvoyé et l'outil limits ; ne boucle jamais sur un refus.
À gauche, ce que le serveur applique quoi qu'il arrive. À droite, l'extrait du bloc d'instructions du tenant (docs/specs/bloc-instructions-mcp-toulbarz.md), accents rétablis : il fait gagner du temps à qui pilote, il ne tient pas la barrière.

Ce qui tourne tout seul

La plateforme n'attend pas qu'on pense à elle. Un planificateur dans l'API se réveille chaque minute, en heure de Paris, et déclenche les automatismes à heure fixe. Chaque envoi automatique a un interrupteur, éteint tant que le bureau ne l'allume pas.

chaque minute, en heure de Paris 04:10chaque nuit, nettoyage des journaux techniquesen service 07:30chaque matin, rappels au référenten service 08:00le lundi, programme de la semaine sur WhatsAppnuméro à lier 08:05le 1er du mois, débrief de l'activitéen service 08:15chaque matin, relances de renouvellementinterrupteur éteint 15 mintoute la journée, veille et mail d'incidenten service
Les horaires sont ceux déclarés par les modules (events, members, alerts, journal). Un job raté pendant un redémarrage n'est pas rattrapé ; les relances quotidiennes se rattrapent d'elles-mêmes le lendemain (ADR 0021).

Un nouvel adhérent arrive

Quelqu'un paie son adhésion sur HelloAsso. Personne n'a rien à saisir : la fiche du membre existe dans la minute, il rejoint seul la liste de diffusion des adhérents, et le message de bienvenue part si le bureau l'a armé.

DÉCLENCHEUR Adhésion payée sur HelloAsso, webhook signé AUSSITÔT Fiche du membre créée adhésion valable un an 7 fiches créées seules du 6 au 12 août 2026 PUIS Rejoint la liste Adhérents entretenue toute seule ENFIN Message de bienvenue une seule fois interrupteur éteint jamais deux fois, même si HelloAsso notifie deux fois
Le webhook HelloAsso est en prod depuis le 13 juillet 2026. Sept adhérents se sont créés seuls entre le 6 et le 12 août ; le message de bienvenue, lui, est resté éteint : ces sept personnes n'ont rien reçu. Décision à prendre par le bureau : armer, et rattraper ou non les sept.

Le message part à la première adhésion, jamais aux renouvellements. Comme tous les e-mails de la plateforme, il passe par la passerelle d'envoi avec un identifiant déterministe : deux notifications HelloAsso pour la même adhésion ne font qu'un seul envoi.

Les e-mails sont le seul endroit clair du produit : une feuille blanche sur fond gris, sans couleur, sans image, sans coin arrondi, parce qu'Outlook ne sait pas faire autrement.

Toul'Barz

Objet : Bienvenue chez Toul'Barz

Bienvenue dans l'asso

Bonjour Camille,

Ton adhésion à Toul'Barz est bien enregistrée. Bienvenue dans l'asso.

Les entraînements, les événements et les infos pratiques arrivent dans les groupes WhatsApp : si tu n'y es pas encore, réponds à ce message.

L'équipe Toul'Barz

Toul'Barz, message automatique du tableau de bord.

L'e-mail de bienvenue, texte repris du code (members/services/emails.ts). Camille est le prénom d'exemple du livret de processus de l'asso.

L'adhésion arrive à échéance

Chaque matin à 08h15, la plateforme regarde qui arrive au bout de son année et prépare la relance juste. Une personne ne reçoit jamais deux relances pour la même échéance : seule la plus urgente qui s'applique part.

une seule relance par échéance : la plus urgente qui s'applique J-30 J-7 ÉCHÉANCE SOIXANTE JOURS APRÈS un mois avant,une alerte douce une semaine avant,dernière ligne droite le jour même,adhésion expirée silence,plus aucune relance la vérification tourne chaque matin l'envoi attend le feu vert du bureau
Trois objets d'e-mail existent dans le code : ton adhésion expire dans un mois, dans une semaine, a expiré. La relance est mémorisée par personne et par échéance ; au-delà de soixante jours, plus rien.

Un paiement est refusé

La banque refuse un paiement d'adhésion. Plutôt que d'écrire dans le dos du bureau, la plateforme prépare le dossier et laisse décider qui relancer. Ce mode « sur validation » est celui en service ; le mode automatique existe, avec au plus une relance par jour et par personne.

DÉCLENCHEUR Paiement refusé signalé par HelloAsso AUSSITÔT Le cas entre dans la file montant, lien de régularisation VOUS Vous cochez qui relancer mode en service : sur validation RÉSULTAT Le message part le cas passe en relancé au plus une relance par jour et par personne le seul message signé par des personnes : « À vite aux barres, L'équipe Toul'Barz »
HelloAsso renotifie parfois le même refus : le cas reste marqué relancé au lieu de repartir. Un souci d'argent mérite un ton de personne, pas de machine : c'est le seul e-mail qui ne se termine pas par la mention automatique.

Le référent est rappelé, seul

Chaque événement a un référent. La plateforme suit le calendrier à sa place et le relance aux quatre moments qui comptent, chaque matin à 07h30. Le rappel s'arrête dès que c'est fait ; un jalon relancé n'est jamais rejoué.

le référent relancé à 07:30 J-15 J-7 JOUR J J+5 J+10 le templateà remplir l'équipeà confirmer l'événementa lieu le compte-rendupas commencé le compte-renduen retard le rappel s'arrête dès que c'est fait ; un jalon relancé n'est jamais rejoué envoi impossible : inscrit sur la fiche, à faire à la main
Les jalons sont calculés depuis la fiche, jamais stockés (events/services/milestones.ts). Les événements importés de l'historique n'en ont aucun : on ne relance personne pour un événement de 2024.

L'événement se range seul

Créer un événement dans le tableau de bord suffit. Dès qu'il passe en préparation ou en prêt, la plateforme le publie dans le bon agenda, lui ouvre un dossier et réserve le matériel.

DÉCLENCHEUR L'événement passe en préparation ou en prêt annulé : retiré, matériel libéré visibilité changée : autre agenda terminé : reste dans l'agenda TROIS EFFETS, EN CHAÎNE Agenda public ou adhérents, selon la visibilité Dossier Drive au nom de l'événement, créé une fois Matériel chaque matériel réservé sur son agenda
Un événement créé une fois se retrouve dans le bon agenda, avec son dossier et son matériel réservé. Rien à recopier ailleurs, rien à tenir à jour à la main.

WhatsApp, sans y penser

Deux automatismes : le programme de la semaine part tout seul le lundi matin dans les groupes abonnés, et n'importe quel événement s'annonce en un clic depuis sa fiche, vers le canal choisi. Les deux passent par la passerelle d'envoi, jamais par un client WhatsApp en direct : le numéro de l'asso est protégé par les mêmes quotas et le même anti-ban que tout le reste.

TOUS LES LUNDIS À 08H00 08:00, le lundi le planificateur se réveille Programme composé les événements de la semaine UNE ANNONCE, EN UN CLIC La fiche de l'événement un bouton, un clic Canal choisi Annonces, Séances d'essai, Adhérents UNE SEULE PASSERELLE Passerelle envoi quotas, cadence, consentement, journal TROIS SORTIES WhatsApp les groupes abonnés E-mail la liste concernée Notification push sur le téléphone · à venir semaine sans événement : rien ne part chaque tentative inscrite au journal, avec sa raison
Le routage par la passerelle est acté (ADR 0026, 19 août 2026) : une session WhatsApp propre à l'asso, son numéro et lui seul. Les deux chaînes empruntent la même porte de sortie, donc les mêmes quotas, la même cadence et le même journal.

Le texte du lundi est composé depuis les événements de la semaine : le jour, l'heure, le lieu, et la mention « adhérents » quand l'événement leur est réservé. Une semaine vide n'envoie rien : la plateforme se tait plutôt que de poster un message creux dans les groupes.

Le même moteur donne, sur chaque fiche, un texte prêt à coller pour Instagram, derrière un bouton Copier. L'étape d'après est écrite : que la story parte toute seule, par la même passerelle, avec les mêmes garde-fous.

Programme de la semaine (du 20/07/2026 au 26/07/2026)

- mercredi 22/07/2026, 18h30 : Entrainement barres - Parc Compans (adherents)
- samedi 25/07/2026, 14h30 : Show Capitole - Place du Capitole
Le programme tel que le compose events/services/texts.ts, sans accents pour WhatsApp. Les deux événements sont les exemples du livret de processus de l'asso.

Ouvrir un accès à quelqu'un

Personne ne crée de compte tout seul, et personne ne choisit un mot de passe à la place d'un autre. Le bureau invite ; la personne choisit son mot de passe elle-même, et voit ce que son rôle lui permet de voir.

VOUS Vous créez le compte adresse, nom, rôle AUSSITÔT Un lien à usage unique valable une heure LA PERSONNE Elle choisit son mot de passe RÉSULTAT Elle voit ce que son rôle permet Retrait d'un accès déconnectée dans la seconde, sur tous ses appareils ; réversible Trois garde-fous ni se retirer admin, ni se désactiver, ni retirer le dernier admin
Accès et comptes livrés le 3 août 2026 en production (ADR 0024) : invitation, mot de passe oublié, changement, désactivation réversible, écran de gestion des comptes, page Mon compte. La connexion Google est prête en seconde porte, masquée tant que ses identifiants manquent.

Le seuil, et la matière

Avant d'écrire une ligne, j'ai passé du temps dans leur univers : leurs photos, leurs vidéos, ce qu'ils publient, ce qu'ils ne publient pas. Le street workout, vu de près, c'est de la performance et du show, mais c'est surtout une sensation, celle d'être suspendu, une seconde, en défiant la gravité. C'est ça que je voulais qu'on ressente en arrivant.

D'où une page d'accueil qui ne vend rien et n'explique rien : un athlète en drapeau sous l'oculus d'une coupole, un monogramme, un mot. Pas de menu, pas d'argumentaire. On clique n'importe où et on entre. Le noir et blanc n'est pas une coquetterie : c'est leur regard, quelque chose de classe qui n'a rien à prouver. Toute couleur ajoutée depuis demande une décision écrite, pour que personne ne l'abîme par accident.

La vitrine de la plateforme : un athlète en drapeau sur une barre, sous l'oculus lumineux d'une coupole, en noir et blanc ; en bas à gauche, le monogramme, le mot Entrer et Mentions légales.
La vitrine, servie en local depuis son dossier le 29 août 2026 : une seule police, aucun appel réseau, un seul angle occupé.
La même vitrine sur un téléphone : la scène recadrée sur l'athlète et l'oculus, la pile monogramme, Entrer, Mentions légales en bas à gauche.
Sur téléphone, la scène se recadre ; la pile reste au même endroit.
Le seuil ouvert : la scène s'est assombrie et rapprochée, et un formulaire de connexion naît dans la lumière de l'oculus, avec le monogramme, les champs E-mail et Mot de passe, le bouton Se connecter et un lien Retour.
Le seuil. Une connexion réussie fait plonger la scène à travers l'oculus (échelle 8 en 1,75 s), et le tableau de bord se condense depuis la matière argentée qu'il y a derrière, avec trois portes.

Fraunces pour les titres, Archivo pour l'interface, JetBrains Mono pour ce qui se copie ; toutes trois auto-hébergées. Aucun radius sur les primitives, aucune ombre : la profondeur vient d'aplats superposés, de halos, et d'un grain argentique qui est le seul bruit autorisé. Le seuil de choix est le seul endroit clair du parcours : l'argent sur lequel on entre, et l'encre posée dessus.

Le tableau de bord lui-même est privé et demande une connexion : il n'est pas capturé ici. Le spécimen du haut de page en est la reprise fidèle, depuis son code.

Le monogramme Toul'Barz
  • VisiteurLe visage public de l'asso.
  • MembreL'espace des adhérents.
  • AdminLe poste de pilotage.
Le seuil de choix après la traversée, repris de ChooserView.vue : la matière argentée, l'encre, et les trois portes avec leurs sous-titres réels.

Ce que la plateforme fait, par usage

Quatre familles, dans l'ordre où le bureau les rencontre.

Les adhésions
  • Création des membres à l'arrivée du paiement HelloAsso, sans saisie
  • Liste Adhérents entretenue toute seule
  • Message de bienvenue, une seule fois, jamais aux renouvellements
  • Relances de renouvellement à J-30, J-7 et le jour même
  • Paiements refusés : le dossier est préparé, le bureau choisit qui relancer
Les événements
  • Cinq états, du brouillon au terminé, sur un même fil
  • Rappels au référent, quatre jalons autour du jour J
  • Agenda et dossier ouverts tout seuls quand l'événement passe en préparation
  • Réservation du matériel sur son propre agenda
La communication
  • Programme de la semaine le lundi à 08h00, composé depuis les événements
  • Annonce en un clic depuis la fiche, vers le canal choisi
  • Campagnes e-mail, dix gabarits, compte d'envoi dédié
  • Texte Instagram prêt à coller, story automatique à venir
  • Notification push sur le téléphone, à venir
Le pilotage
  • MCP : tout ce qui précède se demande depuis les LLM que le bureau utilise déjà
  • Accès et rôles : invitation, mot de passe choisi par la personne, désactivation réversible
  • Veille toutes les quinze minutes, mail d'incident, débrief le premier du mois
  • Journal : chaque envoi, réussi ou refusé, avec sa raison

Rien ne part par surprise : chaque envoi automatique a son interrupteur, et il reste éteint tant que le bureau ne l'allume pas. Un échec silencieux est un bug (ADR 0022) : tout ce qui ne part pas le dit, avec la raison, et se rejoue.

Et la plateforme se surveille elle-même : toutes les quinze minutes elle vérifie qu'elle va bien et écrit un mail en cas d'incident ; le premier du mois elle envoie un résumé de son activité ; chaque nuit elle nettoie ses journaux techniques, sans toucher à l'historique de l'asso (ADR 0025).

Le résultat

« Tu penses que ça peut nous aider ? » est devenu : un socle en production le 3 juin 2026, des modules en service le 13 juillet ; le 20 juillet, 216 membres et 76 événements sortis des tableurs ; en août, sept adhésions traitées sans que personne n'y touche ; et depuis le 20 août, une passerelle qui reconnaît l'asso quand son LLM frappe à la porte.