[{"data":1,"prerenderedAt":456},["ShallowReactive",2],{"cv-side-items-contact-en":3,"cv-side-items-skills-en":39,"cv-side-items-languages-en":74,"cv-jobs-city-map-3d-en":94,"cv-jobs-tenacy-en":145,"cv-jobs-scortex-en":186,"cv-jobs-sokod-en":231,"cv-jobs-sagitta-pharma-en":275,"cv-jobs-publicite-moi-en":332,"cv-jobs-pm-technologies-en":365,"cv-jobs-ripso-sarl-en":401,"cv-schools-uvsq-en":441},{"id":4,"title":5,"body":6,"city":30,"company":30,"date":30,"description":27,"extension":31,"from":30,"image":30,"images":30,"meta":32,"name":30,"navigation":33,"online":34,"path":35,"seo":36,"stem":37,"tags":30,"to":30,"__hash__":38},"content\u002Fcv\u002Fside-items\u002Fcontact-en.md","Contact",{"type":7,"value":8,"toc":26},"minimark",[9],[10,11,12,16,23],"ul",{},[13,14,15],"li",{},"Tours, France",[13,17,18],{},[19,20,22],"a",{"href":21},"mailto:steeve.ortuani@sokod.fr?subject=Prise%20de%20contact","steeve.ortuani@sokod.fr",[13,24,25],{},"+33 6 60 27 49 16",{"title":27,"searchDepth":28,"depth":28,"links":29},"",2,[],null,"md",{},true,false,"\u002Fcv\u002Fside-items\u002Fcontact-en",{"title":5,"description":27},"cv\u002Fside-items\u002Fcontact-en","es7RE-A8Lc3zr9JvHsKdN7YDt6erxBuuvgOA0hzNG2M",{"id":40,"title":41,"body":42,"city":30,"company":30,"date":30,"description":27,"extension":31,"from":30,"image":30,"images":30,"meta":69,"name":30,"navigation":33,"online":34,"path":70,"seo":71,"stem":72,"tags":30,"to":30,"__hash__":73},"content\u002Fcv\u002Fside-items\u002Fskills-en.md","Skills",{"type":7,"value":43,"toc":67},[44],[10,45,46,49,52,55,58,61,64],{},[13,47,48],{},"IT strategy",[13,50,51],{},"Hands-on technical lead",[13,53,54],{},"Management & hiring",[13,56,57],{},"Distributed architecture",[13,59,60],{},"Performance engineering",[13,62,63],{},"Algorithm engineering",[13,65,66],{},"Real-time systems",{"title":27,"searchDepth":28,"depth":28,"links":68},[],{},"\u002Fcv\u002Fside-items\u002Fskills-en",{"title":41,"description":27},"cv\u002Fside-items\u002Fskills-en","YIg6MFjATRKeTQIOl3bAjsmSZBcp1fql-iBY6P6L-cE",{"id":75,"title":76,"body":77,"city":30,"company":30,"date":30,"description":27,"extension":31,"from":30,"image":30,"images":30,"meta":89,"name":30,"navigation":33,"online":34,"path":90,"seo":91,"stem":92,"tags":30,"to":30,"__hash__":93},"content\u002Fcv\u002Fside-items\u002Flanguages-en.md","Languages",{"type":7,"value":78,"toc":87},[79],[10,80,81,84],{},[13,82,83],{},"French: native",[13,85,86],{},"English: professional working proficiency",{"title":27,"searchDepth":28,"depth":28,"links":88},[],{},"\u002Fcv\u002Fside-items\u002Flanguages-en",{"title":76,"description":27},"cv\u002Fside-items\u002Flanguages-en","IQvKZw_Nj6Z84SCEZWye90vo5CDZP0NGS6BzBUQZtwA",{"id":95,"title":96,"body":97,"city":133,"company":106,"date":30,"description":134,"extension":31,"from":135,"image":30,"images":136,"meta":140,"name":30,"navigation":33,"online":34,"path":141,"seo":142,"stem":143,"tags":30,"to":30,"__hash__":144},"content\u002Fcv\u002Fjobs\u002Fcity-map-3d-en.md","Founder & CTO",{"type":7,"value":98,"toc":131},[99,108,128],[100,101,102,103,107],"p",{},"Built a real-time 3D mapping library that renders OpenStreetMap as a globe in the browser, at planetary scale. Proprietary, self-funded platform, running in production: ",[19,104,106],{"href":105},"https:\u002F\u002Fcitymap3d.com\u002F","CityMap3D",".",[10,109,110,113,116,119,122,125],{},[13,111,112],{},"Designed the full distributed architecture: OSM-to-3D-tiles compilation pipeline (workers on a Beanstalk queue, S3 storage, tiles pushed in real time over Socket.IO), rendered as a spherical globe with one continuous camera from 100 m to 40,000 km, no mode switch.",[13,114,115],{},"Built the custom 3D engine (Three.js + GLSL3): 18 hand-written shaders (SSAO, fog, edge detection, tonemapping, color grading), cascaded shadow maps, astronomical sun\u002Fmoon lighting and a 1,660-star catalogue.",[13,117,118],{},"Rendered objects at scale in the browser: GPU instancing (131,072 instances per mesh, pooled across tiles), LOD, per-tile culling.",[13,120,121],{},"Optimized the tile generation pipeline through measurement: identified the bottleneck (polygon difference, 85 to 97% of total time), applied a targeted fix, -49% overall generation time.",[13,123,124],{},"Built the multilingual search with no third-party API: free-text geocoding and local-LLM embeddings over 166 OSM meta-categories (8,797 phrases, 10 languages), PostGIS proximity resolution.",[13,126,127],{},"Operate the platform in production: 8 hosts, 20 Ansible playbooks, 7 supervised services, strict-TypeScript monorepo of ~70k lines.",[100,129,130],{},"Vue 3 · TypeScript · Three.js · GLSL3 · Hono · Socket.IO · PostgreSQL\u002FPostGIS · Beanstalk · S3 · Ollama · FlatBuffers · Ansible",{"title":27,"searchDepth":28,"depth":28,"links":132},[],"Tours (37), France","Built a real-time 3D mapping library that renders OpenStreetMap as a globe in the browser, at planetary scale. Proprietary, self-funded platform, running in production: CityMap3D.","August 2020",[137,138,139],"citymap3d-globe","citymap3d-paris","citymap3d-liberty",{},"\u002Fcv\u002Fjobs\u002Fcity-map-3d-en",{"title":96,"description":134},"cv\u002Fjobs\u002Fcity-map-3d-en","sNPWN2XvgVyeHg1oX-KVN9CCDz30wiQYqeylMUObBc8",{"id":146,"title":147,"body":148,"city":178,"company":179,"date":30,"description":152,"extension":31,"from":180,"image":30,"images":30,"meta":181,"name":30,"navigation":33,"online":34,"path":182,"seo":183,"stem":184,"tags":30,"to":30,"__hash__":185},"content\u002Fcv\u002Fjobs\u002Ftenacy-en.md","Tech Lead \u002F Frontend Architect",{"type":7,"value":149,"toc":176},[150,153,173],[100,151,152],{},"Hands-on technical ownership of the frontend at Tenacy, a cybersecurity governance SaaS company.",[10,154,155,158,161,164,167,170],{},[13,156,157],{},"Modernized a legacy codebase (Vue 2, Webpack, Node 14, mixins, jQuery injected on the Vue instance): moved up to Vue 2.7 to leverage the Vue 3 backports, migrated the build system from Webpack to Vite.",[13,159,160],{},"Audited every layer of the application and built the full Vue 3 migration strategy: mixins to typed composables, Vuex to Pinia, custom validation with Zod, Design System + Tailwind. Phased plans, identified blockers and dependencies, designed to ship continuously without breaking production.",[13,162,163],{},"Designed and built the Design System: charts, forms with advanced validation, modals, date pickers. Documented and unit tested.",[13,165,166],{},"Quality and conventions: strict TypeScript in CI, ESLint v9, stabilized Vitest and Cypress tests, frontend guidelines and code review standards.",[13,168,169],{},"Hiring (technical interviews, candidate evaluation, criteria definition) and mentoring through code reviews and pair programming.",[13,171,172],{},"Close work with the product team: continuous feature delivery (dashboards, PDF exports, internationalization, feature flags).",[100,174,175],{},"Vue 2.7 (Composition API) · TypeScript · Vite · Tailwind CSS · Pinia · Chart.js · Vitest · Cypress · Storybook",{"title":27,"searchDepth":28,"depth":28,"links":177},[],"Lyon (69), France","Tenacy","March 2024",{},"\u002Fcv\u002Fjobs\u002Ftenacy-en",{"title":147,"description":152},"cv\u002Fjobs\u002Ftenacy-en","vyfrMSvOJiXm1hVCnHRLULHalMU41GfSdX2RKM2gui8",{"id":187,"title":147,"body":188,"city":218,"company":219,"date":30,"description":192,"extension":31,"from":220,"image":30,"images":221,"meta":225,"name":30,"navigation":33,"online":34,"path":226,"seo":227,"stem":228,"tags":30,"to":229,"__hash__":230},"content\u002Fcv\u002Fjobs\u002Fscortex-en.md",{"type":7,"value":189,"toc":216},[190,193,213],[100,191,192],{},"Technical ownership of the frontend at Scortex, an AI visual-inspection platform: computer vision detecting manufacturing defects straight off the production line.",[10,194,195,198,201,204,207,210],{},[13,196,197],{},"Re-architected the Vue 2 MPA into a Vue 3 SPA (Composition API, script setup): reactivity, performance and maintainability.",[13,199,200],{},"Completely reorganized the file architecture along Vue best practices, and integrated the full design overhaul.",[13,202,203],{},"Built a cross-disciplinary feature in close collaboration with the product and hardware teams.",[13,205,206],{},"Led the Cypress test strategy and the technical-debt reduction: analysis, prioritization, fixes.",[13,208,209],{},"Fullstack contributions on the Python backend.",[13,211,212],{},"Hired my own successor: technical interviews, selection, then training and handover of the front-end scope.",[100,214,215],{},"Vue 3 · TypeScript · Python",{"title":27,"searchDepth":28,"depth":28,"links":217},[],"Paris (75), France","Scortex","June 2022",[222,223,224],"scortex-1","scortex-2","scortex-3",{},"\u002Fcv\u002Fjobs\u002Fscortex-en",{"title":147,"description":192},"cv\u002Fjobs\u002Fscortex-en","September 2023","bblGH9JfGyKLn9HUu3oGZzeqPjtMzt_5ofWzUtFpILw",{"id":232,"title":233,"body":234,"city":133,"company":264,"date":30,"description":238,"extension":31,"from":265,"image":30,"images":266,"meta":270,"name":30,"navigation":33,"online":34,"path":271,"seo":272,"stem":273,"tags":30,"to":30,"__hash__":274},"content\u002Fcv\u002Fjobs\u002Fsokod-en.md","Founder & Managing Director",{"type":7,"value":235,"toc":262},[236,239,259],[100,237,238],{},"Founded and run Sokod, my software engineering company: technical direction in consulting (including Tenacy and Scortex, detailed in their own entries) and continuous investment in my own products through Sokod Labs.",[10,240,241,244,247,250,253,256],{},[13,242,243],{},"Video recommendation engine (2025 engagement, client under NDA): TikTok-style selection algorithm. Per-user interest centroids via k-means over embeddings, a weighted mixing desk blending ranking strategies (trending, proximity to interest clusters, collaborative picks).",[13,245,246],{},"Short technical direction and architecture engagements for external clients.",[13,248,249],{},"One year of technical mentoring of freelance developers, through the MentorTech Fr platform.",[13,251,252],{},"NeoTrading (internal product): a platform to build, backtest and deploy crypto trading algorithms. Exchange abstraction layer, indicators, strategies, money management, distributed real-time processing.",[13,254,255],{},"BeansWatch (internal tool): desktop app to monitor and operate Beanstalkd queues.",[13,257,258],{},"DesignSystem (internal tool): local generative branding pipeline (FLUX + LLM) producing logo, palette, tokens and components.",[100,260,261],{},"TypeScript · Vue 3 · Node.js · Hono · PostgreSQL · Socket.IO",{"title":27,"searchDepth":28,"depth":28,"links":263},[],"Sokod","October 2021",[267,268,269],"beanswatch","design-system","crypto-trading",{},"\u002Fcv\u002Fjobs\u002Fsokod-en",{"title":233,"description":238},"cv\u002Fjobs\u002Fsokod-en","5p1pc5yUQ-M1il5IQjueU0qEjsk0J_Ou-Ugx3kl1Z9Q",{"id":276,"title":277,"body":278,"city":319,"company":320,"date":30,"description":282,"extension":31,"from":321,"image":30,"images":322,"meta":327,"name":30,"navigation":33,"online":34,"path":328,"seo":329,"stem":330,"tags":30,"to":135,"__hash__":331},"content\u002Fcv\u002Fjobs\u002Fsagitta-pharma-en.md","Chief Technology Officer - CTO",{"type":7,"value":279,"toc":317},[280,283,286,297,300,314],[100,281,282],{},"Technical direction of Sagitta Pharma, a digitalized pharmaceutical wholesaler linking laboratories and pharmacies.",[100,284,285],{},"Management :",[10,287,288,291,294],{},[13,289,290],{},"Managed a team of 15: team growth and cohesion, lead development, recruitment.",[13,292,293],{},"Needs definition, architecture and delivery oversight.",[13,295,296],{},"Handled legal constraints across projects (GDPR, certified health-data hosting).",[100,298,299],{},"Development :",[10,301,302,305,308,311],{},[13,303,304],{},"Built an extractor installed on the servers of around 2,000 pharmacies, interfaced with their databases to stream stock and sales data in real time: several terabytes of data aggregated on an Elasticsearch cluster.",[13,306,307],{},"Built a SaaS (web and mobile) for pharmacies, pharmacy groups and laboratories.",[13,309,310],{},"Built the pharmaceutical wholesaler e-commerce linking laboratories and pharmacies.",[13,312,313],{},"Configuration systems for laboratory promotions and white-label setups for pharmacy groups.",[100,315,316],{},"Node.js · Laravel · Symfony · Angular · Elasticsearch · MySQL · Redis · Linux",{"title":27,"searchDepth":28,"depth":28,"links":318},[],"Fondettes (37), France","Sagitta Pharma","September 2016",[323,324,325,326],"sagitta-pharma-1","sagitta-pharma-2","sagitta-pharma-3","sagitta-pharma-4",{},"\u002Fcv\u002Fjobs\u002Fsagitta-pharma-en",{"title":277,"description":282},"cv\u002Fjobs\u002Fsagitta-pharma-en","QryGZ5lmaps2pOlUdZvxY8AViwXHPoj8Dg0oJ6ax54U",{"id":333,"title":277,"body":334,"city":133,"company":358,"date":30,"description":338,"extension":31,"from":359,"image":30,"images":30,"meta":360,"name":30,"navigation":33,"online":34,"path":361,"seo":362,"stem":363,"tags":30,"to":321,"__hash__":364},"content\u002Fcv\u002Fjobs\u002Fpublicite-moi-en.md",{"type":7,"value":335,"toc":356},[336,339],[100,337,338],{},"Full technical direction of Publicite Moi, an early-stage AdTech startup. Hands-on CTO with a team of 2 developers.",[10,340,341,344,347,350,353],{},[13,342,343],{},"Rebuilt the product core from V1 to V2: server architecture, front and back.",[13,345,346],{},"Set up data tooling to drive the AARRR funnel (Acquisition, Activation, Retention, Referral, Revenue).",[13,348,349],{},"Built the product's companion surfaces: mobile applications, browser plugins.",[13,351,352],{},"Set up the development environments, managed the team and prioritized work to ship the MVP.",[13,354,355],{},"Built the BPI public-funding application and secured the grant; took part in investor meetings.",{"title":27,"searchDepth":28,"depth":28,"links":357},[],"Publicite Moi","January 2016",{},"\u002Fcv\u002Fjobs\u002Fpublicite-moi-en",{"title":277,"description":338},"cv\u002Fjobs\u002Fpublicite-moi-en","cDucJni9mVKcDdsXyeQUhVxtWbOepvxSmkpmWbReYZo",{"id":366,"title":367,"body":368,"city":392,"company":393,"date":30,"description":372,"extension":31,"from":394,"image":30,"images":30,"meta":395,"name":30,"navigation":33,"online":34,"path":396,"seo":397,"stem":398,"tags":30,"to":399,"__hash__":400},"content\u002Fcv\u002Fjobs\u002Fpm-technologies-en.md","Lead Engineer - Casino Games",{"type":7,"value":369,"toc":390},[370,373,387],[100,371,372],{},"High-traffic poker and casino gaming websites. In charge of the casino games, from engine to economy.",[10,374,375,378,381,384],{},[13,376,377],{},"Built the HTML5 games (blackjack, slot machines, casino war, scratch cards) as reusable skeletons themed with the design team: one slot-machine engine, many games through reskinning.",[13,379,380],{},"Designed the redistribution strategy: wins paid out as digital scratch-card tickets rather than direct tokens, to keep fine-grained control over token redistribution.",[13,382,383],{},"Set up token earning through ad viewing.",[13,385,386],{},"Kept high-traffic sites under load: multi-level caching (SQL, memcache, appcache), static file serving, MySQL replication.",[100,388,389],{},"PHP · JavaScript · MySQL · HTML5",{"title":27,"searchDepth":28,"depth":28,"links":391},[],"Saint Avertin (37), France","PM Technologies","December 2014",{},"\u002Fcv\u002Fjobs\u002Fpm-technologies-en",{"title":367,"description":372},"cv\u002Fjobs\u002Fpm-technologies-en","September 2015","BdDrUiqodFDJ6LOsWyd4b-gPX_08B2uZd7st_vM88vA",{"id":402,"title":233,"body":403,"city":133,"company":433,"date":30,"description":407,"extension":31,"from":434,"image":30,"images":30,"meta":435,"name":30,"navigation":33,"online":34,"path":436,"seo":437,"stem":438,"tags":30,"to":439,"__hash__":440},"content\u002Fcv\u002Fjobs\u002Fripso-sarl-en.md",{"type":7,"value":404,"toc":431},[405,408,428],[100,406,407],{},"Founded and ran my first company: publishing profitable B2C community websites, operated solo. Two dating sites with webcam chat (250,000 users), a musician-matching site, a dietetic cooking site.",[10,409,410,413,416,419,422,425],{},[13,411,412],{},"Published and operated my own products end to end: front and back development, infrastructure, moderation, support.",[13,414,415],{},"Built the dating sites' real-time webcam chat: HTML \u002F JS chat backed by a Python server, webcam streams in Flash through Red5 (open-source RTMP server).",[13,417,418],{},"Built acquisition and revenue: SEO and audience monetization.",[13,420,421],{},"Built my own tools: MVC framework, CMS, prospecting CRM.",[13,423,424],{},"Managed external contractors.",[13,426,427],{},"Kept the products running quasi-passively from late 2014, alongside my salaried roles, until the company's voluntary liquidation in 2017.",[100,429,430],{},"PHP · Python · MySQL · JavaScript · Node.js · Red5",{"title":27,"searchDepth":28,"depth":28,"links":432},[],"RiPSO SARL","October 2007",{},"\u002Fcv\u002Fjobs\u002Fripso-sarl-en",{"title":233,"description":407},"cv\u002Fjobs\u002Fripso-sarl-en","September 2017","mH_WCrCMzP9Bxl4vFqa4BgYNRQllymiyhqrqbmKvBmg",{"id":442,"title":443,"body":444,"city":30,"company":448,"date":30,"description":27,"extension":31,"from":449,"image":30,"images":30,"meta":450,"name":30,"navigation":33,"online":34,"path":451,"seo":452,"stem":453,"tags":30,"to":454,"__hash__":455},"content\u002Fcv\u002Fschools\u002Fuvsq-en.md","University degree in technology, Telecommunications and Computer Networks",{"type":7,"value":445,"toc":446},[],{"title":27,"searchDepth":28,"depth":28,"links":447},[],"UVSQ Université de Versailles Saint-Quentin-en-Yvelines","September 1999",{},"\u002Fcv\u002Fschools\u002Fuvsq-en",{"title":443,"description":27},"cv\u002Fschools\u002Fuvsq-en","July 2001","k4Cu51lrTIoF3GZgstdSOGEPF6GY3vi3uF8VH_5VJPY",1790075959904]