Have you ever felt overwhelmed, stressed and nearly breaking down in a public space such as work, school or a hospital, with nowhere to go?
I designed a solution to help.
AI product designer and design engineer. I design AI people can trust, starting with one they hand their nervous system to: a booth that reads a short check in, resolves it to one of ten regulatory states, and runs five minutes of coordinated light, spatial sound, guided breathing and scent.
In most products, a wrong read is a bad autocomplete. In this one, the system acts on your nervous system, so a wrong read is a breach. That is the real design problem underneath the calm surface, and everything on this page is a response to it.
Acute stress hits hardest in the places least equipped for it: universities, hospitals, offices, crowded public space, with nowhere to go. The tools that exist hand you a menu: pick a meditation, a soundscape, a length. That request is hardest to satisfy at exactly the moment it matters, because dysregulation degrades the metacognition needed to choose well.
People in distress can usually describe what is happening to them. They cannot reliably select the intervention that would help.
That pattern is from my years in behavioral therapy and crisis contexts, and it is what AuraPod inverts. The person describes their state in their own words. The system does the selection, shows its interpretation, and asks permission before anything runs. It intervenes at the level of nervous system state, not generic wellness content.
Every step below is implemented and ran live.
The person speaks or types a short check in on an iPad, alongside two plain language sliders for energy and sense of control. No clinical taxonomy to learn.
Gemini 2.5 Flash-Lite performs zero shot estimation of the check in onto the Pleasure, Arousal, Dominance dimensional model. I chose PAD over Russell's two axis circumplex because Dominance carries the sense of agency, which separates states that otherwise collapse together.
A deterministic weighted Euclidean resolver maps those coordinates to the nearest of ten regulatory states, with Dominance down weighted relative to Valence and Arousal. The estimate is probabilistic; what happens next is not.
The system mirrors what it heard in plain language and asks: does this feel close? Nothing runs without a yes.
Five minutes of coordinated light, spatial sound, paced breathing and a scent card, specific to the resolved state, projected and played through the booth. Pacing follows the music therapy iso principle: match the person where they are, move them gradually, then settle.
A results screen shows what was read and what was sent, a short exit check in marks how it landed, and a QR hands the reading to the visitor. Nothing stays behind.
The model places the check in inside PAD space. From there a deterministic resolver takes over, so a strange model output produces a slightly off session rather than an unpredictable one, and every session is auditable back to its coordinates. The person sees their own point in the space, in the product's plain language, not mine.
The tuned state coordinates and resolver constants stay private. The method does not.
An iPad frontend in vanilla JavaScript and Tailwind, a MacBook running the FastAPI backend over WebSocket, driving a projector and four sensory outputs. Over 140 automated tests cover the pipeline, resolver and orchestration. I taught myself Python and FastAPI for this build; AI coding tools were directed and verified by me, not run autonomously.
Ten named environments, each specifying light, sound, breath and scent, grounded in roughly 104 peer reviewed sources. Pick a state to compose its session live. Descriptions are qualitative; the tuned per state values stay private.
Neutral reset
This is the spine of the project. An AI that infers something as intimate as emotional state owes the person three things: to show its read, to accept correction, and to be honest about what it is and is not doing. Swipe through the shipped flow.
The original concept translated emotion into cross modal sensory experience for its own sake. It was the idea I was most attached to, and I could not ground its mappings in an evidence base I trusted. So I narrowed it: from expressing emotion through the senses to regulating emotion through them, where decades of research on light, sound, breath and scent could actually carry the weight. Everything defensible about AuraPod exists because the charming version died.
Kills her own darling when the evidence does not hold.
Dominance is the hardest PAD axis to infer from free text. Dropping it would collapse states that genuinely differ in sense of agency; trusting it fully would let a wobbly estimate cause misclassification. So it got a mechanism at both ends. In the resolver, it is down weighted so Valence and Arousal lead and Dominance breaks ties, with the weights kept as named tunable constants. And in the check in, it is asked for directly: a plain language slider, from out of my hands to something I can handle, gives the system a self report on exactly the axis it can least reliably infer. The exact values stay private.
Handles model uncertainty with mechanisms, not hope.
A Polar H9 heart rate integration over Web Bluetooth was specified and designed into the architecture. It was not reliably connected as demo day approached, and a half wired sensor on a live floor is worse than no sensor: it fails in front of people and contaminates whatever data it produces. I cut it, protected the core loop, and labeled the biometric panels In Development in the shipped interface rather than deleting them or faking them. The booth ran all day. The integration stays on the roadmap, where it belongs until it works.
Scope discipline under a real deadline, stated in the product itself.
I keep this distinction explicit because in health adjacent AI, overstating what a system does is a safety problem before it is a credibility problem.
AuraPod ran live at the Elisava graduate show, where more than forty first time visitors moved through complete sessions. The run was designed to test three things about the loop outside a controlled build environment.
The confirm and correct layer is built to turn that last question into data: every yes and every correction is a labeled point on classification accuracy. In this run, in line with the no storage stance, corrections were observed rather than persisted, so measuring resolver accuracy behind the opt in toggle is the first item on the roadmap. Visitor feedback was collected through a purpose built exit survey. The targets I set during design, including mood improvement figures and business model margins, are design goals, not validated outcomes. Nothing in this run was powered, controlled or blinded, and I do not present it as evidence of efficacy.