Ce CV est disponible en ligne : https://steeve.ortuani.com/fr/cv-steeve-ortuani
  • Création d'une plateforme de cartographie 3D temps réel sur données OpenStreetMap, rendue en navigateur à l'échelle planétaire. Plateforme propriétaire auto-financée, en production : citymap3d.com.

    • Conception de l'architecture distribuée complète : pipeline de compilation OSM vers tuiles 3D (workers sur queue Beanstalk, stockage S3, temps réel Socket.IO), sur une base PostGIS de 1,09 milliard de lignes.
    • Développement du moteur 3D custom (Three.js + GLSL3) : shaders post-process (SSAO, color grading), cascaded shadow maps, éclairage astronomique soleil/lune.
    • Rendu de 28M d'arbres et 4,6M de lampadaires dans le navigateur : instancing GPU, QuadTree spatial, frustum culling, LOD.
    • Optimisation du pipeline de génération guidée par la mesure : identification du goulot (la différence polygonale, 85 à 97% du temps), correction ciblée, -49% de temps de génération global.
    • Recherche sémantique multilingue : embeddings LLM local sur ontologie de catégories OSM, ranking vectoriel, requêtes de proximité PostGIS.
    • Exploitation en production : déploiement Ansible, 6 services supervisés, monorepo ~85k lignes de TypeScript.

    Vue 3 · TypeScript · Three.js · GLSL3 · Hono · Socket.IO · PostgreSQL/PostGIS · Beanstalk · S3 · Ollama · FlatBuffers · Ansible

    • 3d-map-1
    • 3d-map-2
    • 3d-map-3
  • Ownership technique du frontend, hands-on, chez Tenacy, éditeur SaaS de gouvernance cybersécurité.

    • Modernisation d'une codebase legacy (Vue 2, Webpack, Node 14, mixins, jQuery injecté sur l'instance Vue) : montée vers Vue 2.7 pour exploiter les backports de Vue 3, migration du build system de Webpack vers Vite.
    • Audit de chaque couche de l'application et stratégie de migration complète vers Vue 3 : mixins vers composables typés, Vuex vers Pinia, validation maison avec Zod, Design System + Tailwind. Plans phasés, blockers et dépendances identifiés, pensés pour livrer en continu sans casser la production.
    • Conception et développement du Design System : charts, formulaires à validation avancée, modales, date pickers. Documenté, testé unitairement.
    • Qualité et conventions : TypeScript strict en CI, ESLint v9, tests Vitest et Cypress stabilisés, guidelines frontend et standards de code review.
    • Recrutement (entretiens techniques, évaluation des profils, définition des critères) et mentoring via code reviews et pair programming.
    • Travail conjoint avec l'équipe produit : livraison de features en continu (dashboards, exports PDF, internationalisation, feature flags).

    Vue 2.7 (Composition API) · TypeScript · Vite · Tailwind CSS · Pinia · Chart.js · Vitest · Cypress · Storybook

  • Ownership technique du frontend chez Scortex, plateforme d'inspection visuelle par IA : détection de défauts de fabrication par vision par ordinateur, directement en sortie de ligne de production.

    • Refonte de l'application Vue 2 MPA en Vue 3 SPA (Composition API, script setup) : réactivité, performance et maintenabilité.
    • Réorganisation complète de l'architecture des fichiers selon les best practices Vue, et intégration de la refonte totale de la charte graphique.
    • Développement d'une fonctionnalité interdisciplinaire en collaboration étroite avec les équipes produit et hardware.
    • Lead sur la stratégie de tests Cypress et résorption de la dette technique : analyse, priorisation, correctifs.
    • Contributions fullstack sur le backend Python.
    • Recrutement de mon successeur : entretiens techniques, sélection, puis formation et passation du périmètre front.

    Vue 3 · TypeScript · Python

    • scortex-1
    • scortex-2
    • scortex-3
  • Création et direction de Sokod, ma société d'ingénierie logicielle : direction technique en consulting (dont Tenacy et Scortex, détaillées dans leurs entrées) et investissement continu dans mes propres produits via Sokod Labs.

    • Moteur de recommandation vidéo (mission 2025, client sous NDA) : algorithme de sélection type TikTok. Centroïdes d'intérêts par k-means sur embeddings, table de mixage pondérée entre stratégies de ranking (tendances, proximité des clusters d'intérêts, picks collaboratifs).
    • Missions courtes de direction technique et d'architecture pour des clients externes.
    • Mentorat technique de développeurs freelances pendant un an, via la plateforme MentorTech Fr.
    • NeoTrading (produit interne) : plateforme de création, backtest et déploiement d'algorithmes de trading crypto. Couche d'abstraction des exchanges, indicateurs, stratégies, money management, traitement temps réel distribué.
    • BeansWatch (outil interne) : application desktop de monitoring et d'administration de queues Beanstalkd.
    • DesignSystem (outil interne) : pipeline de branding génératif local (FLUX + LLM) produisant logo, palette, tokens et composants.

    TypeScript · Vue 3 · Node.js · Hono · PostgreSQL · Socket.IO

    • beanswatch
    • design-system
    • crypto-trading
  • Direction technique de Sagitta Pharma, grossiste pharmaceutique digitalisé reliant les laboratoires aux pharmacies.

    Management :

    • Management d'une équipe de 15 personnes : valorisation et cohésion de l'équipe, lead development, recrutement.
    • Définition du besoin, architecture et suivi de la réalisation.
    • Prise en compte des contraintes juridiques dans les projets (RGPD, HDS hébergement de données de santé).

    Développement :

    • Développement d'un extracteur installé sur les serveurs d'environ 2 000 pharmacies, interfacé avec leurs bases de données pour remonter les stocks et les ventes en temps réel : plusieurs téraoctets de données agrégées sur un cluster Elasticsearch.
    • Programmation d'un SaaS (web et mobile) à destination des pharmacies, groupements de pharmacies et laboratoires.
    • Développement de l'e-commerce de grossiste pharmaceutique faisant la liaison entre les laboratoires et les pharmacies.
    • Système de configuration des promotions des laboratoires, et de marques blanches pour les groupements pharmaceutiques.

    Node.js · Laravel · Symfony · Angular · Elasticsearch · MySQL · Redis · Linux

    • sagitta-pharma-1
    • sagitta-pharma-2
    • sagitta-pharma-3
    • sagitta-pharma-4
  • Direction technique globale de Publicite Moi, startup AdTech early-stage. CTO hands-on avec une équipe de 2 développeurs.

    • Refonte du cœur du produit de la V1 à la V2 : architecture serveur, front et back.
    • Gestion de la data pour piloter le funnel AARRR (Acquisition, Activation, Rétention, Referral, Revenu).
    • Développement des déclinaisons du produit : applications mobiles, plugins navigateurs.
    • Mise en place des environnements de développement, management de l'équipe et priorisation des développements pour livrer le MVP.
    • Montage du dossier BPI et obtention du financement ; participation aux rendez-vous investisseurs.
  • Sites de poker et de jeux de casino à fort trafic. En charge des jeux de casino, de leur moteur à leur économie.

    • Conception des jeux HTML5 (blackjack, machines à sous, bataille, cartes à gratter) comme des squelettes réutilisables déclinés avec l'équipe design : un même moteur de machine à sous, de nombreux jeux par habillage.
    • Stratégie de redistribution : des gains en tickets de cartes à gratter numériques plutôt qu'en jetons directs, pour contrôler finement la redistribution.
    • Mise en place du gain de jetons par visionnage de publicités.
    • Gestion de la charge des sites à fort trafic : caches multi-niveaux (SQL, memcache, appcache), service de fichiers statiques, réplication MySQL.

    PHP · JavaScript · MySQL · HTML5

  • Création et direction de ma première société : édition de sites communautaires B2C rentables, opérés en solo. Deux sites de rencontre avec chat webcam (250 000 utilisateurs), un site de mise en relation de musiciens, un site de cuisine diététique.

    • Édition et opération de mes produits de bout en bout : développement front et back, infrastructure, modération, support.
    • Chat webcam temps réel des sites de rencontre : chat HTML / JS avec serveur Python, flux webcam en Flash via Red5 (serveur RTMP open source).
    • Acquisition et revenus : référencement SEO, monétisation des audiences.
    • Développement de mes propres outils : framework MVC, CMS, CRM de prospection.
    • Gestion des prestataires externes.
    • Exploitation en quasi-passif à partir de fin 2014, en parallèle de mes postes salariés, jusqu'à la liquidation volontaire en 2017.

    PHP · Python · MySQL · JavaScript · Node.js · Red5