← Récit
Chapitre 3Mars 2024 — Avril 2026

SiccaDev, et les outils que j'ai construits pour moi-même

En mars 2024, j'ai cofondé un petit studio appelé SiccaDev au Kef et je suis devenu la personne responsable de savoir si le côté technique fonctionnait. Sur environ dix-huit mois, on a livré pour plus de dix clients — architecture, back-ends, infrastructure cloud, déploiements sur VPS, travail sur les bases de données, CI/CD, conteneurs.

C'est la période de mon parcours avec le moins de dépôts publics et le plus de logiciels livrés, parce que le travail client est privé, et je ne vais pas prétendre le contraire pour rendre un graphe GitHub plus rempli. S'il y a un trou visible dans ma chronologie entre 2024 et 2026, ce trou est une entreprise.

Ce que SiccaDev m'a vraiment appris n'est pas sur une ligne de CV. C'est que l'ingénierie, le métier, c'est à peu près 20 % « quel est le bon modèle de données » et 80 % « le client a dit en réunion, une fois, en passant, qu'il voudrait peut-être X un jour — est-ce une vraie exigence ? ». On apprend à traduire des phrases lâchées en engagements d'architecture, puis on revient vérifier sa traduction auprès de la personne qui l'a dite, avant qu'il ne devienne coûteux de s'être trompé. C'est la compétence non technique la plus utile que j'aie, et elle vient entièrement du travail client.

Aussi : les habitudes ont commencé ici. Un seul endroit où chaque règle s'applique. Des déploiements capables de revenir en arrière tout seuls. Écris pourquoi tu as fait la chose bizarre, parce que dans six mois la chose bizarre ressemblera à une erreur et tu vas la « corriger ». Ce ne sont pas des choses que j'ai lues dans un livre. C'est du tissu cicatriciel de petites entreprises avec de vraies échéances.

Doha, et une série de petites choses tranchantes

Fin 2025, j'ai déménagé à Doha pour un poste en support d'exploitation dans une entreprise de mobilité — du travail de support sur des tâches assignées dans un environnement de production réel. Utile, et pas la partie intéressante de ce chapitre.

La partie intéressante, c'est qu'à peu près à ce moment-là j'ai commencé à livrer de petits outils pour moi-même, en public, et la phrase de la boîte à rythmes est revenue.

Job Scraper 02 existe parce que je consultais dix sites d'emploi chaque matin et je détestais ça. Il récupère les annonces et note chacune par rapport à ton CV avec un LLM. Deux conteneurs — un scraper FastAPI et un tableau de bord Streamlit — avec des contrôles pause, reprise et arrêt en HTTP, parce qu'un scrape est une tâche de longue durée et que les tâches de longue durée méritent des boutons. La décision de conception que je défendrai devant n'importe qui : il tourne sans aucune clé d'API. Si tu ne lui donnes pas de clé Groq, Anthropic ou Gemini, il retombe sur de la correspondance par mots-clés et fonctionne quand même. Un outil qui exige un identifiant payant avant même de te montrer ce qu'il fait est un outil que personne n'essaie. Il est sur PyPI maintenant, avec une vraie chaîne de publication en Trusted Publisher, parce que si je fais une chose j'aimerais aussi faire les parties ennuyeuses.

L'outil d'automatisation WhatsApp existe parce que l'API officielle WhatsApp Business est tarifée pour des entreprises, pas pour une personne seule qui envoie des messages à ses propres prospects. Alors au lieu d'une API, il fait tourner un vrai navigateur Chromium dans un conteneur Docker, sur un affichage virtuel, exposé via noVNC pour qu'un humain puisse regarder et reprendre la main. De la virtualisation d'interface graphique en remplacement d'une API. C'est une idée un peu maudite et j'y tiens. Le README contient cette ligne, que j'ai laissée exprès : « don't exceed 100 messages per day otherwise your WhatsApp account will be banned. Mine got banned after 40 messages sent in one day. » C'est moi qui me dénonce dans un dépôt public, et je pense que cet instinct — dire la chose vraie même quand c'est la chose qui n'avantage pas — est la raison pour laquelle tout ce site web existe.

La CLI deepagents de LangChain a reçu une petite contribution de ma part en février 2026 — trente lignes. La commande /tokens affichait ton usage mais pas de quoi c'était l'usage, alors j'ai ajouté le nom du modèle actif et sa fenêtre de contexte complète. Le nombre a maintenant un dénominateur. C'est passé par la revue, ça a récupéré des tests unitaires, ça a été mergé et livré dans une release. Trente lignes. Je ne vais pas gonfler ça en « contributeur à LangChain ». C'est une PR mergée sur une CLI que j'utilise, et c'est une chose agréable à pouvoir dire exactement.

Fira Sys est celui qui a une histoire. C'est un système de gestion de restaurant — caisse, inventaire sur plusieurs sites, bons de commande, analytique, et scan de factures qui lit un PDF fournisseur par OCR et en extrait les lignes avec un LLM. Il a commencé sa vie comme une application de bureau en Rust et a été entièrement reconstruit en application web React/Node quand la réalité opérationnelle s'est révélée nécessiter un accès multi-site et multi-utilisateur qu'un binaire de bureau n'allait pas offrir avec grâce. Il a été construit pour un vrai client. La mission s'est terminée. Alors je l'ai passé en open source, dans l'état où il était, avec un README qui dit clairement qu'il a des aspérités — parce que l'alternative, c'est que quelqu'un trouve ces aspérités lui-même et se sente trompé.

Voilà toute la série : petits, publics, honnêtes, construits parce que je voulais la chose. C'est aussi la bretelle d'accès vers la partie de ma carrière que ce site web existe surtout pour documenter.