Availability: Open to opportunitiesNouakchott, Mauritania
Bechir Mady
Student at SupNum, I’m a software and data engineer passionate about building intelligent systems that solve real-world problems. I work across software development, data engineering, and machine learning — from designing scalable applications and APIs to building data pipelines, lakehouse architectures, and AI-powered solutions.
Introduction
Overview.
I’m a software and data engineer focused on turning complex problems into simple, reliable, and intelligent solutions. I build across software development, data engineering, and AI, creating systems that connect applications, data, and machine learning to solve real-world problems.

DataEngineer

Machine LearningEngineer

Software Developer
Work / 11 projects across 5 categories
Projects.
Each category groups the projects that share a way of working. Open one to see its projects, what they measure, and their code.
Data Engineering02 projects
A hybrid streaming and batch pipeline on a Medallion architecture (Bronze / Silver / Gold), with fraud detection in real time.
Three Spark Structured Streaming queries consume a Kafka topic and write to Delta Lake on MinIO, while four fraud rules evaluate over 60-second sliding windows. The dbt layer is tested rather than assumed, and the whole stack comes up from a single `docker compose up`.
Spark Structured Streaming · Delta Lake · Redpanda / Kafka · MinIO (S3) · dbt · DuckDB · Airflow · Docker
Pipeline
- Redpanda
- Spark Streaming
- Delta Lake
- dbt
- DuckDB
- Throughput
- ~25 ev/s
- Tests
- 30 + 52
- Containers
- 13
- 02
Rice Crop Yield — An Giang
Geospatial ML · 2024Rice phenology monitoring and productivity estimation in An Giang province, Vietnam.
Sentinel-1 radar, which sees through the monsoon cloud cover where optical sensors alone fail, combined with Landsat and weather data, and reported through Power BI for decision-making.
Sentinel-1 · Landsat · Python · SQL · Power BI
Pipeline
- Sentinel-1
- Landsat
- Phenology
- Model
- Power BI
- Sensors
- S1 · Landsat
- Area
- An Giang, VN
- Reporting
- Power BI
Machine Learning05 projects
- 03
MRU-Forecast
Time Series · MLOps · 2026USD/MRU and EUR/MRU exchange-rate forecasting at 1, 7 and 30 business days — with the uncertainty as the main deliverable.
The hard half of the question is not what the value will be, but how wrong the answer is likely to be. Intervals come from conformal prediction and their coverage is verified on a backtest rather than postulated. Served by a FastAPI endpoint, tracked in MLflow, shipped with a dashboard and a Docker image.
Python · Conformal Prediction · scikit-learn · MLflow · FastAPI · Docker
Pipeline
- Market data
- Features
- Model
- Conformal
- API
- Horizons
- 1 / 7 / 30 d
- Coverage
- 90% measured
- Pairs
- USD · EUR
- 04
Multi-Modal RAG
LLM · Retrieval · 2026Question answering over heterogeneous corpora — native PDFs, scanned pages, spreadsheets — that cites the exact passage behind every claim.
The work went into what decides whether a retrieval system is usable in production rather than impressive in a demo: structure-preserving ingestion, with tables kept atomic and figures paired to their captions; hybrid dense and BM25 retrieval fused by Reciprocal Rank Fusion then reranked by a cross-encoder; and citation markers resolved down to the file and the page — with fabricated markers stripped before anything reaches the screen.
PyMuPDF · Tesseract OCR · BGE embeddings · BM25 · Cross-encoder · MMR · Ollama
Pipeline
- PDF / OCR
- Chunking
- Dense + BM25
- RRF + rerank
- Cited answer
- Retrieval
- hybrid + RRF
- Citations
- verified
- Backends
- 3 to choose
- 05
Rice Yield Estimation
Geospatial ML · Master's thesis · 2026Yield prediction (t/ha) for 102 irrigated plots in the Trarza region, from Sentinel-2 imagery, weather data and field observations.
The Sentinel-2 archive as delivered was truncated: its end-of-directory index was missing, so `zipfile` refused to open it at all. A purpose-built reader rebuilds that index by walking the local file headers, and recovers 99.88% of the bytes without ever materialising the 14 GB on disk.
Sentinel-2 · rasterio / GDAL · Pandas · scikit-learn · XGBoost · Jupyter
Pipeline
- Sentinel-2
- Plot mask
- Indices
- Weather + ET
- Yield
- Scenes
- 11,799
- Plots
- 102 / 102
- Archive
- 99.88% read
The Skip-Gram principle transposed to an NP-hard combinatorial optimisation problem over two coupled graphs, drawn from bioinformatics. Submitted to I2COMSAPP'26.
Embeddings are trained on the directed graph alone; the connectivity of the second graph only enters at decoding time. A naive decoder gets stuck in the dead ends of the DAG, which is why the decoder carries an exact lookahead — the longest remaining path, computed by dynamic programming in O(V+E) and combined with embedding similarity. Written with three co-authors under Dr. Mohamed Lemine Ahmed Sidi and Dr. Hafedh Mohamed Babou.
Skip-Gram / node2vec · Negative Sampling · Dynamic programming · Union-Find · NumPy
Pipeline
- DAG walks
- Skip-Gram
- Guided decoding
- Union-Find
- Path
- Exact solver
- 28 s / instance
- GNN baseline
- 1.2 nodes
- Submitted to
- I2COMSAPP'26
A complete chain for the Mauritanian property market: collection, predictive model, API, and a map interface.
Over 5,000 listings pulled through Voursa.com's internal API, then feature engineering that earns its name — target encoding, log transforms, interaction terms — before XGBoost and LightGBM. The model is exposed by FastAPI and consumed by a Next.js 15 front end with Leaflet mapping and Recharts visualisations.
BeautifulSoup · XGBoost · LightGBM · FastAPI · Next.js 15 · Leaflet · Recharts
Pipeline
- Scraping
- Feature eng.
- XGB / LGBM
- FastAPI
- Map
- Listings
- 5,000+
- Models
- XGB · LGBM
- Surface
- scrape → map
Web01 project
An online visa application platform — multi-step forms, relational persistence and a multilingual interface.
Next.js App Router with Prisma on PostgreSQL, full internationalisation through next-i18next, and an application flow split into steps that survives a page refresh.
Next.js · TypeScript · Prisma · PostgreSQL · next-i18next
Pipeline
- Form
- Validation
- Prisma
- PostgreSQL
- Application
- Languages
- AR · FR · EN
- ORM
- Prisma
- Rendering
- App Router
Mobile02 projects
An anti-food-waste application: customers collect surprise baskets at a reduced price from partner merchants.
Two journeys in one binary — twelve customer routes and nine merchant ones — over a clean-ish feature architecture with Riverpod and Dio. Sign-in returns a 24-hour access token and a 7-day refresh token, and an interceptor renews the first silently on a 401, so a session is not lost every day.
Flutter · Riverpod · go_router · Dio · Freezed · Material 3
Pipeline
- Basket listed
- Order
- Pickup code
- Validation
- Review
- Routes
- 24
- Journeys
- 2
- Flavors
- 3
Connects sellers of recyclable waste with buyers and recyclers in Nouakchott, from a published listing to the two parties reaching each other by phone.
Migrated off FlutterFlow: the exported code was deleted or redistributed, and nothing on the data layer depends on Supabase or Firestore any more. Notifications run over a STOMP WebSocket with an FCM fallback, and a version gate mounted above the Navigator blocks a build older than the backend's minimum — including on a route opened by a deep link.
Flutter · go_router · STOMP WebSocket · Firebase Cloud Messaging · Spring Boot
Pipeline
- Listing
- Offer
- Negotiation
- Acceptance
- Contact
- Languages
- FR · AR · EN
- Lint
- 0 issue
- Release
- 1.0.1+6
Computer Vision01 project
Driving the system pointer with a bare hand: a webcam stream goes in, real movement, clicks, drags and scrolls come out.
Built as an actual input driver rather than a tutorial script: perception isolated from the provider, gestures expressed in pure geometry, an explicit state machine, an interchangeable OS backend. The jitter that makes most demos unusable is removed by smoothing.
MediaPipe Hands · OpenCV · Python · pytest · mypy
Pipeline
- Webcam
- MediaPipe
- Geometry
- State machine
- OS pointer
- Frame rate
- full FPS
- Typing
- mypy strict
- Lint
- ruff
Path / 3 milestones
What brought me here.
Baccalaureate
National baccalaureate — Mauritania
- The secondary-school diploma that opened the way to computer science.
BSc, Computer Systems Development
Institut Supérieur du Numérique (SupNum), Nouakchott
- Programming, databases, networks and web development, through to the design of complete applications.
- Three years that turned an interest in code into a way of building software.
MSc, Data Engineering & Machine Learning
Institut Supérieur du Numérique (SupNum), Nouakchott
- Big data, machine learning, distributed architectures and natural language processing.
- Most of the projects in this portfolio started during this programme.
Open to opportunities