Un fonds LBO qui publie du code. Sérieusement.

Quand on rachète des PME SaaS pour les transformer par l’IA, on ne s’attend pas à voir le mot “open source” dans le communiqué. Et pourtant.

Aujourd’hui, BSG Holding publie edomata — une librairie Scala de 14 modules pour construire des systèmes event-driven en production. Licence Apache 2.0. Zéro restriction. Le même code qui tourne chez nos participations depuis des mois.

Pourquoi ? Parce que BSG Holding ne rachète pas des boîtes pour les optimiser. On les transforme en AIDC — AI Driven Companies. Des entreprises où l’IA n’est pas un outil périphérique, mais le système d’exploitation. Et ça commence par montrer le code qui fait tourner cette transformation.

Le problème : l’event sourcing en Scala, c’était le Far West

Pendant que l’écosystème Java/Kotlin avait Axon Framework et les développeurs TypeScript avaient EventStoreDB, la communauté Scala Typelevel n’avait pas de solution production-ready pour l’event sourcing et le CQRS.

On avait besoin d’un outil qui :

  • Gère les automates à états finis avec des garanties typées
  • Supporte PostgreSQL nativement (pas Kafka, pas EventStore — du Postgres, celui que nos PME connaissent déjà)
  • Tourne sur JVM, Scala.js et Scala Native — parce que nos cas d’usage vont du backend lourd au edge computing
  • Permette le multi-tenant SaaS — parce que c’est le modèle de nos participations

Hicham Naderi avait posé les fondations avec hnaderi/edomata. On a forké, durci, étendu, et mis en production.

14 modules. 2 sociétés en production. 0 compromis.

edomata n’est pas un prototype. C’est le socle technique de deux sociétés du groupe BSG :

Eveince Capital — chaque décision de trading tracée

Eveince Capital gère un OMS (Order Management System) où chaque décision doit être auditée. Pas “devrait” — doit, réglementairement. edomata leur donne un audit trail complet : chaque commande, chaque événement, chaque état reconstruit depuis l’historique.

Résultat : 100% de traçabilité sur les opérations de trading. Zéro perte d’événement en 6 mois de production.

expert-flow.ai — 70% de temps gagné par dossier

expert-flow.ai, startup du studio BSG, automatise l’expertise judiciaire. Un dossier d’expertise passe par 8 étapes — réception, analyse, calculs, rapport, envoi, relance, facturation, archivage. Chaque étape est un état dans un automate edomata.

Avant : un expert passait 8 heures par dossier. Avec expert-flow.ai + edomata : 2h30. Ça fait 70% de gain et un ROI de 3000% pour l’abonné.

Comment ça marche : 3 abstractions, pas plus

edomata repose sur trois types fondamentaux. Pas dix. Pas un framework avec 200 classes. Trois.

Decision — Encapsule une logique métier qui produit des événements ou des rejets. Déterministe, testable, rejouable.

Edomaton — Un automate à états finis. Il consomme des commandes, reconstruit son état depuis les événements, et produit de nouvelles décisions.

Stomaton — Ajoute les side-effects (appels API, envoi d’emails) au-dessus de l’Edomaton, sans sacrifier les garanties event-driven.

import edomata.core.*

// Un automate de commande en 10 lignes
enum OrderEvent:
  case Created(item: String, qty: Int)
  case Confirmed
  case Shipped

enum OrderRejection:
  case OutOfStock
  case AlreadyShipped

val createOrder = Decision
  .validate(OrderRejection.OutOfStock)(stock > 0)
  .publish(OrderEvent.Created(item, qty))

L’architecture : modulaire par design

ModuleCe qu’il fait
edomata-coreDecision, Edomaton, Stomaton
edomata-skunkBackend PostgreSQL via Skunk (JVM, JS, Native)
edomata-doobieBackend PostgreSQL via Doobie (JVM)
edomata-saasAbstractions multi-tenant
edomata-munitFramework de test
edomata-circe / upickle / jsoniterCodecs JSON (au choix)

14 modules au total. Vous prenez ce dont vous avez besoin, pas le reste. Le backend recommandé est Skunk — il tourne sur les 3 plateformes (JVM, Scala.js, Scala Native).

Pourquoi open source ? Parce que c’est cohérent.

Notre conviction : les équipes qui ont construit l’entreprise sont les mieux placées pour la faire grandir. Ça vaut pour nos participations. Ça vaut aussi pour le code.

edomata a été construit par la communauté Typelevel. Le durcir en interne et le garder fermé serait incohérent avec ce qu’on défend.

Trois raisons concrètes :

  1. Transparence — Quand on dit “transformation par l’IA et la technologie”, autant montrer le code. Pas un slide deck. Le code.
  2. Recrutement — Les meilleurs développeurs Scala ne postulent pas sur LinkedIn. Ils regardent les repos GitHub.
  3. Écosystème — Typelevel nous a donné Cats, fs2, http4s. On rend à la communauté.

Démarrer en 2 minutes

Ajoutez à votre build.sbt :

libraryDependencies += "dev.bsg" %% "edomata-skunk" % "0.12.5"

Issues, pull requests, discussions — tout est ouvert. Le projet suit les conventions Typelevel.

Et après ?

edomata est le premier. Pas le dernier.

Pendant que certains fonds gardent leur stack propriétaire et leurs méthodes opaques, nous ouvrons le code qui transforme nos participations en AIDC. Parce que la confiance se construit avec de la transparence, pas des slides.

Prochaines étapes pour BSG Holding en open source : restez connectés sur le blog et sur GitHub.