Open Track Submission


Inspiration

Did you know that 70% of injuries in the gym are related to bad form?! And people new to working out are 2.5x more likely to get injuries? That's absurd isn't it? We always hear people complain about how much their back hurts, how their knees can't bend properly, how they always feel pain in their shoulders. In addition to suffering from constant physical discomfort, they also go through intense stress. The solution to all of these problems? Definitely not an expensive personal trainer who's going to be with you for only an hour a day. THE REAL SOLUTION? FORMCOP!

What it does

What does FormCop not do is the real question. Do you want to track your workouts real-time, with live instructions to fix your form? FormCop does that. Do you want to know whether the last rep you completed had good form? FormCop does that. Do you want to track how long you held a plank or handstand for? FormCop does that. Do you want a comprehensive summary of your mistakes and feedback that tells you how to fix it? FormCop does that. Do you want to see all of your previous workout info beautifully arranged in one place? FormCop does that too!

How we built it

We used Next.js, Three.js and Tailwind CSS for the fronted. All of the models in the app are rendered real-time, and can be interacted with. For the real-time workout tracking, we used a custom tuned Mediapipe model, and our very own dataset. For the backend, we used a modular flask system, and MongoDB as our database. The feedback provided at the end of each set is powered by a Gemini 2.5 flash-lite model, where we feed all of the relevant angles, duration and joint movement to get the most accurate and helpful response possible.

Challenges we ran into

  • Data Translation Layer: Translating raw Cartesian coordinates into human-readable metrics was a major difficulty. We solved this by using trigonometric laws to calculate joint angles and established specific angular thresholds to automate rep detection. Each set logs individual reps, storing relevant angles, timestamps, and form quality into a structured format that humans can read and Gemini can receive.

  • ML Model Instability: MediaPipe’s raw landmark predictions had high-frequency "jitter," making the tracking appear unstable. We mitigated this by implementing an Exponential Moving Average (EMA) filter, smoothing the prediction noise to create a stable digital skeleton.

  • CORS Config: Differing environments between the frontend and backend caused persistent CORS blocks. We resolved this by generating custom SSL certificates, allowing us to establish a secure handshake to handle API requests.

Accomplishments that we're proud of

We built a complete product in under 12 hours! And it is something that anyone can use to improve their health and lifestyle.

What we learned

We learned more about biomechanics and kinesiology in one night than we ever expected to. One of our teammates is studying KPE at UofT and brought genuine knowledge of how the human body moves, including joint mechanics and safe ranges of motion. Translating that domain expertise into code variables like angular thresholds and form quality flags was one of the most interesting challenges we had. It taught us how valuable it is to have someone on the team who actually understands the problem at a deep level. We also had no idea how complex 3D rendering in the browser actually was. Getting animated FBX models to load, play, and switch without crashing took way more debugging than expected. We discovered that sharing cached model objects across renders silently destroys the GPU state, and cloning a rigged character without remapping its skeleton bones causes it to freeze in place. These issues sounded simple but took hours to resolve.

What's next for FormCop

  • Enhanced Movement Analysis: In addition to joint angles, we can improve analysis based on the user's acceleration and weight. This can allow us to provide further feedback on info such as controlling eccentrics

  • Nutritional Tracking: Exercise isn't the only factor of someone's physical health. By integrating ML-powered calorie tracking and nutrition resources, we can evolve the platform into a comprehensive physical health hub.

  • Progressive Overload Info: Using LLMs and previous workout history, we could provide info on whether a movement is too easy or too hard. Users could then adjust their workout difficulty based on this feedback.


Closed Track Submission:

Unicorn Lab

Analyse DNA sequences and fingerprints, and find the suspects using our algorithm!


Built With

Share this project:

Updates