Mitchell Sparrow Portfolio
Machine Learning Engineer at Tensora
Clean, headless-CMS-powered ML portfolio that proves you can build production-quality web infrastructure AND train models — a rare combination that most ML engineers' GitHub-readme portfolios completely miss.
Location
Glasgow, United Kingdom
Companies
Credentials
- Masters in Computer Science with Artificial Intelligence, University of Nottingham
- Undergraduate degree in Mechatronic Engineering, South Africa
Skills
What makes it work
A breakdown of the choices that make this portfolio stand out.
Headless CMS for live updates without code rebuilds
Mitchell uses Sanity as a backend so he can add new projects, update descriptions, and publish case studies without touching the codebase. This is an engineering maturity signal — it shows awareness of content lifecycle, not just the ability to hard-code data into a file.
Modern frontend stack paired with ML depth
Next.js, TypeScript, Framer Motion, and Tailwind produce a portfolio that looks like it was made by a strong frontend engineer — not the typical sparse GitHub Pages site most ML candidates submit. The contrast makes the profile memorable and signals versatility across the full engineering stack.
Range of ML domains with honest depth signals
The projects section covers a robot-arm computer-vision dissertation, the portfolio site itself, an F1 Fantasy tool and a Flutter loyalty app. The experience section adds Tensora work on 3D, computer-vision and LLM fine-tuning and on distributed multi-GPU training in the cloud. The F1 Fantasy Analysis tool is particularly effective: it is a real product with an actual user goal, not a Kaggle competition replay.
Credential + project combination
A Masters in Computer Science with AI from the University of Nottingham provides institutional credibility, but the project portfolio is what converts it. The combination — formal training plus shipped work — is the strongest possible signal for ML engineer hiring.
Playful personal branding with a fully working contact flow
The hero headline is styled as a Python filename — "I_like_to_code.py" — set against a plain circular portrait and a thin animated ring, a small but deliberate personality touch on an otherwise minimal, teal-accented layout. The contact section backs it up with a real name, phone number, email, Glasgow, UK location, and a working name/email/subject/message form rather than just a mailto link.
What ML Engineers can take from this
Specific, actionable tips to apply to your own portfolio — no generic advice.
ML engineers who can build a professional web frontend stand out sharply. Most ML portfolios are Jupyter notebooks in a GitHub repo — a deployed, styled web app immediately separates you from the candidate pool.
Use a headless CMS (Sanity, Contentful) to power your portfolio projects section. It signals engineering discipline and means you can add projects without a new deployment cycle.
For each ML project, answer three questions: what was the goal, what was the technical approach, and what can someone do with the result? A working demo beats a model accuracy number every time.
Specialise in at least one domain (computer vision, NLP, recommendation systems) while showing breadth. Generalist ML resumes get lost; domain specialists with cross-area experience get hired.
Show distributed training or cloud deployment experience — even small-scale. Running a model on a single GPU is table stakes in 2025; demonstrating awareness of scaling infrastructure is a meaningful differentiator.
Projects
A robot-arm computer-vision dissertation on one side, an F1 Fantasy team picker built because he kept losing his league on the other. Mitchell Sparrow's projects run from research to small shipped tools, including a Flutter loyalty app for a Cape Town café.
Masters Dissertation: Robot-Arm ML for Object Physical Properties
"Non-Invasive Determination of the physical properties of objects using machine learned interpolation of the observation of robot arm manipulations." The project combines machine learning, computer vision and a robot arm to infer an object's physical properties from watching it being manipulated. The repo shows a semantic segmentation model (predictions shown alongside ground-truth masks) and a stacked LSTM evaluated on precision, recall, F1 and accuracy.
Vision plus sequence modelling on real robot data is a harder problem than a curated benchmark. It pairs directly with the robotics side of his mechatronics degree.
Segmentation results shown next to ground-truth masks, not just a score
Stacked LSTM reported on precision, recall and F1, not only accuracy
Bridges robotics hardware (Universal Robots) and ML
A tool that computes the statistically best theoretical F1 Fantasy team for the next grand prix. It started as a personal Python script ("To put it nicely I was quite horrible" at the league) and became a Flask web app. It can run as a web app or as a raw script with a configurable combined cost limit, and it accounts for streaks and recommends a turbo driver.
A small tool built to solve its author's own problem, then packaged so others can use it. That product instinct is easy to discuss in an interview and rare in ML portfolios.
Budget-constrained team selection (COMBINED_COST_LIMIT), with streaks and turbo-driver pick
Runs either as a Flask web app or as a plain Python script
Honest origin story on the site: built because he was losing his league
Portfolio Website (Next.js + Sanity)
The portfolio site itself, built to learn Next.js, TypeScript, Framer Motion and Tailwind. It was originally inspired by a Sonny Sangha YouTube video, and Mitchell says it has since "morphed into something I am quite proud of". Sanity serves as the backend, so content updates without rebuilding the app.
An ML engineer shipping a headless-CMS frontend in a modern TypeScript stack shows range beyond notebooks, and the repo is there to inspect.
Content lives in Sanity, so no redeploy is needed to add a project
Credits the tutorial it grew from instead of hiding it
Typed-text hero styled like a Python filename
Lucky Dice Coffee Loyalty App
A cross-platform Flutter app built for the owner of the Lucky Dice Coffee Company in Cape Town. It tracks a customer's total and consecutive coffee purchases, rewarding streaks — in effect adding a time constraint to a traditional loyalty card.
A real client, a clear business mechanic (consecutive-purchase rewards), and a cross-platform build. It shows he can scope a product for someone else.
Built for a real café owner, not a tutorial brief
Loyalty twist: rewards consecutive visits, not just totals
Cross-platform from one Flutter codebase
More ML Engineer portfolios
Ready to build your portfolio?
Follow the ML Engineer roadmap — skills, projects, and timeline to get hired.