Computer Science student at York University's Lassonde School of Engineering. I build systems that turn messy, real-world data into something reliable and interpretable — and I spend most of my time somewhere between applied ML research and production software engineering.
Currently a software engineering co-op with the Ontario Public Service, where I work on a Next.js/TypeScript frontend and build internal tooling around AI-assisted development workflows. Alongside that I hold two research assistant positions — one in clinical AI fairness, one in wireless networks — and lead the AI & Data Society at York.
My interests sit in uncertainty quantification and conformal prediction, time-series forecasting, agentic AI systems, and local-first inference infrastructure. I run a home lab for local LLM inference, largely because I think the interesting question in AI right now is not just what models can do, but where they run and what they cost.
- Aperture — a local-first, least-cost routing layer for AI inference. Queries run on-device via WebGPU and escalate to the cloud only when the workload demands it. Provider-agnostic gateway, difficulty-based router, spend ledger, and a strict local-only mode. Next.js 16 · TypeScript · Tailwind v4 · web-llm
- Rootbound — a local-first urban gardening platform: community feed, peer-to-peer plant marketplace, plant care engine, and a computer-vision pipeline for species ID and harvest forecasting. React · Express · Postgres · Redis · PlantNet · Gemini Vision
- EMForecaster (CQR) — research on conformalized quantile regression and uncertainty quantification for long-horizon time-series forecasting.
- Skin-tone fairness in dermatology AI — second author on a paper evaluating pretraining and harmonization limits across five dermatology datasets. Swin Transformer · concept bottleneck models
| Project | What it does | Stack |
|---|---|---|
| Aperture | Local-first, least-cost AI inference router — on-device first, cloud only when needed | Next.js 16 · TypeScript · Tailwind v4 · WebGPU / web-llm |
| Rootbound | Urban gardening platform: marketplace, care engine, CV-based plant ID and harvest forecasting | React · Express · Postgres · Redis · PlantNet · Gemini Vision |
| EMForecaster | Conformalized quantile regression for long-horizon time-series forecasting | Python · PyTorch · Neptune.ai |
| Grocer OS | Autonomous grocery agent built on GOAT Network (Toronto OpenClaw Hack) | Agentic AI · TypeScript |
| SmallBox | Hackathon-winning build (IBM × Sheridan) | Next.js · watsonx.ai · Watson NLU · Cloudant |
| Rosetta | Real-time multilingual lecture translation, latency-optimized | Python · speech + translation APIs |
| AI-Documentor | Automated code documentation generation | Python |
| Wildfire Prediction | Wildfire risk modelling and geospatial visualization | Python · scikit-learn |
| Hype-Detector | NLP pipeline for detecting hype in text | Python · NLP |
| News Aggregator | Multi-source news aggregation app | Full-stack |
Open to conversations about applied ML research, inference infrastructure, and systems that have to work outside a demo.



