
Joico Soft Skill Training
A WebVR training app where Joico employees practice client conversations with an AI-driven virtual customer.
01
The Brief
Joico wanted their staff to practice client conversations, both to onboard new stylists and to prepare experienced ones for difficult moments, like an unhappy client or questions that invite too much jargon. The goal was a safe place to practice as often as they like. It had to run in the browser on a Meta Quest 2 and still feel responsive, even though every reply passes through three AI services.
02
My Approach
The trainee plays a hairdresser doing an intake with Barbera, an AI client. There's no button, you just talk. The app hears when you stop, ChatGPT answers in character and the reply is spoken back to you. Barbera shows eight emotions, from happy to confused to angry, depending on how it's going.
Speed was the main challenge, so I moved the whole chain to a small server. The headset sends your recording once and gets the spoken reply back, which is faster and keeps the API keys off the headset. The audio starts playing while it's still being generated. Joico can tune Barbera's prompts in Google Sheets without a new build. A colleague made the art.
03
The Result
The training works in Dutch and English and runs on desktop, mobile and Quest 2. Each session ends with scored feedback on four skills, from communication to technical knowledge.
04
Outcome
The training is live and still used by Joico. Moving the AI pipeline to the server made conversations noticeably faster, and it's an approach I've carried into projects since.
03 / About
Concept first, medium second
I'm Ramon, a multimedia designer based in Eindhoven. Projects start with a problem: what the thing has to do, and how someone should move through it. The answer has been a 360 film, a VR walkthrough, an explainer animation, a configurator and an AI training platform.
My part is 3D, design and code: modelling and lighting in Blender, interface and motion in XD/Illustrator and After Effects, plus the build in PlayCanvas or Next.js.