dhir patel
[<] back to home
summer 2026remotesmall startup - product & engineering

ml & software engineer

at clutchvr↗

may 2026 - aug 2026

ml & software engineer at clutchvr, a small startup building a vr sports film-study app - real game footage becomes a 3d play you can walk around inside a meta quest. my work leaned mostly on the unity side, alongside the computer-vision models that turn broadcast video into players on a field.

responsibilities

  • built the unity front end for the headset app - a new login page with 'stay logged in', a from-scratch rebuild of the in-headset keyboard, the menu layout, and labels on every controller button so you always know what a button does.
  • wrote the route-recognition logic: it reads the json play data coming from the react client, predicts which route each receiver is running, and floats the route name above them in pov mode.
  • fixed world-space ui problems that only exist in a headset - a login page that wasn't centred, a keyboard sitting too close to your face, menus spawning too high.
  • built player-detection and team-differentiation models for basketball and american football, from dataset to training to inference.
  • learned blender from zero on the job and shipped backpedal, strafe and block animations, remodelled the goal posts and other static objects, and built a new set of line-of-scrimmage down scenarios.

what i accomplished

  • built a basketball pipeline on yolov11 detection + bytetrack tracking with an unsupervised, colour-based team classifier - no per-game jersey labels. it warms up on on-court players, clusters their colours, filters referees out by their grey-shirt / dark-pants signature, and uses voting with hysteresis and soft locks so a player's team doesn't flicker frame to frame.
  • iterated team differentiation through three approaches: my own band algorithm (split each box into horizontal bands and keep only the jersey - dropping the head and crowd at the top and the legs and floor at the bottom), then whole-clip colour clustering (watch the whole clip first, find the two dominant team colours, then assign), then a shift from frame-by-frame to offline whole-play analysis so the model has the full play as context. the first two each moved the needle a little; the architecture change is where the real headroom was.
  • removed bounding-box jitter by adding temporal memory to the predict step. the boxes drive the footage-to-3d conversion, so a shaking box meant a shaking player in vr.
  • took the same problem to american football with a yolov11s-seg segmentation model - mask the player, subtract the turf, sample the torso, then cluster team colours.
  • built my own football dataset instead of hand-labelling every frame: merged several box-labelled sources, auto-generated segmentation labels with sam, and mined hard negatives (crowd, bench and sideline false positives) back into training.
  • learned to train models thoroughly: froze the first 10 backbone layers so a small dataset fine-tunes the pretrained features instead of overwriting them, trained the football model at a 1280 px image size so small, distant players stay visible, and added broadcast-style augmentation (small rotations, random erasing, copy-paste) to look like real tv footage.

professional growth

clutchvr was a small startup, so i reported directly to the ceo and was expected to bring ideas, not just close tickets - i pitched features i wanted to work on and then built them. i also looked at market fit and researched competitors and their products to understand where our app stood. technically, i learned blender from nothing and learned what it actually takes to train a model well rather than just running a training script.

teamwork & responsibility

most days were a build-then-debug loop with the ceo: hop on a call, walk through what he was finding, fix it, repeat. i helped coworkers on both the unity front end and the machine-learning side, and before deadlines we ran team sprints - with overtime - to clear cybersecurity bugs and other issues before a build went out.