How it works

How AI journaling actually works (and where it fails)

Mann TeamMZEUS LABS LLP, Pune
7 min read

If you have a healthy suspicion of "AI" being slapped onto every product, this post is for you. We're going to walk through, in concrete terms, what happens between the moment you write an entry in Mann and the moment a reflection appears on your screen, and where the seams are.

What you actually send us

When you finish writing an entry in Mann, your phone does three things, in this order:

  1. Encrypts the full entry with AES-256-GCM, using a random 256-bit key it generated the first time you used Mann. That key lives in your phone's keychain, iOS Keychain or Android Keystore. We never receive it, so we have no way to read your entries or move them for you. Nothing about your password touches this key, which is also why we can't recover it for you.
  2. Computes a 100-character preview of your entry, in plain text. It powers your own timeline view, and it's also what a few lighter AI features (your daily quote, memory nudges, and weekly patterns) read instead of your full entry.
  3. Uploads the encrypted blob (gibberish to us), that plaintext preview, and a handful of plaintext bookkeeping fields the app needs to work: your mood for that entry, word count, which entry mode you used, and similar metadata. None of it is your writing itself.

That's your entry, at rest: the encrypted blob, a short plaintext preview, and that bookkeeping metadata, never your writing itself in the clear. It isn't the whole story, though. The moment you finish an entry, its full text goes to Gemini in flight for a safety check that runs on every entry so Mann can recognise a crisis. If you're within your daily reflection allowance, or you have Premium, that same full text goes again, in parallel, to write your reflection and to check what Mann should remember for next time, three calls running together, not one after another. The same safety check and generation happen if you tap Go Deeper mid-entry (Premium only). None of those passes is stored on our servers once they return.

What happens server-side

Our backend stores the encrypted blob, the plaintext preview, and that bookkeeping metadata, and forwards your entry text to Google Gemini for the safety check and, when applicable, the reflection and the memory check. Gemini is a large language model, the same family of model behind ChatGPT and Claude. We pay Google for API access, which means what we send is processed under a paid contract that prohibits Google from using it to train models. (You can read the specifics in their Generative AI Terms.)

When we do send your entry text, we send Gemini three things: the entry text itself, a system prompt that gives Mann its personality and Indian context, and a short list of things you've told it before, factual one-line notes like "rishta meeting on Sunday", not the raw text of old entries. Mann writes those notes itself, from what you wrote, while it's producing a reflection, and you can read or delete every one of them at Profile → "What Mann remembers". A separate, lighter channel sends Gemini your recent entries' plaintext previews instead, the same preview already on your timeline, to write your daily quote, your memory nudge, and your weekly patterns; none of those calls sees your full entry text.

Gemini sends back a few short paragraphs. We forward them to your device, where your phone encrypts them again before storing. Now even the AI's response sits as ciphertext in our database.

Where it gets specific

The system prompt is what makes Mann Mann. We're not publishing the real one (it's longer than a pull quote could show, and it keeps changing as we learn), but here's a fair paraphrase of what it asks for:

A warm AI journaling companion for Indian users, one that understands joint family dynamics, career pressure, arranged marriage anxiety, the concept of izzat, and urban Indian burnout. Mixes English and Hindi naturally when it fits (Hinglish). Never diagnoses. Never gives medical advice.

We also tell the model the names of two specific helplines, iCall and Vandrevala, to surface if your entry contains crisis language. We rewrote this prompt in August 2026 after testing showed the old version leaning generic and over-explaining, and we re-run that same test suite, a fixed set of realistic sample sessions built for this purpose, before any wording change ships. We can't test on your entries. They're encrypted, and we couldn't read them if we wanted to.

Where it fails

Three places, honestly:

1. Generic responses

The most common AI failure is generic-sounding empathy. "It sounds like you're going through a tough time" is not a journal reflection. It's a chatbot trying to fill space. We've told Mann the opposite of what you might expect: quoting your own words back to you, even with the phrasing softened, counts as writing nothing. Every reply has to add something that wasn't already on the page, an implication you didn't draw, a contrast you didn't put side by side. When it doesn't, we treat it as a bug and tune the prompt.

2. Pattern-matching that's wrong

Mann remembers, but memory is not understanding. It might notice you wrote about your manager twice in a week and conclude there's a "pattern of work stress." Maybe. Or maybe two unrelated days felt the same way for completely different reasons. Treat the pattern callouts as starting points, not verdicts. You are the author. The AI is a careful reader, not the editor.

3. The hard stuff

If you write about self-harm, abuse, or thoughts of suicide, Mann is not equipped to help you. It will surface crisis numbers, but it cannot replace a human who knows you. We are explicit about this in the app, and we have an in-app screen with iCall, Vandrevala, and NIMHANS contacts that's one tap from anywhere. Please use them. Mann is a journal, not a therapist.

Why we use Gemini specifically

We didn't run a four-way bake-off. We picked Gemini 2.5 Flash because it already worked in asia-south1, and later research into an alternative provider confirmed there's no India or APAC processing region available for it today, only US and EU, which would have meant sending your entry text out of the country. We did bench several Gemini configurations against each other before locking in the current setup:

  • It's fast: reflections land in roughly a second and a half, Go Deeper faster still.
  • It supports the Indian languages we need natively, including Hindi, Tamil, Telugu, and Bengali.
  • Its safety filters catch self-harm language without drowning every entry in false alarms.
  • The reflection and Go Deeper calls run in asia-south1 (Mumbai). Two heavier features that need deeper reasoning, your weekly patterns and the weekly report, run in us-central1 instead; that's the tradeoff for the model those need.

Could we self-host an open-source model? Maybe, eventually. We've wired up a path to benchmark Llama on our prompts and haven't run it yet; it's ready for whenever the case gets stronger. We'll revisit every six months.

What we'd like to do next

Two things, honestly:

  • On-device reflection. The dream is to run a small reflection model directly on your phone, so your entry text never has to leave it at all, not even for a moment. Apple's on-device foundation models are getting close. We'll switch the moment quality is comparable.
  • Multi-entry insights. Right now, Mann reflects on one entry at a time. The weekly report stitches a week together. We want monthly and quarterly views: a way to see how a story arc actually moved across your life.

If you have a question about how the AI works that we haven't answered, send it to hello@mannjournal.app. We'll publish the answer.

Want to start journaling tonight?

Mann is free to download. Unlimited journaling, no credit card.

Download on the App StoreGet it on Google Play