Inspiration

80% of Americans will experience back pain at some point. As college students, we sit 8-10 hours a day hunched over laptops (and the average age chronic back issues start is 21). Every posture app we found was just a notification that says "sit up straight" and you ignore it after a day. We figured if we made the consequences of bad posture annoying and funny enough... people would actually fix their posture! That's how PosturePoke started: a posture monitor with escalating punishments that go from a beep all the way to a servo that physically pokes you.

What it does

PosturePoke is a hardware device that clips to your collar and tracks your spine angle using a 6-degree IMU sensor in real time. When you slouch past a threshold, it triggers punishments that you pick on our clean, interactive desktop dashboard.

  • Beep: a simple warning tone
  • Fart Sounds: your laptop plays fart noises (great for the library)
  • AI Coach: you describe a character (drill sergeant, sassy grandma, etc.) and it generates a fully voiced AI coach that yells at you for slouching
  • The Poker: a servo-powered needle on the device physically pokes you

*if you're feeling vanilla (and because we want to adapt to every situation), one can also select "No punishment". We don't promote torture!

There's also a social system: you can add friends, see their sessions, share AI coaches between accounts, view your session history with charts, and share results to social media.

How we built it

The hardware side is an Arduino with an IMU sensor for reading pitch/roll and a servo motor for the poker. It streams posture data at 10 Hz over USB serial. The firmware is in uno/posture_poke.ino.

User experience was very important to us. Thus, on the software side, we used Next.js with the App Router, TypeScript, and Tailwind CSS. The key piece is the Web Serial API, which lets the browser talk directly to the Arduino over USB with no backend or Python server in between. Recharts handles session charts and Framer Motion handles animations.

For the AI coach feature, we chain two APIs: Google Gemini 2.5 Flash generates 10 in-character posture correction scripts based on a user's text description of their coach, then ElevenLabs designs a custom voice from that description and generates TTS audio for each script. This all runs through Next.js API routes.

Auth and data storage use Firebase (Google OAuth + Firestore) for user accounts, sessions, coaches, and the friends system.

Challenges we ran into

API calls were taking a long time to fetch. Thus, we implemented a "pre-fetch" system to store ten audio clips for each coach the user creates in advance (played randomly during "punishments").

The Web Serial API is not well documented and browser serial support is still pretty niche. Getting reliable communication across different USB serial chipsets took a lot of trial and error.

Sending servo commands (SERVO:90/SERVO:0) back to the device over the same serial connection we were using to read sensor data required careful message framing so the two wouldn't interfere with each other.

Calibration was also tricky! We needed a way for users to set their "good posture" baseline without exposing raw sensor angles, so we built a simple calibrate button that zeroes out the current position.

Accomplishments that we're proud of

  • There's no backend server at all. The browser reads directly from the Arduino over Web Serial and everything else goes through Next.js API routes. No Python, no WebSocket server, no middleware.

  • The poker works. A servo-powered needle that pokes you when you slouch sounds like a joke but it's a real physical actuator and it's honestly the most effective punishment.

  • The AI coach system turned out better than we expected. You type a description like "angry football coach" and you get back a fully voiced character that has 10 unique lines it cycles through. Users can also share coaches with friends, so the more people you add, the more coaches you have access to.

What's next for PosturePoke

  • Bluetooth support so the device is wireless and actually wearable without a USB cable (would be simple, we'd just require the hardware)
  • A mobile companion app with push notifications and posture stats
  • Weekly leaderboards and posture competitions between friends
  • More punishment types, like Slacking your groupchat or tweeting your posture score after certain violations
  • Using accelerometer patterns to detect specific bad postures (forward head, rounded shoulders) instead of just overall angle

Built With

Share this project:

Updates