Play the game version

Wael

ML engineer & AI-agent builder, competing on Kaggle & Zindi.

I build forecasting models and multi-agent LLM systems, and compete on Kaggle and Zindi. Open to collaborations on machine learning, AI agents and data competitions.

* Projects

TrafficFlowBench 2026

2026 IEEE Big Data Cup (Kaggle)

Solution for the 2026 IEEE Big Data Cup TrafficFlowBench on ten synthetic freeway corridors: reconstruct blanked traffic states, forecast queues 30 minutes ahead, respect traffic physics and recover origin-destination demand.

  • Strictly causal queue forecasting: every input is stamped at or before the forecast origin T. A deletion test blanks every cell after T, rebuilds inputs and predictions, and they come out bit-identical; a negative control shows the test catches leaks.
  • State reconstruction with an XGBoost residual model plus a 14-network 2-D convolutional imputer ensemble and a shock post-correction.
  • Queue forecasting with a space-time CNN for ongoing queues and a LightGBM + CatBoost onset blend with a "month-pure" memory of earlier days.
  • Origin-destination demand recovered with non-negative ridge regression; physics treated as an identity of the state answer, not a separate target.
  • Spotted a regime shift between evaluation windows that the public leaderboard could not show, and documented it in a technical report.

Stack: Python · PyTorch · XGBoost · LightGBM · CatBoost · scikit-learn · pandas · NumPy

The Refactoring Swarm

Team project

A relay of three LLM agents that turns buggy Python into clean, tested code. An Auditor finds issues with Pylint and an LLM, a Fixer rewrites the code with Gemini, and a Judge generates and runs tests. Failing tests send the error back to the Fixer in a self-healing loop.

  • Orchestrated as a LangGraph state graph with conditional edges (plus a legacy relay orchestrator).
  • Listener (Auditor): Pylint static analysis plus LLM issue detection. Corrector (Fixer): Gemini-generated fixes. Validator (Judge): LLM-generated pytest suites.
  • Sandboxed file tools with path validation, and JSON telemetry of every prompt and response with an HTML dashboard.

Stack: Python · LangGraph · LangChain · Gemini · Pylint · Pytest

One Road Out

Zindi Bias Bounty: Mapping Equity Challenge (team resist)

The challenge's scored road layer drops service and pedestrian roads ("escape-route framing"). In the network it defines, 2.88 million residents (7.1%) live in 13,775 pockets whose only connection is a single road link, and the coverage score never counts ways out.

  • For 17.5% of pocket residents in the highest wildfire-hazard quartile, a second way out exists in Overture Maps, but only in the road classes the filter drops.
  • Concentrated where the hazard is highest, and checked against OpenStreetMap and the FHWA public-road inventory.
  • Shows who carries it (care homes, residents 65+, mobile-home parks) and what an egress component would change in the scorecard.
  • Delivered an action list of 5,095 high-hazard single-exit pockets; a verification script recomputes all 107 reported numbers.

Stack: Python · pandas · DuckDB · Shapely · pyproj · Overture Maps · OpenStreetMap

ML Algorithms From Scratch

Foundational algorithms implemented from the ground up in Python notebooks, to understand the mechanics behind the libraries: linear and logistic regression, decision trees and random forests.

  • Linear regression trained with gradient descent on the cost function.
  • Logistic regression with a sigmoid and cross-entropy loss.
  • Decision trees with feature-based splits, and random forests over random data subsets.

Stack: Python · NumPy · Jupyter

VEC Leaderboard Insights

NeurIPS 2026 Virtual Embryo Challenge

A small, dependency-free tool and live dashboard for participants. It reads the public leaderboard and shows where headline points are still unclaimed per metric, estimates where a submission stands, and tracks how the field moves.

  • Reproduces the published headline formula from the task weights and prints the check on every report.
  • A "where do I stand" calculator runs fully in the browser and sends nothing anywhere.
  • A daily GitHub Action stores an anonymised snapshot (team names and affiliations are dropped, enforced by a test).

Stack: Python (stdlib) · GitHub Actions · GitHub Pages · HTML

LLM-FineTune (Qwen 2.5 3B QLoRA)

Co-built at llm-lab-dz

A lightweight fine-tuning workflow for Qwen2.5-3B-Instruct: clean the UltraChat conversations, train a 4-bit QLoRA adapter on a single GPU, publish checkpoints to the Hugging Face Hub and compare base vs fine-tuned generations.

  • Data cleaning: turn and length filters, strict user/assistant alternation, de-duplication and normalisation.
  • 4-bit NF4 quantisation (BitsAndBytes), LoRA rank 16 / alpha 32, paged 8-bit AdamW.
  • Checkpoints pushed to the Hugging Face Hub; inference script compares the base model and the adapter.

Stack: PyTorch · Transformers · PEFT · BitsAndBytes · Hugging Face Hub

APCS Frontend (MicroHack)

MicroHack, team project

A Next.js + TypeScript web app where carriers book terminal appointments for their containers, and operators and admins manage bookings, terminals, carriers, notifications, reports and an audit log.

  • Role-based portals (admin, operator, carrier) plus chat and notifications.
  • A centralised API layer with CSRF-token handling and HTTP-only cookie sessions.

Stack: TypeScript · Next.js · React · Tailwind CSS · Radix UI · socket.io

* Competitions

  • IEEE Big Data Cup 2026: TrafficFlowBench (Kaggle, 2026)
    Delivered a full four-task solution on ten freeway corridors with a strictly causal, deletion-tested forecasting pipeline and a technical report. Code
  • Zindi Bias Bounty: Mapping Equity Challenge (Zindi, 2026)
    Discovered and documented a hidden escape-route bias (2.88M residents behind a single road link); entered for the Best Bias Discovery and Best Documentation prizes. Code
  • NeurIPS 2026 Virtual Embryo Challenge (NeurIPS, 2026)
    Built and open-sourced a leaderboard-insights tool and live dashboard that tells participants which metric to improve next. Code

* Skills

Data
Python, pandas, NumPy
Deep learning & LLMs
PyTorch, QLoRA fine-tuning (Transformers, PEFT)
ML
XGBoost, LightGBM, CatBoost, scikit-learn
Agents
LangGraph, Multi-agent LLM systems
Web & tooling
TypeScript, Git & GitHub Actions

* Creed

Sun Tzu, The Art of War (tr. Lionel Giles, 1910), with what each line means for machine learning:

  • If you know the enemy and know yourself, you need not fear the result of a hundred battles. Know the metric, know your validation set.
  • All warfare is based on deception. A leaderboard can lie. Trust the validation you built honestly.
  • Let your plans be dark and impenetrable as night, and when you move, fall like a thunderbolt. Ship quietly, strike once.

"Technoblade never dies." In memory of Technoblade, 1999-2022.

* Contact

Open to collaborations on machine learning, AI agents and data competitions.