Freelance — Senior software engineer
I fix, finish and ship software.
Since 2010, across backend, mobile and infrastructure. I take over code nobody else wants to touch, get what already runs in production under control, and bring the product out — Python backends, self-hosted business software, MVPs, websites.
01 — Selected work
Interview Challenger
A platform I designed, built and operate alone, end to end.
It turns a job-offer URL into a generated interview-preparation site: fetch the offer, research the company, plan the pages with an LLM, build a static site, publish it behind a password. One side-effect-free core, four consumers — a CLI, a FastAPI job API with SSE progress, a multi-tenant SaaS server with quotas, and a React SPA.
- CI on GitHub Actions: lint, type checks, SAST, secret scanning, an import-boundary check, three test tiers and an 85 % coverage floor
- Release pipeline builds SHA-tagged images to GHCR, then opens deploy pull requests — development auto-merges, production waits for a human
- GitOps delivery on Kubernetes: one ArgoCD ApplicationSet driving two environments, one Helm chart, per-environment values, self-healing sync
- Infrastructure as code with OpenTofu — private network, dedicated PostgreSQL, firewalls, remote state on object storage — provisioned with Ansible
02 — Services
What I do, and where I stop.
- Backend and APIs
- Python services built, taken over or rescued: FastAPI, Django, Django REST Framework and Flask APIs, Celery workers behind RabbitMQ, legacy code made safe to change again, and the instrumentation that makes failures visible before a client calls.
- Business software
- Odoo and Dolibarr installed, self-hosted and monitored — a working ERP without a subscription you do not control, plus the documentation that teaches your team to use it. I do the installation and the hosting; heavy module customisation is not where I add value, and I say so before starting.
- Web and mobile
- Sites from scratch, WordPress or Django CMS when a CMS is the right call, Android or iOS applications when the product needs to live in a pocket, and the payment integrations that come with them — Mangopay, Mercanet, PayPal.
- Platform and delivery
- CI/CD with gates that actually block a merge — lint, types, SAST, secret scanning, tests — images tagged by commit, and Kubernetes delivery through ArgoCD and Helm. Infrastructure as code with OpenTofu and Ansible, plus Prometheus, Alertmanager and backups where the stack runs on a single machine.
- MVP and advice
- A working v1 in weeks instead of quarters, hosting chosen and paid for, and a straight answer on the architecture decision that would be expensive to undo later.
03 — Experience
Back Market
Senior backend engineer, freelance2026Built and maintained the services behind Express Replacement, customer delivery and parcel tracking, and shipped the Care 2.0 rollout — replacement eligibility, payment flows, support integrations — while retiring Care 1.0. Then moved monitoring to OpenTelemetry and Grafana and chased the incidents it exposed across AfterShip, Celery, PostgreSQL and the payment and identity providers.
UKG
Software engineer, e-signature2020 — 2024Migrated Elasticsearch 1 to 8 in a legacy Python stack, moved asynchronous APIs from aiohttp to FastAPI, and wrote the Kotlin service that carries signature events over Kafka.
Jaccede
Lead software engineer2015 — 2020Led the rewrite and the AWS migration of a national accessibility platform used by people with reduced mobility — and the small team that delivered it.
Independent practice
Web, mobile and business softwareSince 2010A long freelance practice: full-stack Python in Django, Flask and FastAPI, REST APIs for catalogues, user management and payments (Mangopay, Mercanet, PayPal), flask-admin back offices, Vue front ends, Android and iOS apps built from scratch, MySQL-to-PostgreSQL migrations, and Dolibarr rollouts — including the tutorials that taught the client to use it.
04 — Toolset
The stack I actually run.
- Backend
- Python · FastAPI · Django · Flask · Django REST Framework · SQLAlchemy · REST · SSE
- Async
- Celery · RabbitMQ · Kafka · Redis
- Front and mobile
- Vue.js · JavaScript · Android · iOS
- Data
- PostgreSQL · MySQL / MariaDB · MongoDB · Elasticsearch
- Platform
- Kubernetes · Docker · OpenTofu / Terraform · Ansible · ArgoCD · Helm
- Operations
- Grafana · Prometheus · Alertmanager · OpenTelemetry · Sentry
- Quality
- pytest · ruff · mypy · bandit · gitleaks · CodeQL · Trivy · pre-commit
- Cloud
- AWS · GCP · Cloudflare · Hetzner · Linux
- Self-hosted
- Odoo · Dolibarr · WordPress · Django CMS
- Security
- OSCP (PEN-200) · API security
05 — Writing
Notes from production.
- Two environments, one ApplicationSet
How I gate production without adding a second pipeline — and why the gate belongs on the change, not on the sync.
- Why this site has no backend
The stack behind this site, what it buys, and when you should choose something else.
06 — Contact
Available for freelance and full-remote roles.
Based in France, working remotely with teams across Europe. If a system needs stabilising, a product needs shipping, or a decision needs a second opinion, write to me.