Le parcours complet

La version longue.

La page d’accueil est la version courte. Voici le reste : les rôles, les systèmes, les chiffres derrière, et comment je construis l’IA quand elle touche l’argent. Si vous vous demandez si vous pouvez me confier quelque chose de coûteux, lisez d’abord cette page.

Casablanca, Maroc · français, anglais, arabe si besoin · un build à la fois, prochain démarrage en janvier

Carrière

Quatre rôles, un fil conducteur

Chaque poste tournait sur l’argent des autres : comptes fournisseurs sur des centaines d’entités, paie pour des groupes hospitaliers, mes produits avec des commandes réelles.

OysterHR

Ingénieur produit · comptes fournisseurs & IA appliquée

Depuis 2026 · à distance

Ruby on RailsGraphQLReactTypeScriptPostgreSQLSidekiqClaudeDatadog

Plateforme d’emploi mondiale, un des leaders de l’EOR : ses clients recrutent dans plus de 180 pays, sur des centaines d’entités juridiques et plusieurs devises. Je tiens l’automatisation des comptes fournisseurs : le pipeline qui lit les factures, le produit où les comptables les vérifient, et le chemin de l’argent derrière.

L’IA dans le chemin de l’argent

  • Sur les factures traitées, la mesure donne environ 300 000 $ d’économie par an, à quelques milliers de factures par mois. Avant, deux personnes lisaient des PDF.
  • Les prompts par fournisseur vivent en base comme des données. Intégrer un fournisseur, c’est une ligne ; la version du prompt voyage avec chaque appel, pour qu’une revue reconstruise l’appel.
  • Sorties JSON Schema, puis validation dans le code. Une extraction malformée s’arrête à la frontière ; la compta ne la voit jamais.
  • Une personne approuve avant que l’argent bouge. Chaque appel qui peut toucher un paiement laisse une trace : modèle, version du prompt, tokens, latence, hash du document.
  • Routing, cache de prompts et budgets de contexte gardent la facture sous le coût du processus remplacé.

Le chemin de l’argent

  • Matching de factures, mappings comptables et écritures ERP : du code déterministe. Le modèle n’a pas voix au chapitre.
  • Payouts, vérification bénéficiaires et comptes bancaires, webhooks des prestataires, réconciliation entre banques partenaires. Clés d’idempotence par payout et diff chaque nuit : webhooks dupliqués et bénéficiaires substitués couverts.
  • Deux changements d’état liés s’écrivent dans une transaction. Une écriture rejouée se réconcilie avec le même enregistrement au lieu de payer deux fois.

Comment l’équipe livre

  • Automatisation de la spec à la pull request relue, sur agents, avec skills maison et intégrations MCP. La file de relecture a raccourci, pas rallongé : le seul résultat qui m’importait.
  • Tri du support et réparation des tests flaky tournent sur agents, au même budget.

Quand ça casse

  • Incidents de production remontés dans les délais SLA. Causes racines suivies via Datadog, Sentry et les données, closes par correctifs permanents et entrées runbook.

Mibtech

Ingénieur · RH, gestion du temps, opérations hospitalières

De 2023 à 2026 · Casablanca

Ruby on RailsHotwirePythonPostgreSQLRedisClickHousedbtAirbyteLangChainDocker

Mibtech vend des logiciels RH et hospitaliers à des groupes privés au Maroc. Je tenais le produit de gestion du temps de son SaaS RH multi-tenant : les terminaux de badgeage à l’entrée, les éléments de paie à l’autre bout. Des groupes hospitaliers privés tournaient dessus : plus de 20 bases, 80 000+ pointages par jour. Ce compte a un an.

Le déploiement Akdital

  • Akdital est le plus grand groupe hospitalier privé du Maroc, en expansion en Arabie saoudite, aux Émirats et en Afrique. J’ai construit et testé en charge son déploiement du pointage avant que quiconque signe. Il n’a pas donné suite : le projet s’est arrêté dans les achats, pas dans le code.
  • Le test est la partie que n’importe qui peut vérifier. 200 000 pointages au même instant sur un petit serveur : charge gérée par tenant, clés de sharding qui gardent le trafic d’un hôpital groupé, payloads bruts dans MongoDB, timing assez précis pour qu’une majoration de nuit ne bouge pas. Rien de perdu.

