Steady
Practice surgical motion anywhere. Just a laptop, a webcam, and your hands.
Inspiration
Surgical skills are built through repetition.
The problem is that getting that repetition can mean expensive simulators, specialized hardware, limited lab time, or having an instructor available.
We kept coming back to one question:
Why can't you practice meaningful surgical motion from your own laptop?
That became Steady.
What it does
Steady turns a laptop webcam into a surgical motion trainer.
You choose a skill like needle passing, suturing, knot tying, or laparoscopic peg transfer and practice inside a 3D operating room using your hands to control virtual surgical instruments.
Before you start, an expert ghost generated from established surgical training datasets and expert-recorded motion trajectories demonstrates the movement.
Steady then compares your attempt against that reference across:
trajectory · precision · smoothness · wrist rotation · speed · timing · efficiency · coordination
During practice, you can get short voice corrections.
Afterward, Steady overlays your movement against the expert in a synchronized 3D replay, highlights the biggest deviations, and explains what to work on next.
We did not want to build something that just gives you another score.
We wanted you to actually understand how you moved differently.
What mattered most to us was making that kind of practice accessible.
Surgical simulation can depend on VR systems, physical trainers, dedicated labs, sensors, or other expensive equipment.
Steady needs:
a browser · a webcam · your hands
We are not trying to replace instructors or clinical simulation. We want to make the practice that happens between those sessions much easier to access.
That loop became the core of Steady:
watch → practice → measure → understand → repeat
How we built it
System architecture
┌─────────────────────────────────────────────────────────────────────┐
│ Steady │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────────────┐ │
│ │Skills Library│ │3D Operating │ │Learn / Practice / │ │
│ │+ Progress │ │Room │ │Assessment │ │
│ └──────────────┘ └──────────────┘ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Webcam Motion Tracking │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────────────────────┐ │
│ │MediaPipe │ │Natural-Pose │ │Filtering + Hand-to-Tool │ │
│ │Hands │ │Calibration │ │Mapping │ │
│ └──────────────┘ └──────────────┘ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌───────────────┴────────────────┐
▼ ▼
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ User Motion │ │ Expert Motion │
│ │ │ │
│ ┌────────────┐ ┌─────────────┐ │ │ ┌────────────┐ ┌─────────────┐ │
│ │Virtual │ │Recorded │ │ │ │Expert Ghost│ │Reference │ │
│ │Instruments │ │Trajectory │ │ │ │ │ │Trajectory │ │
│ └────────────┘ └─────────────┘ │ │ └────────────┘ └─────────────┘ │
└────────────────────────────────┘ └────────────────────────────────┘
│ │
└───────────────┬────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Motion Evaluation │
│ │
│ Precision • Smoothness • Wrist Control • Timing • Coordination │
│ │
│ 20-D Performance Profile │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Tiger Data │
│ ┌────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │PostgreSQL │ │TimescaleDB │ │Continuous │ │Vector + BM25 │ │
│ │ │ │Hypertables │ │Aggregates │ │Search │ │
│ └────────────┘ └──────────────┘ └──────────────┘ └───────────────┘ │
│ │
│ Motion History • Progress • Similar Attempts • Coaching Context │
└─────────────────────────────────────────────────────────────────────┘
│
┌───────────────┴────────────────┐
▼ ▼
┌────────────────────────────────┐ ┌────────────────────────────────┐
│ AI Coaching │ │ 3D Replay │
│ │ │ │
│ ┌────────────┐ ┌─────────────┐ │ │ ┌────────────┐ ┌─────────────┐ │
│ │Structured │ │Retrieved │ │ │ │User + │ │Paths + │ │
│ │Feedback │ │Context │ │ │ │Expert │ │Deviations │ │
│ └────────────┘ └─────────────┘ │ │ └────────────┘ └─────────────┘ │
└────────────────────────────────┘ └────────────────────────────────┘
│
▼
ElevenLabs Voice
Our core stack:
Frontend Next.js • React • TypeScript
3D Three.js • React Three Fiber
Vision MediaPipe Hand Landmarker
Motion One Euro Filter • Quaternions • Custom Evaluation
AI Gemini 2.5 Flash • Structured Outputs • Retrieval
Voice ElevenLabs
Data Tiger Cloud • PostgreSQL • TimescaleDB • Hypercore
Search pgvector • pgvectorscale • pg_textsearch
One rule mattered from the beginning:
AI explains the movement. It does not grade it.
The scores come from our own motion analysis.
How Tiger Data powers Steady
Tiger Data is what turns Steady from a one-time webcam demo into a real training platform.
Every attempt generates high-frequency instrument positions, rotations, errors, scores, exercise segments, and coaching events at roughly 20–30 samples per second.
We store that motion stream in TimescaleDB hypertables.
Then Continuous Aggregates turn all of those raw samples into progress over time:
best scores · average scores · precision trends · coordination trends · recurring weaknesses
We use Timescale hyperfunctions for p50 and p95 motion deviation, time-weighted errors, time buckets, and downsampled motion charts.
Every attempt also becomes a 20-dimensional performance vector.
Using pgvector and pgvectorscale, Steady can find previous attempts with similar movement patterns.
So instead of only saying:
“Your wrist rotation was late.”
Steady can eventually say:
“You've made this same mistake before. Here's how you're improving.”
We also use pg_textsearch with BM25 to retrieve the most relevant coaching material for the exact error our evaluator detects.
As the motion history grows, Hypercore lets us keep older telemetry efficient for analytics without throwing away the history.
Tiger gives Steady its:
motion history · progress analytics · vector similarity · coaching retrieval · long-term memory
Without Tiger, Steady can analyze one attempt.
With Tiger, it can understand how someone is developing across all of them.
How AI coaches the user
We did not want an AI model watching movement and guessing whether it looked right.
Steady calculates the motion first.
The AI receives the actual measurements, largest deviations, weakest metrics, similar past attempts, and relevant coaching material retrieved from Tiger.
It then turns that into concise feedback like:
“Your entry position was accurate, but your wrist rotation happened too late through the second half of the movement.”
ElevenLabs delivers selected feedback through voice so the user can stay focused on the surgical field.
The model explains the measurements.
It never invents them.
Challenges we ran into
The hardest part was making webcam controls actually feel natural.
At first, users had to hold their palms toward the screen.
It tracked well.
It also felt nothing like surgery.
We rebuilt calibration so users can keep their hands naturally down over a desk, with their starting posture becoming the neutral position for the instruments.
We also spent a lot of time balancing jitter against latency.
Too little filtering feels unstable.
Too much filtering feels like you are fighting the tools.
Accomplishments we're proud of
Steady works as one connected loop:
webcam → virtual instruments → expert ghost → motion analysis → Tiger Data → AI coaching → 3D replay → progress
And it does all of that with hardware people already own.
The part we are most excited about is that the system does not forget what happened when an attempt ends.
Every session becomes useful data for the next one.
What we learned
A good AI coach needs good evidence.
Instead of asking a model to guess whether someone's movement was correct, we calculate the motion first and let AI explain what the data already shows.
We also learned that one score only tells you so much.
A history of motion can tell you what keeps going wrong, what is getting better, and what you should work on next.
What's next
We want to add more surgical skills, improve our expert motion references, and work with surgical educators to understand which measurements matter most.
We also want instructors to be able to create their own exercises and eventually connect individual skills into larger procedure pathways.
Steady started with a simple idea: meaningful surgical practice should not depend on having access to expensive hardware.
Built With
- backboard
- drei
- elevenlabs
- google-gemini
- indexeddb
- mediapipe
- next.js
- numpy
- postgresql
- python
- react
- react-three-fiber
- shadcn/ui
- tailwind-css
- three.js
- tiger-data
- timescaledb
- typescript
- zod
- zustand
