Inspiration
As students dealing with exam stress, we tried guided meditation videos and apps. We'd often finish a session and realize we'd spent most of it thinking about deadlines and didn't notice many benefits to meditating. After a while, we gave up.
Guided meditation videos and apps don't notice when you drift off, and they don't bring you back. TIDE follows your breathing and your experience with meditation to guide you in real time toward a great session. As you improve, it teaches you to notice your own drift, then gets out of the way.
We're not alone. When people count their breaths, they catch only 29% of their own slips; most lapses go unnoticed (Levinson et al., 2014). And meditation apps keep a median of just 4.7% of users after 30 days (Baumel et al., 2019). Meditation has no scoreboard, so nobody can tell whether they're getting better. TIDE gives it one.
What it does
Prop your phone up, close your eyes and meditate. No headband, no wearable: just the camera.
- Sees your breathing: your breath rate and rhythm, how still you are, your posture and the tension in your face, read contact-free and drawn as a live Calm Map of when you settled, drifted and came back.
- Asks how you feel, out loud: a calm voice asks "Focused, or drifting?" You answer with your eyes closed. TIDE compares your answer with what the sensors saw and tells you the result by voice. Over sessions, your self-awareness score shows whether you're getting better at noticing your own mind.
- Speaks on your breath: cues are timed to the start of your next inhale or exhale, not to a clock.
- A coach that designs your next session: two AI agents analyze each session, find your patterns ("your first drift came at 1:29") and design the next one, with a cue placed just before you usually drift. Every technique cites a real research paper, shown as "Why this session".
- Support that fades: as your self-awareness improves, the coach removes cues, so you learn to do it yourself and don't come to depend on the app. If you start drifting again, support comes back.
- A breath-counting focus test: a validated mindfulness measure. Count breaths 1 to 9 and tap each one; TIDE checks your count against the breaths the camera actually saw, which the original keypress-only test never could.
Video never leaves your phone; only numbers are sent. TIDE is a wellness and training tool, not a medical device.
How we built it
- Computer vision (on the phone): MediaPipe Pose and Face Landmarker run in the browser. We turn shoulder and chest motion into a filtered breath wave, then into breath rate, regularity, stillness, posture and a state (settling, focused, drifting, restless) against each person's own baseline.
- Voice, both directions (Cartesia): Sonic 3.6 speaks every cue, question and reply in a slow, calm voice. Every line of a session is generated during the 30-second paced-breathing check and cached, so nothing waits on the network once your eyes are closed. Ink 2 hears your answer with semantic turn detection (it waits through an "uh…") and keyterms for words like "focused" and "drifting". The microphone only listens during the answer window.
- The coach (CREAO): two agents on agent.creao.ai, running on Claude. The Session Analyst pulls the session from our backend and runs Python (numpy, scipy) to find drift onsets and score self-awareness. The Coach & Plan Designer reads your history and our research library, and designs the next session as JSON: cue times, Feel Check times, technique, length and fading level, with every claim citing the sessions behind it. A full analysis-and-plan cycle takes 78–135 seconds, so it runs between sessions, never during one.
- The research library (Apify): our own Actor searches Europe PMC and PubMed for breath-focused meditation, mind wandering and breath counting, keeps only on-topic papers (relevance rules, with tests) and refreshes daily. The coach can only cite papers from it: a plan that cites nothing from the library is rejected.
- The nervous system (Convex): live readings stream in about once a second; the laptop's coach view updates in real time; scheduled functions start the coach; HTTP endpoints serve the agents their tools and receive their plans by webhook; vector search finds "sessions like this one"; full-text search powers the research library; file storage caches the voice lines; a cron refreshes the research. Every API key lives in Convex.
- Claude: reads spoken answers that keywords can't place ("I'm floating" → drifting, live, in 1–2.5 s), and runs both CREAO agents. TIDE was also built with Claude Code.
- App: React, TypeScript and Vite, installable from a link, hosted on Vercel.
Challenges we ran into
- A breath signal from an ordinary camera. Shoulders move only a few pixels per breath at arm's length, about as much as the tracker's own jitter. We combined landmark motion with chest-region motion and filtered it to the breathing range, then checked ourselves against a circle paced at exactly 6 breaths per minute.
- An agent that takes minutes inside a product that reacts in milliseconds. CREAO runs don't stream, so the coach loop is fully asynchronous: scheduled start, webhook delivery with polling as a backup, a progress card, retry on failure, and the plan arriving on screen by itself.
- An interface for people with their eyes closed. Voice had to work both ways, never pick up its own voice, survive a noisy hall and handle silence. iOS only plays audio after a tap, so the last tap before you close your eyes unlocks sound and asks for the microphone.
- Keeping the coach honest. Our first research library let in papers about neonatal intubation and ice hockey. We added relevance rules and made Convex reject any plan that doesn't cite a real paper from the library.
- Being honest about the data. If the camera fails, TIDE says the reading is simulated instead of faking it, and answers it can't score are marked "not scored", never "wrong".
Accomplishments that we're proud of
- The whole loop works, live, on a real phone: camera → spoken Feel Checks → Calm Map → two CREAO agents → a new session designed for you, in about two minutes.
- A "Coach off" switch that proves the point: without the agents there's no plan, no insight and no fading, just a breathing graph.
- The coach adapts: in our own sessions it moved its cue to just before our first drift, reduced support when our answers matched the sensors, and brought it back after a drift.
- Real voice, eyes closed: Ink 2 heard our answers and Claude correctly read the fuzzy ones, in a hackathon hall.
- Research the coach can't make up: 154 cited papers, and plans that are rejected if they don't cite one.
- Built to work on judging day: an offline replay mode in case the Wi-Fi drops, and 104 automated tests.
What we learned
- Detecting drift and training awareness are different problems. The useful measurement isn't what the sensors see; it's the gap between what you feel and what they see.
- Agents belong outside the real-time loop. Keeping CREAO between sessions made the meditation instant and the coaching deep.
- Grounding beats prompting. Restricting the coach to a cited library, and enforcing it in the backend, is what stops it inventing techniques.
- Eyes-closed design changes everything: timing, audio, permissions and feedback all had to move from the screen to your ears.
- Data can surprise you. We scraped 484 one-star reviews of meditation apps expecting complaints about "not working". Most were about bugs, paywalls and billing (71%). So TIDE has no paywall and nothing to cancel.
What's next for TIDE
- A 4-week pilot with students, mirroring the 4-week breath-counting training in Levinson et al.: breath-counting accuracy and self-awareness at week 0 and week 4, plus retention against the 4.7% baseline.
- Coaching around exams, with shorter, more frequent sessions during finals week.
- Calendar booking, so the coach schedules your next session at your best time of day.
- Sign-in and a production deployment, and a comparison of camera and depth sensing.
Built With
- apify
- cartesia
- claude
- claude-code
- convex
- creao
- europe-pmc
- face-landmarker
- ink
- javascript
- mediapipe
- numpy
- pose-landmarker
- pubmed
- python
- react
- react-router
- scipy
- sonic
- typescript
- vercel
- vite
- vitest
- web-audio
- websockets
Log in or sign up for Devpost to join the conversation.