Gestion du temps

  • Badgeages rapprochés des plannings, majorations de nuit, pauses et heures supplémentaires, jusqu’aux éléments de paie, justes tenant par tenant.
  • Le pic du changement d’équipe est le moment qui décide si la paie boucle vendredi. Le produit l’a tenu.
  • Feuilles de temps, congés, notifications temps réel, dashboards. Du schéma à l’interface, par tenant.

IA en production

  • Un agent de support LLM face à de vrais employés. Recherche bornée par employé, appels d’outils verrouillés côté serveur, réponses tirées de documents que l’utilisateur pouvait déjà ouvrir.
  • Mauvaise réponse = problème de conformité, donc chaque réponse cite sa source.

Données

  • Plus de 20 bases hospitalières cloisonnées fusionnées dans un entrepôt ClickHouse, ELT dbt, alimenté par Airbyte.
  • Ingestion 3× plus rapide une fois les goulots PostgreSQL et du pool de connexions corrigés à la source plutôt que contournés.

Performance

  • Une surface s’était dégradée jusqu’à ce que les tickets remplacent les démos. Correctif : chargements 70 % plus rapides, endpoints critiques à 50 ms, via cache Redis, déport de jobs, requêtes revues.
  • L’isolation des tenants n’a pas bougé. Cette contrainte était la partie intéressante.

Matériel

  • 50+ terminaux d’accès devenus un système temps réel : passerelle IoT et app desktop de lecture de badges.
  • En production sous Prometheus, Grafana et Sentry. Les alertes arrivaient chez moi, donc les correctifs aussi.

WebCK / Topela

Ingénieur logiciel, temps partiel · remote

De 2022 à 2023

React NativePythonFlask

Avant tout ça. Des tranches de fonctionnalités de bout en bout sur une app React Native cross-platform et son API Flask, en équipe distribuée.

Indépendant

Fondateur-ingénieur · mes propres produits

Depuis 2022

RustNext.jsReactPythonPostgreSQLClickHouse

La majeure partie de quatre ans est sous NDA. Voici les quatre que je peux montrer. Construire et exploiter mes produits garde mes réflexes de production honnêtes.

Citadel

  • Plateforme d’opérations pour agents en Rust (axum, sqlx) : orchestration multi-agents, couche d’outils MCP, scheduler, mémoire et interface React.
  • Je fais tourner mon activité dessus chaque jour. C’est pourquoi une personne seule livre au rythme d’une équipe.

Pochetta

  • Boutique marocaine et gestion des commandes, en ligne et prenant des commandes.
  • Catalogue, checkout à la livraison, états de commande, admin.

Li7abiti

  • Plateforme en paiement à la livraison : Next.js 16, schéma PostgreSQL de 146 tables, authentification OTP, RTL arabe d’abord.

Semsar

  • Pipeline de veille marché : collecte planifiée, prix normalisés entre sources, reporting dont une personne peut faire quelque chose.

Sous le capot

Quatre systèmes, et ce qui casse

L’échelle se prétend facilement et se vérifie difficilement. Chaque chiffre ici tient à un appel de référence : ce que chaque système porte, et ce qu’il fait un mauvais jour.

Extraction de factures · OysterHR

Ce qu’il porte

Des milliers de documents par mois sur des centaines d’entités. Un jeu d’éval par fournisseur tourne avant qu’un prompt soit livré ; chaque batch a un budget de latence.

Quand il casse

Une mauvaise extraction atterrit dans la file de relecture. Dead letters, retries et un diff de réconciliation rattrapent le reste.

Gestion du temps · Mibtech

Ce qu’il porte

80 000+ événements par jour, 50+ terminaux, 20+ bases, règles de shifts et d’heures sup par tenant.

