Hello, I am Benny!

Data Scientist · AI Engineer

Benny Lay profile picture

About Me

I am a final-year engineering student at ESEO (Bac+5), specialised in Data Science and Artificial Intelligence. I am currently completing my end-of-study internship in the R&D department at Aubay, where I work on applied AI research projects.

I am actively looking for my first permanent position (CDI) as a Data Scientist or ML Engineer, as well as a PhD thesis in Artificial Intelligence.

My Data and AI Projects

SotaRAG - RAG Research Assistant

End-to-end Retrieval-Augmented Generation (RAG) application that lets users query scientific literature using natural language. The system automatically crawls and indexes ArXiv papers by topic, then answers questions grounded in the retrieved documents.

Built a FastAPI backend with an async task queue (TaskIQ + Redis) for non-blocking PDF ingestion, a Qdrant vector database for semantic search, and Ollama for fully offline local LLM inference with streaming responses. Delivered a Streamlit chat UI with real-time token streaming and persistent conversation history. Orchestrated all services with Docker Compose and CI via GitHub Actions.

Python FastAPI Qdrant Ollama Streamlit Redis Docker RAG NLP
check the project

Local Data Platform - Child Mortality Analysis

End-to-end local data platform built on a medallion architecture (Bronze / Silver / Gold) to ingest, transform, and visualize child mortality data from Our World in Data (16,835 rows across 200+ countries).

Designed a MinIO data lake for raw CSV storage, a PostgreSQL data warehouse with staging and gold schemas, and three analytical models built with dbt (mortality by country, trend by decade, top 10 most improved countries). Wrote 14 dbt data quality tests (not_null, unique) on sources and gold models. Orchestrated the full pipeline Bronze → Silver → Gold → Test with an Airflow DAG, packaged in a custom Docker image. Connected Metabase to the gold schema for interactive dashboards.

Python Pandas Airflow dbt PostgreSQL MinIO Docker Metabase
check the project

Age Prediction - Deep Learning Web App

Trained a ConvNeXt-Tiny regression model on the UTKFace dataset to predict age from face photos, achieving MAE = 4.49 years on the test set. Automated hyperparameter search (learning rate, batch size, weight decay) with Optuna over 15 trials and tracked experiments with TensorBoard.

Built a FastAPI backend with face detection (OpenCV Haar cascade), Monte Carlo Dropout for 95% confidence intervals, and structured logging. Developed a React frontend displaying the detected face crop, predicted age, and confidence range. Wrote 17 pytest tests with CI on GitHub Actions and containerized the full stack with Docker Compose and GPU support.

PyTorch ConvNeXt FastAPI React Docker Optuna OpenCV pytest GitHub Actions
check the project

Brain Tumour Classification

Designed and implemented a custom CNN architecture using PyTorch for multi-class brain tumor classification from MRI images, distinguishing between glioma, meningioma, pituitary tumors, and healthy cases.

Following 15 training epochs, the model achieved:
Overall Accuracy: 93.55%  |  F1-Score: 93.46%

Recall for glioma tumors: 97.13%
Recall for pituitary tumors: 94.61%
Precision for no tumor: 93.24%

Computer Vision PyTorch CNN Python
check the project

Image Captioning (CNN-RNN)

Developed a deep learning model for automatic image captioning using a CNN-RNN architecture with TensorFlow. Implemented data preprocessing, tokenization, and metric evaluation pipelines in Python.

Trained on 20% of the COCO dataset for 20 epochs:
CIDEr score: 0.433  |  BLEU-4 score: 0.153

TensorFlow CNN RNN Deep Learning Computer Vision NLP Data Processing Python
check the project

Explainable AI (XAI) - Grad-CAM Applications

Focused on the interpretability of computer vision models using Grad-CAM (Gradient-weighted Class Activation Mapping). Applied it to two distinct tasks to visualise where models focus their attention:

  • Image Classification: Used on the ResNet50 architecture to generate heatmaps highlighting discriminant regions for classification decisions.
  • Object Detection: Integrated with YOLOv8 to provide human-understandable visual explanations for bounding box predictions.

This work enhances the trustworthiness of complex deep learning systems.

Explainable AI Computer Vision Deep Learning ResNet YOLO Grad-CAM PyTorch
check the project

Continual Fine-Tuning of Small Language Models

Compared five strategies for mitigating catastrophic forgetting when sequentially fine-tuning Qwen2-0.5B on quarterly batches of ArXiv abstracts (cs.LG + cs.CL, 2024). Implemented Naive, EWC, LoRA + Replay, and Orthogonal LoRA (O-LoRA) from scratch using PyTorch and HuggingFace.

Perplexity on batch_01 after 4 sequential training steps:
Naive: 5.14  |  LoRA + Replay: 3.66  |  O-LoRA: 3.70

PyTorch HuggingFace Continual Learning LoRA LLM NLP Data Processing Python
check the project

Chess Game Analytics Dashboard

Full-stack data analytics web app that fetches, stores, and visualizes Chess.com game history for any player. Built an ETL pipeline in Python to extract data from the Chess.com public REST API, normalize it with pandas, and persist it in SQLite with incremental ingestion and deduplication.

Delivered an interactive Streamlit dashboard showing rating trends, opening performance, win/loss rates, and opponent strength across game modes (Blitz, Bullet, Rapid). Containerized with Docker Compose, covered with pytest unit tests, and deployed via a GitHub Actions CI/CD pipeline.

Python Streamlit pandas SQLite Docker GitHub Actions REST API ETL
check the project

Contact

Open to opportunities - feel free to reach out!