Frida is a mobile app designed to help people living with schizophrenia build and maintain stability — through mood and sleep tracking, medication adherence, journaling, an AI companion, and crisis tools. This is the engineering and product story behind it.
Why Frida exists
Most digital mental health products are built for anxiety and mild depression — the broad commercial market. People living with schizophrenia have access to far less. The available tools tend to be either clinical instruments built for researchers or generic mental wellness apps that don't acknowledge what schizophrenia actually is.
Frida is built around three principles:
- Calm tech. Mental energy is precious for people managing psychosis. The app should never demand attention it doesn't deserve.
- Honesty over engagement. No streaks designed to manipulate, no dark patterns. The goal is genuine usefulness, not daily active users.
- Clinical credibility. Every feature is grounded in published research or established clinical practice — and clearly labelled when it isn't.
The architecture
The mobile app is built with Expo / React Native, with a custom file-based router for navigation between tabs. State is managed via React Context where shared, with PostgreSQL as the source of truth and AsyncStorage as a local cache for offline functionality.
The backend is a TypeScript Express server that handles authentication (scrypt-hashed passwords, session-token model), data persistence, and the AI streaming endpoints. Everything that can be on the client is on the client; the server's job is to be a reliable record-keeper, not a smart application layer.
The AI companion (Frida)
The hardest part to build well. The AI companion has clear guardrails:
- It validates emotions but never validates delusional content
- It uses a grounding protocol when the user appears distressed or psychotic
- It detects crisis language and routes immediately to safety resources
- It does not give medication advice, diagnoses, or medical opinions
The implementation uses streaming completions over Server-Sent Events for the chat experience, with system prompts derived from CBTp principles and crisis intervention frameworks.
Subscription and trust
Frida is paid software. We chose RevenueCat for subscription management with three plans (annual with trial, monthly, lifetime). The reasoning: a paid model means the user is the customer, not the product. We don't sell data, we don't run ads, we don't have engagement metrics that depend on emotional manipulation.
What's coming next
This blog will cover specific engineering decisions in more detail over time — how we handle offline-first sync, our approach to clinical content review, and some of the harder product decisions we've made (and a few we got wrong). If you're building in this space and want to compare notes, reach out at shayan@coldai.org.