Account-able
Your camera is your coach: real-time rep counting, form scoring and heart rate, no wearables required.
Inspiration
A lot of us work out at home, facing the same problem: without a trainer, no one calls you out when your form slips or you start slacking off. Sure, you can look in a mirror, but a mirror won't tell you your heart rate, check your posture, or guide your movement. Personal trainers cost a fortune, smartwatches only see your wrist, and basic apps just count reps. We wanted real accountability. Using just your laptop camera, Account-able analyzes your posture, provides real-time feedback, and even educates you by highlighting the exact muscle groups activated during every exercise.
What it does
Account-able turns your webcam into a personal coach. It automatically recognizes exercises like squats, push-ups, bicep curls, jumping jacks and crunches, counts your reps, and scores the form of each rep based on range of motion, left/right balance and tempo. It also reads your heart rate from your face through the camera without any wearable, and tracks your rest between sets. Everything comes together on a summary dashboard with an Effort score based on time spent in each heart-rate zone, a breakdown of your movement quality, a heart-rate curve for each workout, a muscle heatmap, and a personal tip telling you what to focus on next. Your video never leaves your browser; only the numbers are saved.
How we built it
We built the frontend with React, Vite and Tailwind CSS, using a custom "liquid glass" visual design. Body tracking runs in the browser with Google's MediaPipe Pose, and we turn the joint angles it produces into exercise detection, rep counting and per-rep form scores. Heart rate and breathing rate is measured using Presage's vital-signs analysis. Our Flask backend stores workouts, sets and heart-rate readings in Tiger Data (TimescaleDB), using a time-series table so readings can be queried quickly over time. Auth0 handles sign-up, log-in and protected pages, so each user's workout history stays private.
Challenges we ran into
Our biggest challenge was that the camera needed to see two different things at once. Heart rate is read from your face, so it works best when you're close to the camera, but exercise recognition and rep counting need your whole body in frame, so you have to stand back. When you stood far away, your face became too small to read a pulse, and when you moved closer, we could no longer see your movements. To bridge that gap, we located the face using the same body-tracking points we already use for counting reps, so we could still find it with your full body in view. We then smoothed its position from frame to frame, cancelled out the color changes caused by head movement, and only read heart rate when the face was large enough to be reliable. Finding the balance between being close enough for your pulse and far enough for your body took a lot of testing.
Accomplishments that we're proud of
We're proud that we built a full coaching experience that runs on nothing more than a laptop camera. Instead of just counting reps, Account-able scores the quality of every rep, and our Effort score is modeled on the heart-rate-zone scoring used by famous fitness platforms. We're also proud of our polished, responsive dashboard, with a liquid-glass design, a background tinted by your camera, and controls that stay out of the way until you need them. Above all, we kept privacy at the center of the design, since your video never leaves your browser. But what we’re most proud of is how far we came to build it: all of us are strangers, for three of us, this was our first hackathon ever, two of us have never visited the University of Ottawa before the hackathon, one of us literally downloaded Git for the first time yesterday.
What we learned
We learned how to use Git and GitHub as a team, working on separate branches, merging through pull requests, and resolving conflicts when two people changed the same file. We learned real-time computer vision with MediaPipe Pose and OpenCV, and how to turn joint angles into meaningful fitness data. We discovered how camera-based heart-rate measurement works and how sensitive it is to lighting, distance and movement. We also learned to store time-series data with Tiger Data (TimescaleDB), add secure login with Auth0, and build with React, Tailwind and Flask, while designing a data dashboard that's clear, accessible and works on both phones and desktops.

Log in or sign up for Devpost to join the conversation.