ML engineer and independent researcher. I study what models actually learn, and what they need to remember. Right now: world models that plan for robots, and the leanest memory that keeps them reliable.
🔬 Open to ML engineer, research engineer, and applied scientist roles, and to research assistant, internship, or funded MS/PhD positions, especially on teams working on world models, robot learning, or model-based RL. If you think my work might fit, I'd be glad to hear from you.
📍 Toronto, Canada · Website · LinkedIn · Hugging Face · The Meta Gradient
I spent ten years forecasting demand in warehouses and grocery stores, which is a crude way of modelling a world that keeps surprising you. I learned machine learning trying to understand why those models failed, and I am still on that question with better tools.
Keepsake: what should a robot remember? · in progress, preprint planned for December 2026 Most robot foundation models act on the current camera frame alone, which breaks on long tasks where the frame does not show how far along you are. Keepsake tests whether a world model's own surprise is a good guide to what a fast planner should keep in a small, fixed memory, and measures task success and planning time per decision together, against no memory, frame stacking, a recurrent state, full history and an oracle. Simulation first, then a low-cost robot arm. Progress, step by step, in the Lab.
Learning RL and robot learning from the ground up · ongoing Berkeley's CS 185/285 (Deep RL), the University of Alberta RL specialization, and Deep Reinforcement Learning Hands-On (Lapan, 3rd ed.), alongside Princeton's ROB 345/549 (Introduction to Robotics), ETH Zürich's Robot Learning (2026), and Russ Tedrake's Robotic Manipulation and Underactuated Robotics. In practice: imitation learning (BC, ACT, Diffusion Policy) and vision-language-action models in simulation with MuJoCo and LeRobot, one small measured experiment at a time.
Cohere Labs Open Science Community · Co-first author & cross-team lead · Apr 2026 to present
- Presenting: 6th Workshop on Multilingual Representation Learning (MRL) · under review at TACL · arxiv
- Dashboard
Data and release infrastructure for CulturalRiddles: a community-built multilingual benchmark of 6,191 cultural riddles, with a CI-validated contribution pipeline, open Hugging Face release, and interactive results dashboard.
Adaption Labs AutoScientist Challenge · 2nd place, $1,000 · Data & Visualization track · 2026
LoRA fine-tunes of vision-language models (Gemma-3-27B, Qwen3.5-9B) for short-answer chart QA, trained on two correct-by-construction datasets (one visual style for Gridline, ten for Prism) where every answer is computed from seeded values before the chart is drawn, plus a hand-authored hardset from real StatCan, BLS, ECB, and WHO charts.
- The metric rewards easy exams. With the base model fixed, pairwise win rate fell from 62% to 24% as perceptual difficulty and visual variety rose. Part of what the number measures is how easy you made your own test set.
- The data platform was corrupting answers. Maximal enhancement settings made models worse than their base (31 to 35% win rate). Diffing the platform's rewrites against the source found 31.6% of answers changed even under explicit guard instructions, including 41 altered numbers.
- Perceptual, not arithmetic, difficulty. Eight mechanics, such as truncated and log axes, unlabeled gridline values, near-ties, near-identical colours, and dual axes, target what VLMs actually struggle with: reading the value in the first place.
Datasets: v1, one style · v2, ten styles · Models: Gridline · Prism · also a Llama-3.2-3B LoRA for table-grounded QA
LoRA/PEFT vision-language models synthetic data evaluation design
7,500 chart-reasoning rows generated from an explicit latent dataset, so the image is a rendering of known ground truth rather than the source of it. Family-disjoint splits, an independent verifier on every answer, and abstention rows produced by reading axis limits back off the rendered figure: when a value falls outside the drawn area, the correct answer is to decline and say why.
Cohere Expedition Hackathon · Pipeline lead, 7-person team
Fully offline cross-lingual document QA for newcomers and migrants: ask about a foreign-language document in your own language and get answers with source quotes and a hallucination trust score. Nothing leaves the user's machine.
- End-to-end RAG: PDF extraction → BGE-M3 embeddings → ChromaDB retrieval → Tiny Aya via llama.cpp → mDeBERTa hallucination verification
- 9,000+ automated evaluations across Chinese, Hindi, and Polish
- Finding: cross-lingual embedding quality, not LLM capability, was the primary retrieval bottleneck
Python RAG ChromaDB BGE-M3 llama.cpp Gradio
Adaption Labs Uncharted Data Challenge · Grade A (9.4/10) · repo
187 curated Tamil Q&A records across 48 crops and 20 categories, built from public-sector sources (Kisan Call Centre, TNAU, ICAR) over 10 iterative submissions. Honorary recognition from Sara Hooker. Follow-up: an 11-language Indian agricultural dataset (718 records, 14 agro-climatic zones) filtered with a layered regex plus local LLM-as-judge pipeline.
dataset engineering multilingual NLP data validation
✍️ Writing: The Meta Gradient
Building and breaking AI systems to understand them, with the philosophical bits left in.
- The Architecture of Dreams: How Neural Networks Learned to Imagine
- Freezing the Noise · how one line of algebra made sampling differentiable
- Finding the Manifold: Where Neural Networks Land · the geometry of the loss landscape, with a live demo
| Area | Tools |
|---|---|
| Languages | Python · SQL · Bash |
| Research | JAX · PyTorch · probing · activation patching · experiment design |
| Robot learning (learning) | MuJoCo · LeRobot · imitation learning · VLAs · latent world models and planning |
| ML / DL | Transformers · LoRA/PEFT · vision-language fine-tuning · state space models · scikit-learn · XGBoost · probability calibration |
| Evaluation & data | benchmark construction · LLM/VLM evaluation · LLM-as-judge · dataset curation · schema design · data validation |
| NLP & retrieval | Hugging Face · embeddings · RAG · ChromaDB · multilingual NLP |
| Systems | Docker · FastAPI · GitHub Actions · llama.cpp · Weights & Biases · MLflow · AWS · Git · Linux |
| Visualization | Matplotlib · Seaborn · Plotly · Marimo · Tableau |
- Machine Learning Foundations · University of Toronto, 2025
- MASc, Electronic & Computer Science Engineering · University of Windsor, 2010–2012
- Thesis: FPGA implementation of face recognition using Eigenfaces
- BE, Electronics & Communication Engineering · Anna University, 2004–2008
Cohere Labs ML Summer School (2026) · Wolfram ML Statistical Foundations · NVIDIA AI Infrastructure & Operations · Stanford Online ML Specialization · Azure AI-900 · OpenEDG Python Institute
Before all of this: ten years in supply chain operations, procurement analysis, and process optimization.
Understanding by implementing. Measuring before concluding.



