La partie ennuyeuse, expliquée.

Trois containers. Un Postgres. Un Qdrant. Intent router LLM + auto-traduction par destinataire. Le reste, c'est juste router ton message — dans la langue que tu veux — vers le bon builder en moins d'une minute, et s'assurer qu'il puisse te retrouver après.

Quatre étapes, du début à la fin

De l'activation à la poignée de main IRL.

Tout ce que le bot fait tient dans une boucle : t'activer en 60 secondes, lire ce dont tu as besoin, surfacer qui matche, logger la rencontre quand elle a lieu.

Étape 1

Tu postes avant la fin de l'onboarding

Le premier contact, c'est un rituel en 3 temps, pas un formulaire : le bot t'ouvre avec un vrai post récent du space, puis te demande d'écrire le tien. Ton intro auto-broadcast à ~15 builders avant la fin de l'onboarding.

Étape 2

Le bot lit ton DM

Chaque message passe par un intent router Qwen 2.5-7B sur le réseau 0G. Il classifie en match, broadcast, question ou problème — pas de boutons, pas de menus, pas de formulaires. Ta langue stockée part avec la requête, donc l'agent te répond dans la tienne.

Étape 3

Qdrant trouve le match — dans n'importe quelle langue

Ta requête est embedded et filtrée sur ton space actif. Les 5 à 10 builders dont le profil recoupe sémantiquement ta demande sont remontés ici, classés par sémantique + BM25. Les broadcasts sont auto-traduits par destinataire (un appel LLM caché par langue) avec un bouton 🔤 voir l'original en un tap.

Étape 4

Check-in IRL = réputation

Les sessions confirmées affichent un bouton Check-in. Un tap vérifie un code HMAC de la même façon que les scanners QR de la venue. +5 rep, réinjecté dans le trust graph (PageRank sur les sessions notées) qui re-classe les futurs matchs.

Chaque primitive,
à nu.

Pas de boîtes noires. Voici ce qui tourne quand tu tapes — et pourquoi rien ne tombe quand un maillon de la stack lâche.

LangGraph Agent Protocol

Un graphe multi-agent persistant gère l'intake de profil et la coordination de meetup sur le même checkpointer PostgreSQL. L'état du thread survit aux redémarrages, donc une conversation commencée lundi se souvient encore de ton contexte mercredi.

Mémoire multi-turn Checkpointer Postgres Streaming SSE

Compute décentralisé, nativement

Qwen 2.5-7B tourne sur 0G Compute via un proxy compatible OpenAI. Quand c'est up, tu ne paies rien. Quand c'est down, on retombe sur le free tier OpenRouter puis sur OpenAI — le bot ne reste jamais silencieux.

Fan-out intelligent, multilingue

/post trouve les bonnes 10 — dans leur langue

Compose en texte brut. Le bot formate en carte de recrutement, classe via Qdrant + BM25, fan-out vers jusqu'à 10 builders auto-traduits par destinataire (cache : un appel LLM par langue cible). Chaque DM part avec Intéressé / Passer et un toggle 🔤 voir l'original. +1h plus tard, tu reçois le digest de qui a dit oui.

Un bot, chaque salle

Les Spaces cadrent chaque requête — et chaque voix

Parcours et rejoins les spaces discoverables en un tap depuis la Mini App. Chaque space a ses propres membres actifs, leaderboard, broadcasts — et une voix de bot ajustable (tone, sign-off, greeting custom) que les organisateurs éditent via /organizer. Postgres multi-tenant, isolé par slug.

Mutuel uniquement

Builder Match : swipe pour rencontrer

Swipe deck façon Tinder, builders du space qui ont opt-in. Right-swipe mutuel crée un meetup proposal via le même pipeline que /post — les deux côtés reçoivent le DM accept/decline standard. Les swipes one-way sont silencieux (pas de thirst metrics, pas de "X personnes t'ont liké"). Cap de 10 cartes/jour.

Sérendipité du dimanche

Weekly Roulette

Dimanche 18 h UTC, le poller pair chaque user actif de chaque space avec un peer random qu'il n'a pas encore rencontré. Les deux côtés reçoivent un deep-link [👋 dire bonjour] vers le Telegram de l'autre, et un bouton [passer cette semaine]. Dedup pair sur 90 jours, dedup user-semaine ISO, désactivable.