Skip to content
All projects

ai mental health companion · flutter, onnx, ml kit

MindHeal

An AI mental-health companion that reads emotion on the device, so nothing personal has to leave the phone.

MindHeal — on-device ai mental health app case study cover

Overview

Private by construction

On-device intelligence, not a cloud round trip

MindHeal runs emotion recognition locally with ONNX Runtime and Google ML Kit, then wraps the result in mood tracking, journalling and guided support. Because inference happens on the device, the sensitive part of the experience works without shipping a face or a voice to a server.

The problem

Emotion recognition normally means sending a face or a voice to a server. For mental-health support that is exactly the wrong shape: the data most worth protecting is the data the feature needs.

The goal

Run the sensitive part of the experience entirely on the device, and wrap it in something supportive rather than clinical — so the product is useful without asking anyone to trust a server.

How it was built

  1. 01Discovery

    Starting from what must never leave the phone

    Mental-health data is the kind you design around, not for. I drew the privacy line first — inference on-device, nothing sensitive synced — and every later decision had to fit inside it.

  2. 02Development

    Fitting a model into a mobile budget

    Getting an emotion model to run smoothly inside a Flutter app meant working within a real memory and latency budget: quantised ONNX models, ML Kit for camera-side detection, and inference kept off the UI thread so the interface never blocks while a frame is processed.

  3. 03Strategy

    A companion, not a diagnosis

    The product deliberately stays supportive rather than clinical. Model output feeds reflection and tracking, and the copy throughout is careful never to present a prediction as a verdict about the person using it.

Project details

Role
Product design and development
Type
AI mobile application
Stack
Flutter, ONNX Runtime, ML Kit

Key features

  • On-device emotion recognition with ONNX Runtime and Google ML Kit
  • Camera-side detection that never uploads a frame
  • Mood tracking over time
  • Journalling and guided support flows
  • Copy written to inform reflection, never to deliver a verdict

Challenges

  • Fitting a model inside a mobile budget

    Running inference in a Flutter app meant working within a real memory and latency budget: quantised ONNX models, ML Kit handling camera-side detection, and inference kept off the UI thread so the interface never blocks while a frame is processed.

  • Staying supportive rather than diagnostic

    A model output is a probability, not a fact about a person. The harder problem was linguistic — every string had to present a reading as something to reflect on rather than a conclusion about the user, which constrained the interface as much as the technical budget did.

The Result

A companion app where the AI work happens on the device it belongs to — responsive in the hand, and private without asking the user to trust a server.

What I learned

Drawing the privacy line first — inference on-device, nothing sensitive synced — made every later decision easier, because anything that did not fit inside it was simply not an option. The genuinely hard part was not the model; it was writing copy that stays honest about what a prediction is.

Next projectLearnNova

Want something like this built?

Tell me what you have in mind and I will come back with a plan, a timeline and a price.