Why I Built PuffinVBT
By Gunnar S. Knudsen · · 9 min read
I’ve been lifting for about a decade. Powerlifting for most of that. I know what RPE is, I know what a training block looks like, and I have a pretty good idea of how to structure a program. None of that has stopped me from making the same mistake over and over: ignoring what my body is telling me because my ego has a louder voice.
This is the honest version of why PuffinVBT exists.
The RPE Problem (Mine, Specifically)
I am not good at RPE. I know the scale. I understand the concept. But when I’m standing over a loaded bar and I just hit a set that moved well, something in my brain rounds down. That RPE 9 becomes an 8. That 8.5 becomes a 7.5. And suddenly I’m adding weight or doing another set when I probably shouldn’t be.
It’s not that RPE is a bad tool. It’s that I’m a bad user of it. My ego edits the signal before it reaches my training log.
I know I’m not the only one. Every lifter I train with has some version of this. The ones who sandbag and always call RPE 9 on sets that were clearly an 8. The ones who inflate and call RPE 7 on sets where they were grinding. We all have a bias, and most of us don’t even realize it until we see the video back and think, “huh, that was slower than I thought.”
The Coaching Lesson
I’ve been coached for several years now. Every coach I’ve worked with has started with RPE-based programming. And every single one has eventually switched me over to fixed weight ranges, or even specific weights for my working sets. Not because RPE doesn’t work as a system, but because it doesn’t work for me specifically. I’m too stubborn. I’m too affected by the mood of the day. On a good day, I push when the program says stop. On a bad day, I sandbag because the bar “felt heavy” even though it moved fine.
There’s a strange moment in coaching where you realize your coach knows your body better than you do. They see the patterns across weeks that you can’t feel session to session. They know that when you say “RPE 7,” it was probably an 8.5, and they program accordingly. It works, but it means the coach is compensating for my inability to self-assess, rather than me actually getting better at it.
Giving a coach an objective measurement of performance on any given day changes the conversation. Instead of “how did that feel?” followed by my unreliable answer, the velocity data just says what happened. The coach can autoregulate the program based on actual bar speed, not my ego-filtered perception of bar speed. That’s a better tool for both sides.
What Velocity Curves Revealed
I started looking at velocity curves in more detail, and noticed things that neither I nor my coaches had picked up from video alone.
One example: on heavy squat sets, my velocity curve showed a consistent dip just before the sticking point. Not the sticking point itself, but a deceleration slightly below it. Looking more carefully at the video alongside the data, it became clear my lower back was giving in slightly at that position, causing the bar to slow before my quads and hips could take over. It wasn’t visible to the eye as an obvious technique fault. It showed up as a small hitch in the velocity trace.

That kind of insight — a weak point invisible on video but clear in the data — convinced me velocity tracking isn’t just a “numbers for the sake of numbers” exercise. It reveals things you can act on.
Numbers Don’t Lie
Bar speed is not subjective. A rep that moves at 0.28 m/s moved at 0.28 m/s regardless of how it felt, how much sleep I got, or how badly I want to believe I’m stronger than last week.
That’s what attracted me to VBT in the first place. Not the fancy training protocols or the autoregulation theory (though those are useful). Just the simple fact that the number on the screen is the number. I can’t talk myself into a faster bar speed. I can’t round it down. The data holds me accountable in a way that RPE, for me, does not.
When I started tracking velocity alongside RPE, I noticed patterns I’d been blind to. Sessions where I logged RPE 7 but the bar was moving at what my history clearly showed was RPE 9 territory. Weeks where I thought I was progressing because the weight felt easier, but the velocity data was flat. And occasionally, the opposite: sessions I wrote off as bad days where the bar was actually moving faster than the week before. I just couldn’t feel it because I was tired or distracted.
The load-velocity profile made it concrete. Plot mean velocity against weight across months of squat, bench, and deadlift sessions, and a clean regression line falls out — tight enough to back out a velocity-based 1RM estimate for each lift.

The velocity data didn’t replace RPE. It corrected it. It gave me a second opinion that didn’t have an ego.
The Sensor Problem
Once I was convinced VBT was useful, I tried the existing tools. The experience was not great.
I bought two expensive linear position transducers. They worked. The numbers were reliable. But they were cumbersome. Another gadget to pack in the gym bag, another thing to travel with when training at a different gym, and frustrating to set up and tear down between sets. More often than not, I’d forget them at home or just decide the hassle wasn’t worth it on a given day. Expensive devices sitting in a drawer are not collecting data.
The accelerometer-based options didn’t inspire confidence either. The readings felt inconsistent, and I could never be sure if a wonky number was real or a measurement artifact.
I tried a few phone-based apps that used the device’s own accelerometer or basic video analysis. Some gave okay results, but they were clunky to actually use. I had an older phone at the time, and doing the computation on-device left it locked up and overheating for minutes after every set. That’s a non-starter when you’re trying to train and check data between sets.
And none of those solutions fixed the other problem I cared about: having my lifts cataloged. Even when I did manage to get velocity data, I still had to manually maintain spreadsheets to track progress over time. There was no single place where my videos, my velocity data, and my training history lived together.
The Thesis
I’m doing my Master’s in data science. When it came time to pick a thesis topic, the overlap was obvious. Computer vision, barbell tracking, velocity extraction. Take a phone video, detect the weight plate, track it frame by frame, and compute the same metrics a hardware sensor gives you.
The research question was straightforward: how accurate can you get with just a phone camera, no sensor? The answer, after a lot of model training, ellipse fitting, and signal processing: accurate enough to be genuinely useful. Not a toy. Not a rough estimate. A real, validated measurement, tested against a reference sensor across hundreds of training videos.
PuffinVBT is the product that grew out of that research. The thesis gave it the scientific backbone. The product gives it a reason to exist beyond a PDF that sits on a university server.
The Camera Roll Problem
There’s a second, less technical reason I built this.
I film a lot of sets. Thousands of videos per year. They all go into my phone’s camera roll, mixed in with photos of food, screenshots, and pictures of my cats. When I want to find a specific squat set from three months ago to compare it to today’s session, I’m scrolling through an ocean of unrelated content trying to find the right 15-second clip.
I wanted a place where my training videos lived separately, organized by exercise, date, and load. Where I could pull up every squat set from the last 8 weeks and see the velocity trend without exporting anything. Where a coach could look at my lifts without me sending clips over WhatsApp and hoping they don’t get buried in the chat.

Compare that to what I actually wanted:

PuffinVBT is, at its core, that organized training library with velocity analysis attached. Upload the video you were going to film anyway. Get it sorted, analyzed, and stored somewhere you can actually find it again.
The Numbers Guy Thing
I track things. Training logs, bodyweight, sleep, caffeine intake, how many reps I did at what weight on what day in 2019. It’s just how my brain works. Spreadsheets make me calm.
VBT fits into that worldview perfectly. It takes something that used to be purely feel-based (how fast did that rep move?) and turns it into a number you can put in a column, graph over time, and compare across sessions. For anyone else who prefers data to vibes, it’s the missing piece of the training log.
I built PuffinVBT because I wanted it. I wanted objective bar speed from my phone videos, organized in one place, without buying another sensor that ends up in a drawer, without fiddling with hardware, without maintaining spreadsheets by hand. The fact that it’s also my thesis, also a product, and also useful for other lifters is a bonus. But the original motivation was selfish. I built the tool I wanted to use.
If that resonates with how you train, you might like it too.
PuffinVBT is free to start, no sensor required. Just film your set and upload.