Key points
- โWe built and shipped a sentiment-analysis model on raw journal text, then pulled it eighteen weeks later โ it was 'accurate' but explained nothing a user could act on.
- โPattern detection runs on structured tags (mood, sleep, trigger categories) users choose themselves, not on parsing free-text entries, which keeps every insight explainable in plain language.
- โAny pattern surfacing over journal content requires explicit, separate consent from basic journaling โ writing privately and letting YouMindo analyze what you wrote are two different permissions.
A journal is a strange thing to build a feature around. The whole point, for most people, is that no one else is reading it. So when we set out to make YouMindo's journal 'notice patterns' โ surface something like 'your entries mention trouble sleeping most often after conflict with family' โ we were building directly against the grain of what makes journaling feel safe in the first place.
We shipped three different approaches before landing on the one that's live today, and the first two taught us more about what not to do than anything we read going in. Each version got tested with real users for at least a few months before we admitted it wasn't working and moved to the next one โ which is slower than getting it right the first time, but journaling turned out to be a feature where the wrong instinct is easy to have and hard to notice until you've watched people actually use it for a while.
Version one: a text box and nothing else
The earliest journal was exactly what it sounds like โ a title, a body, a save button, and a reverse-chronological list. Users liked it. Retention on the feature was fine. But it produced nothing we could build on, because free text has no structure to reason about. If someone wrote about a bad night's sleep, that information existed only as words a computer couldn't responsibly interpret.
The sentiment-analysis mistake
Our first real attempt at 'noticing patterns' ran a sentiment model over entry text and plotted a positivity score alongside mood check-ins. It shipped. It was reasonably accurate against our validation set. And it was almost useless to users, because a declining sentiment line doesn't tell you anything you can act on โ it just tells you that you sound sadder than you did last month, which you often already knew. We pulled the feature eighteen weeks after launch.
Landing on structured tags instead
What we built next asked less of the model and more of the user, upfront: when you save an entry, you optionally tag mood, sleep quality, and one or more triggers from a list you can extend yourself. It's a small amount of extra friction at write-time. In exchange, every pattern the app surfaces later is built from choices the user made consciously, not inferences a model made about their words โ which means we can always explain exactly where an insight came from.
What the pattern engine actually does
The pattern engine looks for correlations across tags over time โ sleep quality dropping on the days after a specific trigger appears, mood consistently lower following entries tagged with a particular category. It doesn't read the prose at all unless a user has separately opted in to deeper analysis. When it does surface something, it says so directly: 'entries tagged with work stress have coincided with lower sleep scores in 7 of the last 9 occurrences' โ not a mysterious downward trend.
Consent as two separate questions
We treat 'I want to journal' and 'I want YouMindo to analyze what I write' as two entirely different permissions, asked at different times. The first is the default the moment you open the feature. The second is opt-in, explained plainly, and revocable at any point โ turning it off doesn't delete anything you've written, it just stops the pattern engine from running over new entries going forward.
The false-pattern problem
With enough entries, correlations appear that mean nothing โ coincidences that look like patterns because humans are pattern-seeking by nature and small sample sizes are noisy. We set a minimum-occurrence threshold before the engine will surface anything at all, and every surfaced pattern is phrased as an observation to consider, not a diagnosis. 'This might be worth noticing' reads very differently from 'this is your trigger,' and we chose our language for that difference on purpose.
Too many prompts, too soon
An early version of tagging asked seven questions at save time: mood, sleep, energy, appetite, social contact, exercise, and triggers. Completion rates on tags dropped by more than half compared to the three-question version we tested against it. We cut it down to mood, sleep, and triggers โ the three signals our clinical advisors said carried the most weight โ and left the rest as optional, collapsed by default.
What surfacing actually looks like day to day
In practice, most users never see a surfaced pattern in a given week โ the engine is deliberately quiet, and it only speaks when it has something specific to say, based on enough entries to be worth mentioning. When it does appear, it's presented in the entry list itself, not as a notification, so it's there when you're already reflecting rather than interrupting you when you're not, which was a small placement decision we spent longer on than it probably deserved.
What we still get wrong
The tags only capture what someone remembers to tag, and people under stress are often the least likely to fill in five optional fields carefully. We know the pattern engine's picture of a hard week is incomplete for exactly the users whose weeks are hardest. We haven't solved that, and we're wary of any fix that adds friction back in to compensate.
Why the friction is worth it
A journal that quietly analyzed everything you wrote might produce sharper insights than one that only reasons over what you deliberately tag. We decided that trade wasn't worth it. The version we built is a little less powerful and a lot more honest about what it's doing with your words โ and for something this private, that trade is the one we'd make again.
Marcus Webb is a former senior engineer at Headspace and Google. He co-founded YouMindo with a focus on building tools that support both clients and clinicians.