oussama.ipynb — last saved auto
(just now)
Python 3.11 · oussama-env
Code

Hi, I'm Oussama — I turn 200 GB of noise into a decision.

MSc Big Data & IoT (Mention Très Bien, ENSAM Casablanca). I build data pipelines, ML / DL models, and the dashboards that finally make managers stop emailing me for the number. This page is a notebook — because that's where I think.

Open to roles · Data Analyst · Data Scientist · AI Engineer  Casablanca / Rabat / Marrakech · Remote-friendly

In [1]:
cell · imports.py▸ ran in 0.42s
# the usual suspects, plus a few specialists import pandas as pd import numpy as np import torch, tensorflow as tf from sklearn.ensemble import RandomForestClassifier from langchain.chains import RetrievalQA # RAG import powerbi as pbi # DAX, RLS, Time Intelligence from me import curiosity, rigor, caffeine # required deps
Out[1]:
fieldvaluedtype
0nameOussama EL BARAGHIstr
1target_rolesData Analyst · Data Scientist · AI Engineerstr[]
2degreeMSc Big Data & IoT — Mention Très Bienstr
3schoolENSAM Casablanca · ENS Marrakechstr
4current_roleData Analyst de Chantier @ Sogea Marocstr
5biggest_dataset200 GB hyperspectral (UM6P ALAB)str
6best_model_acc0.95 — 0.98float64
7languages['ar','fr','en','amazigh']list
8open_to_workTruebool

1. The 30-second pitch

I sit at the seam between BI / reporting and ML / Generative AI. That means I can clean a messy Excel export and ship a Flask API serving an LLM — and I've done both in the last year.

Coming from a research lab (200 GB hyperspectral) into a construction site (effective KPIs, real budgets), I've learned the same lesson twice: the model doesn't matter if the data isn't trusted. So I start with data quality, then everything else follows.

"Replace the manual report. Trust the dashboard. Then go model something interesting." — what I tell every manager I work with.
In [2]:
cell · summary.py
me.describe(include="all")
Out[2]:
Largest dataset
200 GB
hyperspectral · UM6P
CNN accuracy
95–98%
plant-health classifier
ETL time cut
−30%
Univers Acier reporting
Languages spoken
4
AR · FR · EN · ⵣ

2. Featured projects

Three projects that span the data stack — research-grade DL, production-grade GenAI, and bread-and-butter BI. Numbers are real, methods are documented, leakage was checked.

In [3]:
cell · project_01_chickpea_health.py▸ ran in 4h 12m (full training run)
# Master's thesis @ UM6P Analytics Lab — feb→sep 2025 model = CNN(in_bands=204, n_classes=4) loader = HyperspectralLoader(root="chickpea/", size="200GB") trainer.fit(model, loader, epochs=40) print(f"val_acc = {trainer.best:.3f} ✓ stakeholder-grade")
Out[3]:
val_acc = 0.973 ✓ stakeholder-grade ·  F1_macro = 0.961
PROJECT · 01 / 03  ·  UM6P ANALYTICS LAB · MSc THESIS
Classifying chickpea plant health from 200 GB of hyperspectral imagery
Built the full pipeline — ingestion, validation, CNN in PyTorch, reporting — for a research project that turned drone-captured spectra into a usable plant-disease signal. Wrote the data-quality checks first; they caught corrupt scans before they hit training.
Val. accuracy
97.3%range 95–98
Dataset
200 GB204 bands
Pipeline
End-to-end
Confusion matrix — 4-class plant health
Test set · n = 12,420 patches · diagonal = correct
healthy early moderate severe healthy 3120 42 11 4 early 58 2914 63 12 moderate 22 71 3022 55 severe 9 18 44 2999 predicted → actual
PythonPyTorchCNNComputer VisionHyperspectralscikit-learnPandasData Quality
In [4]:
cell · project_02_hr_rag.py
# RAG system for resume ↔ job-offer matching retriever = VectorStore.from_resumes(cv_corpus).as_retriever(k=5) qa = RetrievalQA.from_chain_type(llm, retriever=retriever) app = Flask("hr-assistant") app.route("/match", methods=["POST"])(qa.handle)
Out[4]:
PROJECT · 02 / 03  ·  GENERATIVE AI · FULL-STACK
Automated HR recruitment assistant — RAG over a CV corpus
A LangChain RAG pipeline that ingests CVs, embeds them, and ranks candidates against a job offer with a justification per match. Served via a Flask REST API so the HR team queries it from their existing tool — no new UI to learn.
Architecture
RAG
Serving
Flask API
Deployable
Docker
System architecture — request → ranked match in 1 hop
Generated from project README · 4 services · async
HR client POST /match Flask API /match · auth Retriever vector store LLM LangChain · prompt ranked match + reasons "why this candidate fits" JSON → HR team Auth + rate-limited · Dockerised · CI on GitHub Actions
LangChainLLMsRAGTransformersFlaskREST APIVector DBDockerPrompt Engineering
In [5]:
cell · project_03_univers_acier_bi.py
# Internship @ Univers Acier — automated steel-sales reporting pipeline = (PowerQuery(sources=["erp", "crm", "csv"]) .query_fold().deduplicate().to_powerbi()) dax("YoY_Margin", "DIVIDE([margin]-[margin_ly],[margin_ly])") log("manual reports retired ✓")
Out[5]:
PROJECT · 03 / 03  ·  UNIVERS ACIER · BI INTERNSHIP
Replacing manual Excel reports with a self-serve Power BI suite
Automated the company's sales reporting end-to-end: SQL extraction, Power Query ETL, dynamic dashboards with DAX (YoY, RFM, margin per SKU). Reduced processing time by 30% and eliminated the weekly reconciliation errors that used to land in the COO's inbox.
Processing time
−30%vs manual
Recon. errors
0eliminated
KPIs tracked
24
Weekly close — minutes from raw export to signed-off dashboard
2024 internship · 13 weeks · before/after automation
240m 160m 80m 0 BEFORE — manual SQL + Excel AFTER — Power Query + DAX avg ≈ 140 min / close avg ≈ 55 min / close · −30%
Power BIDAXPower QuerySQLETLExcel TCDData Modeling

