Skip to content
MissionMind

Work

Ten years of products that had to work.

Every engagement since 2016, most recent first — the role, the stack, and what actually shipped. Public services at national scale, marketplaces, retail, health, security and AI.

Every engagement

Freelance since 2024; employed inside product teams before that. The list is complete, not a highlight reel.

Annuaire des Entreprises

DINUM — French Government

Oct 2025 — presentCurrent

Role
Lead Fullstack Engineer
Sector
Public services
annuaire-entreprises.data.gouv.fr

One of the most visited French government websites: the public record of every company in France. I led its migration from Next.js to TanStack Start.

What shipped

  • Led the platform’s migration from Next.js to TanStack Start, at more than ten million visits a month
  • Shipping a portal for public agents and integrating new sources of open company data
  • Faster pages through streaming and Suspense boundaries, plus rate limiting and bot protection
  • SEO work to keep the platform the reference result for French company data

Stack

  • TanStack Start
  • React
  • TypeScript
  • Node.js
Mistral AI

Mistral AI

Sep — Oct 2025

Role
Frontend Engineer, freelance
Sector
Artificial intelligence
mistral.ai

A retrieval-augmented web app that drafts RFI responses, built for a Mistral AI client.

What shipped

  • Built a Next.js application that generates RFI responses automatically
  • Implemented the RAG-powered Python backend behind the generated answers

Stack

  • Next.js
  • React
  • TanStack Query
  • Tailwind CSS
  • Python
leboncoin

leboncoin

Mar — Aug 2025

Role
Fullstack Engineer
Sector
Marketplace
www.leboncoin.fr

A complete rebuild of the internal platform the advertising teams use to assemble landing pages.

What shipped

  • Took over an internal CMS-like platform and overhauled the whole codebase
  • Rebuilt it on Next.js, NestJS and Astro, with a large performance gain
  • Redesigned the page-building flow, saving the commercial teams considerable time
  • Migrated the project onto leboncoin’s internal infrastructure and standards

Stack

  • Next.js
  • NestJS
  • Astro
  • React
  • TypeScript
  • Tailwind CSS
Carrefour

Carrefour

Aug 2024 — Apr 2025

Role
Lead Fullstack Engineer
Sector
Retail & e-commerce
www.carrefour.com

Led the team on a data-visualisation platform used across the group and sold to external clients.

What shipped

  • Led the team building a data-visualisation platform used internally and sold externally
  • Rebuilt access control and permissions, the core of the application
  • Shipped new dashboard pages with metrics and charts
  • Replaced the authentication system with the organisation-wide one, and built an admin interface for client organisations

Stack

  • Vue.js
  • Node.js
  • tRPC
  • Google Cloud
  • Looker
Qare

Qare

Nov 2020 — Oct 2024

Role
Lead Frontend Engineer
Sector
Digital health
www.qare.fr

Four years leading the frontend of a telemedicine platform where reliability and privacy are part of the spec.

What shipped

  • Rebuilt the web platforms into an Nx monorepo and brought the React Native app in, for large-scale code sharing
  • Raised test coverage with Gherkin, Cypress, Jest, React Testing Library and randomised data generation
  • Introduced the company-wide feature-flag strategy now central to every new development
  • Worked with the CTO and Engineering Manager to build out a high-performing Product & Tech division
  • Shipped high-impact surfaces with Product and Design: booking funnel, pricing, patient dashboard

Stack

  • React
  • React Native
  • Nx
  • TypeScript
  • Cypress
  • Jest

Aircall

Mar 2019 — Oct 2020

Role
Software Engineer
Sector
SaaS telephony
aircall.io

The web phone used by tens of thousands of professionals, and the event-sourced SMS feature behind it.

What shipped

  • Part of the full frontend rewrite of the Aircall web phone, used by tens of thousands of professionals
  • Built a fullstack SMS feature on CQRS and Event Sourcing over AWS Lambda, served through GraphQL
  • Built and maintained the Chrome extension and the Salesforce and Intercom integrations

Stack

  • React
  • Node.js
  • GraphQL
  • AWS Lambda
  • CQRS
  • Event Sourcing

Dashlane

Oct 2018 — Feb 2019

Role
Software Engineer
Sector
Security
www.dashlane.com

Feature work and encryption performance on the React browser extension.

What shipped

  • Developed new features for the Dashlane browser extension, built with React
  • Optimised heavy encryption routines, improving overall extension performance

Stack

  • React
  • TypeScript

WeSave

Dec 2017 — Sep 2018

Role
Frontend Developer
Sector
Fintech

Portfolio analysis with banking connectors, and a real-estate investment platform.

What shipped

  • Built a financial portfolio analysis tool with banking connectors and real-time investment dashboards
  • Developed a real-estate investment platform for WeSave clients

Stack

  • Vue.js
  • React

Henri 8

Digital agency

Aug 2016 — Dec 2017

Role
Fullstack Developer
Sector
Healthcare

Sole developer at a healthcare-focused agency, shipping web and mobile projects for major industry players.

What shipped

  • Sole developer at a healthcare-focused digital agency
  • Delivered multiple web and mobile projects for major industry players

Stack

  • JavaScript
  • PHP
  • Mobile

In numbers

Ten years, measured.

The short version of a decade spent inside product teams, and the scale the work has had to survive.

visits a month
10M+visits a monthOn the French state company directory I maintain and extend today.
years shipping
10years shippingWeb and mobile products inside product teams, as an employee then freelance.
product teams
9product teamsFrom a two-person agency to marketplaces, retail groups and the French state.
products of my own
2products of my ownDesigned, built and shipped alone — both live in the stores today.

Next step

Tell me what you are building.

Your product, your timeline, and the part that is currently in the way. That is enough for a useful first reply — and you will get a straight answer, including when someone else is the better fit.