Another Day
A journaling app with mood, emotion, and energy tracking, a guided composition flow, and an AI reflection that gets sharper the more you write into it.
Role
Tools
Timeline
Highlights
- Designed and solo-built a full-stack journaling app using Lovable, Cursor, and React, utilizing Notion as a headless backend so users retain complete ownership and portability of their private data.
- Engineered a context-aware AI reflection engine that uses structured inputs (inline tags, mood tracking) and a week of history to replace generic AI affirmations with a single, highly specific daily journaling prompt.
Why I built it
Another Day was my first Lovable project—the one where I figured out I could actually build my own software. I had been using the Daily Bean app to log my days but was rapidly outgrowing it (one of the mood options was "pit-a-pat," which... what?). I picked it as a meaty project to vibe-code on.
The premise was to build a better Daily Bean. But as I built it, the app pushed me into a deeper question I'm still thinking about: What is an LLM actually good for in the most private corner of someone's life?
Problem
To answer that, I had to solve two stacked problems:
The Blank Page. Most journaling apps replace a physical blank page with a slightly fancier digital blank page, and you stare at it until the motivation to journal evaporates.
The "AI Therapist" Trap. When you finally do write, AI in this space tends to default to generic affirmation ("That sounds hard, I'm here for you") or, worse, eager pop-diagnosis.
I didn't want a therapist. I wanted the equivalent of a friend who has read your last few entries and asks you one really good question.
Challenges
A reflective companion is exactly two notches away from feeling deeply intrusive. Most of the real product work on this app didn't happen in the UI; it happened in the system prompt. I had to carefully constrain the LLM to prevent it from diagnosing or summarizing, forcing it to focus entirely on curiosity and contextual synthesis.
Solution
I designed the app to solve the "blank page" problem through structured UX, which in turn solved the data problem for the LLM.
Guided Composition. A flow walks you through mood, emotions, energy, and the day's activities. Crucially, I built rich-text entries with inline people/place/event tags. This ensures the model has structured, categorized data to work with, rather than just a wall of free-form text.
Reflection Engine. The AI pulls from the last week of entries to ask one specific follow-up question. The longer you use it, the better and sharper its questions get.
Data Ownership. I used Notion as the back-end. A journaling app demands ultimate privacy, so the history remains entirely portable and owned by the user.
Visual Patterns. A color-coded calendar heat map surfaces emotional and energy patterns over time.
What I learned
The most interesting thing an LLM can do isn't answering; it's asking. What I thought I was building was a better habit tracker. What I ended up with was a setup that hands an LLM a week of my own context and lets it ask me one specific thing I'd otherwise skip. The first version's question was generic. By the tenth entry, the prompt was sharper than anything I would have asked myself.
Structured UX is the best prompt engineering. If you only give an LLM free-form text, it struggles to weigh what matters. By building inline tagging and specific mood/energy flows into the UI, I forced the user to structure their own data before the LLM ever saw it. Better UX inputs led directly to better AI outputs.
In private spaces, AI needs context to earn its keep. Generic LLMs are practically useless for private reflection. They only become genuinely useful once they have enough historical data to be specific about you. Earning the right to hold that data (by using a transparent Notion backend) is the prerequisite to delivering the AI value.