Inspiration
Before a dentist puts a crown on an implant, they need to know whether the bone has grown onto it (osseointegration). Load it too early and the implant can fail.
Devices that measure this, like the Osstell, cost a few thousand dollars and need special pegs. Some of that cost is fair, since companies pay for FDA approval and clinical testing. But clinics pass it on to patients, and many clinics skip the device and simply tap the implant with a mirror handle and listen by ear, which is a guess.
I wanted to know what these devices actually measure. At their core, they measure how firmly the implant is held. That signal can be heard. Healthcare should be affordable, so I tried to capture it with the cheapest sensor there is: a microphone.
What it does
- Tap test: Press Measure (or Space) and tap the implant 3 times. OsseoTap scores each tap and uses the middle (median) score, so one bad tap doesn't ruin the reading.
- Plain-language result: Red "Not ready," yellow "Healing," or green "Stable: ready to load," with an explanation.
- Sound analysis: Live waveform and frequency spectrum, showing the pitch rising as the bone gets firmer.
- Self-calibration: Tap a loose and a firm reference once, and OsseoTap adapts to any room, table or microphone.
- Healing curve: Tracks each patient over weeks, including the normal stability dip around weeks 2–4 while bone remodels.
- AI summary (Google Gemini): Writes a clinician chart note and a calm explanation for the patient.
- Hands-free voice (ElevenLabs): Reads each result out loud, so the dentist's hands can stay on the patient.
- Private: Runs entirely in the browser. API keys and patient data stay on the laptop.
How I built it
- Single HTML file with plain JavaScript. No install or server needed; open it in Chrome or Edge.
- Web Audio API captures the microphone with echo cancellation, noise suppression and auto-gain turned off, so the raw tap sound is preserved.
- Tap detection: An adaptive threshold above the background noise catches each tap and saves about 170 ms of sound.
- Signal processing: An 8192-point FFT (Hann window) finds the peak frequency (pitch), spectral centroid (brightness) and ring-down time (how long the ring lasts).
- Scoring: Each tap is projected onto the line between the calibrated "loose" and "fused" references, giving a 0–100 score.
- Google Gemini API for the clinical summary (JSON output) and ElevenLabs text-to-speech API for the voice, with the browser's built-in voice as a backup.
Testing
I used three blocks with a nail in each to stand in for an implant in bone at different stages:
| Block | Stands in for | Score | Result |
|---|---|---|---|
| Cardboard (loose) | Fresh implant | 15 | Not ready |
| Styrofoam | Soft, healing bone | 37 | Not ready |
| Wood | Fully fused bone | Green zone | Stable, ready to load |
OsseoTap ranked all three in the right order using a basic webcam microphone and a metal rod tapped by hand.
Challenges
- I started with an Arduino-driven automatic tapper (UNO R4 WiFi, servo, then a stepper-motor pendulum). The LCD screen was dead, so I switched to the board's LED matrix. The rented "servo" turned out to be a 2-wire DC motor, so I switched to a stepper motor. The mechanism kept getting more complicated.
- Then I realized the complicated machine was the very problem I was trying to solve. Pitch depends on how firmly the implant is held, not on how hard you tap, so I dropped the hardware and tapped by hand, the same way dentists already do.
- Real tap sounds are messy: rod bounces, table thumps and audio "enhancement" software (I had to turn off Nahimic's mic effects). Calibration and the median-of-3-taps rule made readings stable.
Accomplishments
- A working tap test that correctly ranked loose, healing and fused blocks.
- Turned a subjective "tap and listen" check into a number, using hardware every laptop already has.
- Built solo with no prior coding experience.
What I learned
- How osseointegration works, including the stability dip during healing.
- How sound can be turned into data with the FFT.
- Sometimes the best engineering decision is removing parts, not adding them.
What's next
My long-term goal is to make medical and dental equipment affordable for every clinic, not just the ones that can pay thousands of dollars. Many expensive devices measure simple physical signals like sound, vibration, light or temperature that everyday hardware such as phones and laptops can already capture. OsseoTap is my first step.
Next steps for OsseoTap:
- Validation: Test it head-to-head against an Osstell on bone-simulating polyurethane foam blocks.
- Consistent tapping: Add a small spring-loaded tapper so every tap has the same force, like the Periotest.
- More low-cost tools: Build the next module, a low-cost check of whether a tooth is still alive (pulp vitality), using the same approach.
Built With
- canvas
- css
- elevenlabs
- google-gemini
- html
- javascript
- web-audio-api
Log in or sign up for Devpost to join the conversation.