CareAi is a therapy platform that connects therapists with patients through video consultations, chat, AI-assisted analysis, and interactive EMDR sessions in one secure mobile experience. The product was built for European users, so performance, privacy, and GDPR compliance were part of the core engineering work from day one.
Choosing the Right Video Solution
Video calls were the backbone of the app. The requirement was not only stable video streaming, but also speech-to-text transcripts for multilingual support in English and French. I evaluated a few options and landed on Agora because it provided reliable video infrastructure and STT support without forcing us to build the media layer from scratch. For STT, I had to create an Agora agent that joined the call, captured the live audio, and sent the transcription to S3 for storage and real-time display. After some trial and error, it worked smoothly, giving therapists live transcripts they could reference during sessions.
Building Real-Time EMDR
One of the most exciting features was EMDR—Eye Movement Desensitization and Reprocessing. For therapists, this meant guiding patients through specific visual and auditory patterns to help process trauma. I needed it to be fully interactive and controlled from the therapist dashboard. Since our app already relied on socket-based communication for real-time features, EMDR could leverage that. On the therapist’s web dashboard, they could adjust a slider or click buttons to control the EMDR animation—dot direction, color, speed, sound, and background. Each update was sent as a JSON payload over the socket connection. The patient, connected in the same video session, received the update instantly. Their app updated the EMDR state in real time. It worked beautifully. Therapists could show, hide, or change EMDR patterns instantly during a session. Patients experienced seamless, real-time guidance, just as if they were in the same room.
AI-Assisted Therapy
I also built an AI assistant that could use previous session context and live transcription from the video call. It helped summarize key points, highlight potential concerns, and make therapy sessions easier to review later. The goal was not to replace therapist judgment, but to reduce manual note-taking and keep important context from getting lost.
GDPR and Data Security
CareAi was primarily built for European users, so sensitive medical data, security, and compliance were non-negotiable. I encrypted data at rest and in transit. Patient identifiers were replaced with aliases, so even if internal records were exposed, direct patient identity would not be leaked. GDPR compliance influenced how I designed every feature—from chat to transcription storage. It slowed us down initially, but it was worth it.
Challenges with iOS Build
Everything worked in simulators, but the App Store build exposed a different problem: AgoraRTC bitcode errors on iOS.
I tried the common forum solutions for stripping bitcode, but none of them worked in our Expo setup. After debugging on an M1 Mac, I realized the script was modifying the local iOS folder, which Expo regenerated and ignored during the real build. I moved the fix into a post-build Expo script. After Expo ran pod install, the script stripped bitcode from the AgoraRTC framework automatically.
Problem solved. It was a good reminder that release engineering issues are often hidden between multiple tools, generated folders, and build-time assumptions.
Looking Back
CareAi reinforced how much production mobile work sits outside feature code. The real delivery risk was spread across real-time media, sockets, privacy controls, cloud storage, and App Store build behavior. Getting those pieces stable was what turned the app from a working prototype into something ready for client testing.
Key Results
- Real-time EMDR sessions fully controlled from therapist dashboard
- Multilingual live transcription integrated via Agora STT
- AI assistant for session analysis and knowledge retrieval
- Secure, GDPR-compliant handling of sensitive medical data
- Resolved iOS AgoraRTC bitcode issues with post-build Expo script
- Fully functional app deployed to App Store and Play Store for client testing