+ four more, briefly

Out[6]:
projectstackheadline result
04Pneumonia detection from chest X-raysTensorFlow, Keras, CNN92% accuracy · medical-image classification
05Predictive maintenance — industrial machineryScikit-learn, Random Forest, Pandas85% failure-forecast accuracy from raw sensor data
06Expense & Earning Tracker with AI insightsSpring Boot, React, Python, PostgreSQLFull-stack app · personalized savings recommendations
07E-commerce performance dashboardPower BI, DAX, SQL, PandasYoY · RFM · stock-profitability KPIs in one report
08Customer segmentation (retail)Scikit-learn (clustering), PythonBehavioural segments → targeted marketing & CLV gain

3. Skills, by self-reported confidence

The bar reflects: "I'd be comfortable defending a decision I made with this on day 1." Tools I use daily get a ★.

In [7]:
cell · skills.py
skills.groupby("family").apply(plot_bar)
Out[7]:
Data & analytics
SQL ★
92
Python (Pandas) ★
90
Power BI / DAX ★
88
Power Query
86
Excel (TCD)
84
Tableau
72
R
58
PostgreSQL / MySQL
82
ML / DL / GenAI
Scikit-learn ★
86
PyTorch
82
TensorFlow / Keras
76
LangChain · RAG
80
Prompt Engineering
78
OpenCV · NLTK
70
Engineering & cloud
Flask · REST API
82
Docker
74
Git / GitHub · CI
84
Apache Spark
60
AWS (S3 · EC2 · RDS)
68
Azure
58

4. Timeline

Engineering school → research lab → construction site. The plot twist is that the math is the same.

In [8]:
cell · timeline.py
df.query("actor == 'oussama'").sort_values("date", ascending=False)
Out[8]:
JAN 2026 — PRESENT  ·  BEN GUERIR
Data Analyst de Chantier — Sogea Maroc
Construction · operational analytics
Daily analysis of headcount/attendance/yields per worksite. Built Power BI + Excel dashboards (rendement, coût/m², avancement) that replaced manual reports — managers now decide from the dashboard, not from a forwarded email.
FEB – SEP 2025  ·  RABAT
Data Science Researcher — UM6P Analytics Lab (ALAB)
Research · 200 GB hyperspectral dataset
Designed the validation & quality-control protocols (first line of governance), built automated Python anomaly checks at ingestion, then trained CNNs in PyTorch reaching 95–98% classification accuracy. Reported results to non-technical stakeholders.
JUN – AUG 2024  ·  CASABLANCA
Data Analyst / BI Intern — Univers Acier
Steel distribution · BI & reporting
Automated ETL flows in SQL + Power Query → −30% processing time, zero reconciliation errors. Built dynamic Power BI dashboards (DAX) for sales & margin tracking. Wrote complex SQL for ad-hoc analysis and data-quality validation.
2023 — 2025  ·  CASABLANCA
MSc Big Data & IoT — ENSAM Casablanca
Mention Très Bien · Thesis: Chickpea Plant Health (ML & DL)
2020 — 2023  ·  MARRAKECH
BSc Computer Science — ENS Marrakech
Foundations · algorithms · databases

5. Certifications & languages

In [9]:
cell · credentials.py
me.verified(include=["certs", "langs"])
Out[9]:
DeepLearning.AI — Supervised Machine Learning
Andrew Ng · Coursera
AWS Academy — Machine Learning Foundations
AWS
Coursera — SQL for Data Science
UC Davis
AWS Academy — Cloud Foundations
AWS
Scrum Foundation Professional Certification
CertiProf
Languages
Arabicnative
Amazighnative
Frenchfluent (C1)
Englishprofessional (C1)

6. The "weaknesses" cell

Recruiters always ask. I let the kernel answer.

In [10]:
cell · weaknesses.py
print(me.weaknesses())
Out[10]:
PerfectionError: I sometimes over-engineer the EDA before checking with stakeholders. File "growth.py", line 14, in improve self.timebox_eda(max_minutes=90) # actively working on this ProductionGap: my biggest wins so far live in notebooks & Power BI — fewer in prod APIs. → shipped the RAG assistant as a Flask service this year, taking an MLOps course next.

7. Hire me — or just say hello

The fastest way is the dock at the bottom: type a question and the notebook answers from this page using a real LLM. Or use the boring channels below.

Oussama EL BARAGHI
elbaraghi.oussama@gmail.com
+212 6 18 13 10 94
Casablanca / Rabat / Marrakech · UTC+1
# end of notebook · kernel idle
In [∞]:
⏎ run
strongest skill? explain the CNN thesis analyst or scientist? business impact? why hire him?