1. Ce qu’on a fait aujourd’hui
Aujourd’hui j’ai repris le projet à la racine.
J’ai passé mon week-end à tester Letta dans tous les sens et j’ai enfin validé un truc qui me tenait à cœur : tout peut tourner en local.
Un détail pour certains, mais pour moi c’est une vraie respiration. Ça veut dire qu’on garde de l’autonomie, et qu’un jour, si on pousse assez loin, on pourra même imaginer une version full open source.
Avec Luis, on est revenus sur les problèmes de données, encore et encore.
On a réalisé à quel point les données du Carif-Oref (nos sources pour le POC) et celles de Réfugiés.info ne vivent pas du tout dans le même monde.
Structure différente, métadonnées qui ne se parlent pas… rien n’est aligné.
Alors on s’est demandé :
- comment construire une base assez solide pour aujourd’hui,
- mais assez souple pour demain,
- sans casser tout ce que Réfugiés.info utilise déjà.
J’ai aussi remis les mains dans notre Speckit : préciser, simplifier, durcir la phase d’ingestion, penser aux traductions, aux révisions… bref, consolider la colonne vertébrale.
Nour est revenu de son break, frais comme un gardon. À peine je lui parle de Letta qu’il rebondit direct sur un point crucial : la frugalité.
Et oui, Letta garde son historique en mémoire, trie ce qui est pertinent, n’envoie au LLM que ce qui compte.
Pour faire simple :
- Un agent Stateless (sans état) est comme un poisson rouge : il oublie tout dès qu'il a répondu.
- Un agent Stateful (avec état) est comme un éléphant : il se souvient de vous, de vos préférences et du contexte des échanges précédents.
Résultat : moins de tokens, meilleure qualité, moins de carbone.
Un agent stateful, ça change tout.
Et ça évite de cramer une forêt à chaque conversation.
On a fini sur la phase de publication, encore un peu floue dans nos têtes.
Jamais grave : on code, on teste, on casse, on recommence.
Mode bac à sable activé.
2. Les défis ou surprises
Le vrai défi du jour : penser la base de données non pas comme un entrepôt, mais comme un carrefour.
Pas juste importer.
Pas juste enrichir.
Mais ingérer, transformer, faire dialoguer des univers qui ne parlent pas la même langue.
C’est le genre de problème technique que j’adore et qui te grille le cerveau en même temps.
Voici à quoi ressemble le flux qu'on a imaginé pour remettre de l'ordre :
graph TD
A[Source : Carif-Oref] -->|Ingestion| B(Supabase : Raw Data)
B --> C{Agent Quality Check}
C -->|Non-Quali + Raison| D[Logs / Rejet]
C -->|Quali| E[Agent Aide à la Rédaction]
E --> F[Mapping Metadata]
F --> G[Enregistrement Version]
G --> H[Publication Réfugiés.info]
On part de la donnée brute, on la fait passer par un premier filtre "Qualité" (l'agent dit oui/non et explique pourquoi), puis un second agent aide à la rédaction et au mapping. Une fois validé, c'est publié.
3. Le point technique
On continue de poser les fondations calmement, proprement :
- Letta pour l’agent IA stateful, avec mémoire interne et frugalité intégrée.
- Supabase pour la base de données.
- BlockNote pour l’édition.
- Speckit pour générer les specs qui guideront la pré-rédaction IA.
On a aussi revu les étapes du pipeline :
avant on disait “import”, mais ça n’avait plus de sens.
Maintenant on dit “ingestion”.
Et ça reflète beaucoup mieux la complexité du truc.
On a ajouté une étape dédiée aux métadonnées : elles ne sont plus un bonus, elles deviennent un citoyen à part entière du processus.
4. Le moment humain
On sent qu’on est en train de fabriquer un petit bébé tous ensemble.
Un truc encore flou, encore fragile, mais déjà vivant.
On se retrouve début décembre pour deux jours de hackathon. Luis et moi allons montrer les premiers pas de l’outil à l’équipe.
J’ai tellement hâte d’entrer dans le dur, de voir les premiers retours, de boucler nos manches.
Tout le monde est aligné, motivé, impatient.
Et ça, ça vaut de l’or.
Le petit bonus
Spoiler : il démonte les MCP (Modular Control Protocols) d’Anthropic avec une mauvaise foi tellement précise que ça en devient une œuvre d’art.
Et franchement… il n’a pas complètement tort. Pour notre projet, ça confirme notre choix de ne pas sur-ingénierer avec des protocoles complexes trop tôt, et de rester sur des agents autonomes simples.
À demain.