Skip to content

Amr Abujabal

Computer Science | Cloud & Backend | Computer Vision

I build computer-vision pipelines that turn match footage into player analytics, and I ship full-stack apps to production.

A little background

I'm a fourth-year Computer Science student at UBC Okanagan, graduating in May 2027. Backend and cloud work is home base, but I'll go wherever the project needs me in the stack.

Most of my projects mix ML with sports. I built a system that tracks every soccer player on the pitch from a single camera, and a World Cup predictor, trained on 49,000 historical matches, that ran live through the 2026 tournament and finished calling 26 of 31 knockout ties correctly.

PitchVision exists because pro-level player tracking costs more than most amateur clubs can spend. One camera and the right models close most of that gap. That is the kind of problem I want to keep working on.

School
UBC Okanagan
Graduating
May 2027
Focus
Backend · Cloud · Computer Vision

Selected work

PitchVision

Computer Vision / ML + Cloud

In Progress

Single-camera player identification and performance analytics for amateur soccer clubs. Detects and tracks every player frame-by-frame, computes per-player physical and tactical metrics (distance, speed zones, heatmaps, pressing), and serves them through a REST API to a coach-facing dashboard. 126 tests passing.

YOLOv10 SAM 2 TransReID OSNet FastAPI Next.js PostgreSQL Docker GitHub Actions

Tactical diagram of a soccer pitch with player bounding boxes, trajectory lines, and a heatmap contour

FitCheckAI

AI Fashion Assistant

In Progress

Instagram bot that turns an outfit photo into shoppable product matches. A DM webhook hands off to Celery workers that download the image behind an SSRF guard, run a vision model to break the outfit into garments, search each one across three price tiers, and reply in a stylist voice — all async FastAPI over Postgres, Redis and S3, with per-user rate limiting and 106 tests green end-to-end on Docker Compose.

FastAPI Python Celery PostgreSQL Redis AWS S3 OpenAI Vision Docker GitHub Actions

Reproducing ResNet

Deep Learning / Paper Reproduction

From-scratch reproduction of the CIFAR-10 experiments in Deep Residual Learning for Image Recognition (He et al., 2015): model, data pipeline, and training loop rebuilt from the paper alone under strict test-driven development. ResNet-20 reproduced at 8.39 ± 0.31% and ResNet-56 at 7.45 ± 0.69% over 3 seeds, both inside the ±0.5% target fixed before any model was trained. A follow-up 2×2 pitting the original block against pre-activation ResNet-56 across CIFAR-10 and CIFAR-100 found no measurable difference at depth 56 — the two gaps are smaller than the noise and point in opposite directions, a null result reported as the finding. 15 runs, ~26 GPU-hours.

PyTorch Deep Learning Paper Reproduction Computer Vision Reproducibility TDD

Results table and tolerance-band plot from the write-up, showing ResNet-20 at 8.39 ± 0.31% and ResNet-56 at 7.45 ± 0.69% against the paper's 8.75% and 6.97%

World Cup 2026 Predictor

Full-Stack ML App

Match outcome predictor that ran live through the 2026 FIFA World Cup. An XGBoost classifier trained on 49,000+ historical matches with ELO-based features priced every knockout tie before kickoff, behind an interactive bracket, user predictions and a leaderboard — with a self-updating sync that pulled real results from football-data.org and advanced the bracket as each match finished. Final scorecard: 26 of 31 correct (83.9%), Brier 0.3665, perfect through the quarter-finals and semis; it missed the final, giving Argentina 43% against the eventual champions Spain.

XGBoost scikit-learn FastAPI React SQLAlchemy Tailwind Vercel Render Neon

Finished World Cup 2026 bracket with a black-and-gold 'Spain are champions' hero and the AI report card scoring the model at 84%, 26 of 31 calls

What I work with

Languages

Python Java C C++ SQL JavaScript

Backend & Web

FastAPI React PostgreSQL MySQL REST APIs JWT

Cloud & DevOps

Google Cloud Platform Docker Git GitHub Actions CI/CD Linux

ML & Data

NumPy pandas scikit-learn XGBoost YOLOv10 SAM 2 TransReID/OSNet Vision-Language Models Multi-Object Tracking

Let's get in touch

I'm looking for internships. If you're hiring, or you want to talk about tracking soccer players with one camera, email me.

Email Me