All projects
Every project, with its code or demo. Most come from the École 42 curriculum; case studies explain what I built, the choices and the limits.
Every project, with its code or demo. Most come from the École 42 curriculum; case studies explain what I built, the choices and the limits.
21 of 32 projects

Predicts developer salaries from the Stack Overflow survey. A 42AI AI Lab team project covering the full path from raw data to a public web app; the model is a deliberate baseline, the pipeline is the work.

Classifies breast tumours as benign or malignant with a neural network written in NumPy: layers, losses and optimisers behind a Keras-like API.
Answers questions about the Syntec collective agreement and refuses off-topic ones before calling the LLM. 172 documents, 8,447 chunks, dense retrieval on Chroma.
Maps 79,099 Île-de-France companies from public Insee data across 16 technology domains. A company joins a domain only with a cited, dated source; 23 have one so far, in AI, cybersecurity and embedded systems. The code is private.

Classifies apple and grape leaf photos into 8 classes (6 diseases, 2 healthy) with a PyTorch CNN; augmentation balances the classes before training.

Sorts Hogwarts students into one of four houses from their course scores, with one-vs-all logistic regression and gradient descent written from scratch — no ML library.
Explore a SQLite database in plain language: a local model writes read-only SQL, a validator checks it, and a second model phrases the answer. Built for a two-hour technical test.
A voice-driven, AI-native OS prototype: you speak, and Claude answers aloud while assembling the on-screen interface in real time. Built solo in 24 hours at the Anthropic × Y Combinator hackathon.

A brain-computer interface that classifies EEG motor-imagery signals: a from-scratch CSP spatial filter feeds logistic regression, wired as a scikit-learn pipeline.

A snake that learns to play through trial and error with tabular Q-learning — a Q-table over the head's four-neighbour vision, trained across thousands of self-play sessions.

Linear regression with gradient descent, written from scratch, predicting a car’s price from its mileage.
Binary exploitation, with a teammate: 12 progressive levels of reverse engineering, from stack overflows to format strings and GOT overwrites.
Binary exploitation, with a teammate: 10 setuid binaries broken with ret2libc, ROP, format strings, an off-by-one and symlink abuse.

Built with a teammate: K3s clusters provisioned with Vagrant, then a K3d cluster running a GitOps deployment with Argo CD. The bonus adds a self-hosted GitLab deployed with Helm.

Ansible playbooks, written with a teammate, that deploy a Docker Compose WordPress stack to remote servers.
Web front end for Weight Your Wage: a static Next.js site on Cloudflare Pages that sends the survey form to the FastAPI service as an async job and polls until the predicted salary is ready.

HTTP server in C++ over sockets, testable with a real browser.

Raycasting engine in C in the style of Wolfenstein 3D, built with a teammate: textured walls, a minimap and mouse look.

2D tile game in C with MiniLibX: sprites, textures and keyboard events; each map is checked so that every item and the exit can be reached.

Multiplayer Pong web app in Django: live chat over WebSockets, accounts, an AI opponent and tournaments.

Multiplayer Pong rebuilt as Node.js and Fastify microservices with a TypeScript front end. I was project manager in a team of five, worked on the game with two teammates and set up the ELK logging stack.
| Project | Stack | Links |
|---|---|---|
ML & dataWeight Your WagePredicts developer salaries from the Stack Overflow survey. A 42AI AI Lab team project covering the full path from raw data to a public web app; the model is a deliberate baseline, the pipeline is the work.
|
| |
ML & dataMultilayer perceptronClassifies breast tumours as benign or malignant with a neural network written in NumPy: layers, losses and optimisers behind a Keras-like API.
|
| |
ML & dataRAG-SyntecAnswers questions about the Syntec collective agreement and refuses off-topic ones before calling the LLM. 172 documents, 8,447 chunks, dense retrieval on Chroma.
|
| |
ML & dataCapTech IDFMaps 79,099 Île-de-France companies from public Insee data across 16 technology domains. A company joins a domain only with a cited, dated source; 23 have one so far, in AI, cybersecurity and embedded systems. The code is private.
|
| |
ML & dataLeafflictionClassifies apple and grape leaf photos into 8 classes (6 diseases, 2 healthy) with a PyTorch CNN; augmentation balances the classes before training.
|
| |
ML & dataDSLRSorts Hogwarts students into one of four houses from their course scores, with one-vs-all logistic regression and gradient descent written from scratch — no ML library.
|
| |
ML & dataDataView-LiteExplore a SQLite database in plain language: a local model writes read-only SQL, a validator checks it, and a second model phrases the answer. Built for a two-hour technical test.
|
| |
ML & dataFlowA voice-driven, AI-native OS prototype: you speak, and Claude answers aloud while assembling the on-screen interface in real time. Built solo in 24 hours at the Anthropic × Y Combinator hackathon. |
| |
ML & dataTotal Perspective VortexA brain-computer interface that classifies EEG motor-imagery signals: a from-scratch CSP spatial filter feeds logistic regression, wired as a scikit-learn pipeline.
|
| |
ML & dataLearn2SlitherA snake that learns to play through trial and error with tabular Q-learning — a Q-table over the head's four-neighbour vision, trained across thousands of self-play sessions.
|
| |
ML & dataft_linear_regressionLinear regression with gradient descent, written from scratch, predicting a car’s price from its mileage. |
| |
SecurityRainfallBinary exploitation, with a teammate: 12 progressive levels of reverse engineering, from stack overflows to format strings and GOT overwrites. |
| |
SecurityOverRideBinary exploitation, with a teammate: 10 setuid binaries broken with ret2libc, ROP, format strings, an off-by-one and symlink abuse. |
| |
InfrastructureInception-of-ThingsBuilt with a teammate: K3s clusters provisioned with Vagrant, then a K3d cluster running a GitOps deployment with Argo CD. The bonus adds a self-hosted GitLab deployed with Helm. |
| |
InfrastructureCloud-1Ansible playbooks, written with a teammate, that deploy a Docker Compose WordPress stack to remote servers. |
| |
WebWeight Your Wage — WebWeb front end for Weight Your Wage: a static Next.js site on Cloudflare Pages that sends the survey form to the FastAPI service as an async job and polls until the predicted salary is ready. |
| |
SystemsWebservHTTP server in C++ over sockets, testable with a real browser. |
| |
Systemscub3DRaycasting engine in C in the style of Wolfenstein 3D, built with a teammate: textured walls, a minimap and mouse look. |
| |
Systemsso_long2D tile game in C with MiniLibX: sprites, textures and keyboard events; each map is checked so that every item and the exit can be reached. |
| |
Webft_transcendenceMultiplayer Pong web app in Django: live chat over WebSockets, accounts, an AI opponent and tournaments. |
| |
WebTranscendance V2Multiplayer Pong rebuilt as Node.js and Fastify microservices with a TypeScript front end. I was project manager in a team of five, worked on the game with two teammates and set up the ELK logging stack. |
| |