Quand il casse

Si la passerelle tombe, les terminaux mettent en tampon et rejouent. Les ids d’événements dupliqués sont jetés avant la paie.

Entrepôt hospitalier · Mibtech

Ce qu’il porte

Plus de 20 bases sources vers un entrepôt ClickHouse, ELT dbt, chargé chaque nuit.

Quand il casse

Un run de modèle raté déclenche le contrôle de fraîcheur, arrête le rapport. Aucune paie ne s’alimente en douce.

Plateforme d’agents · Citadel

Ce qu’il porte

Rust (axum, sqlx), couche MCP, scheduler, journal d’exécution et mémoire. En usage quotidien.

Quand il casse

Un appel d’outil pendu heurte un budget retry puis une dead letter. Les étapes rejouent idempotentes au journal.

Méthode

Comment je pense l’IA en production

Ces règles viennent de la production. Chacune vient d’une fonctionnalité IA morte sous mes yeux, et quelques-unes étaient les miennes.

01

Le modèle lit ; le code décide.

Tout ce qui engage de l’argent ou un état est du code déterministe avec une piste d’audit. Le modèle propose. Une personne signe. Le système consigne ce qui s’est passé, parce que dans six mois quelqu’un posera la question.

02

L’ennuyeux bat le malin.

Sorties structurées, validation par schéma, retries, idempotence, dead letters. Ça a sauvé plus de projets qu’un meilleur prompt ne le fera jamais. Les parties ennuyeuses sont le produit.

03

Le coût est une fonctionnalité.

Routing, cache, budgets de contexte, batch là où ça convient. Si l’inférence coûte plus cher que le processus remplacé, vous avez une démo avec une ligne budgétaire.

04

Évaluez avant de promettre.

Un jeu fixe de documents réels avec des réponses connues, exécuté à chaque changement de prompt. Sans cette suite, chaque amélioration est un pari et chaque régression une surprise qu’un client vous annonce.

05

Concevez la panne.

Que voit l’utilisateur quand le modèle a tort, est lent ou est en rade ? Si la réponse honnête est « une stack trace », personne n’a encore conçu la panne.

06

Gardez l’intégration fine.

Les modèles changent tous les quelques mois. L’intégration doit survivre sans réécriture : une interface, des prompts versionnés, des évals qui voyagent avec la fonctionnalité.

Registre des agents : modèle, exécution, permissions et délégués, par projet.
Le cockpit que j’ouvre chaque matin : projets, travail en cours, santé des serveurs, ce qui m’attend.
Un workflow : déclencheur, étapes, conditions, chaque exécution journalisée. Un processus qu’on peut montrer du doigt.

Outils

Ce que le travail a demandé

Les systèmes sont l’argument. Les outils étaient ce qu’il fallait au système cette année-là.

Langages
Ruby, Python, TypeScript, SQL · Rust (axum, sqlx) : Citadel est écrit avec et tourne tous les jours
IA appliquée
Sorties structurées (JSON Schema), tool calling, RAG, recherche vectorielle, agents, évals, versioning de prompts, routing, cache de prompts, coût et latence, pistes d’audit
Ingénierie agentique
Skills maison, intégrations MCP, revue de code multi-agents, automatisation spec vers PR, agents planifiés
Backend & données
Rails, GraphQL, PostgreSQL, Redis, ClickHouse, Sidekiq, dbt, Airbyte, Docker, jobs en arrière-plan, tuning de requêtes et de pools
Frontend
React, TypeScript, React Native, Hotwire, interfaces RTL arabes
Opérations
Datadog, Sentry, Prometheus, Grafana, délais SLA, réponse aux incidents, runbooks, isolation multi-tenant
Domaines
Paiements et payouts, paie et RH, opérations hospitalières, e-commerce et paiement à la livraison

Contact

Arrivé jusqu’ici ? Autant en parler.

Trente minutes. Apportez le pire document ou la pire requête et on regarde ensemble.