DEV Community

Diven Rastdus
Diven Rastdus

Posted on

I Built a Journal App That Organizes Your Thoughts With AI

I Built a Journal App That Organizes Your Thoughts With AI

Most journal apps give you a blank page and wish you luck. You open the app, stare at the cursor, try to remember what happened today, type something half-hearted, close the app. Repeat for three days. Then stop.

The problem isn't motivation. It's design.

Why people stop journaling

After researching 13 journal apps (Day One, Notion, Obsidian, Rosebud, Reflect, Apple Journal, and more), the same four problems kept showing up:

1. The blank page. Opening an empty page with no context about your day kills the habit. You're reconstructing your entire day from memory before you even start writing.

2. Organization anxiety. "Where does this note go?" If you have to think about categories, folders, or tags before writing, you won't write.

3. No reward loop. You write entries but never see patterns, insights, or growth. It feels like shouting into a void.

4. Disconnected from your life. Your day happened across 5 apps. None of that context shows up in your journal.

The fix: dump and organize

Arc Smart Journal works differently. You dump whatever is on your mind. Text, voice, sticky notes. No title, no folder, no category. Just write.

Then AI takes over.

Every entry gets processed through a two-pass Gemini pipeline (I wrote about two-pass LLM processing in a previous article). The first pass classifies the entry independently. The second pass cross-references against your existing notes to find threads, connections, and patterns.

The output:

  • Auto-categorization. Your entry about "the project deadline is stressing me out, also need to buy milk" gets tagged: PROJECTS, PERSONAL LIFE.
  • Action item extraction. "Buy milk" and "call the dentist" become checklist items. No manual entry.
  • Thread detection. You wrote about the project 4 times this week. The AI groups those into an ongoing thread with a synthesis.
  • Connection discovery. You mentioned sleep quality on Monday and productivity on Wednesday. The AI connects them.
  • Pattern recognition. "You tend to write about work stress on Sundays."

Killing the blank page

The capture screen never starts empty. It pulls context from three sources:

Calendar. Using expo-calendar, the app reads your device's synced calendars (Google, Apple, Outlook, whatever you use). The placeholder shows: "You had 3 meetings today. Design review at 2pm. How's the project going?"

Location. expo-location provides your city. Saved on each note for context. "You were in Brisbane when you wrote this."

Weather. Open-Meteo API (free, no key needed) adds weather context. "22 degrees, partly cloudy." Small detail, but it anchors the memory.

Together, these solve the blank page. Instead of "What's on your mind?" you see "You had a busy morning with 3 meetings. Your calendar is clear this afternoon. How are you feeling?"

The architecture

Expo 54 (React Native)
  |
  +-- expo-router (file-based routing)
  +-- expo-calendar (device calendar access)
  +-- expo-location (city/coordinates)
  +-- expo-speech-recognition (voice capture)
  |
  +-- Supabase (auth + postgres + edge functions)
  |     |
  |     +-- journal_entries (content, mood, location, weather, theme_tags)
  |     +-- insights (threads, connections, patterns, forgotten ideas)
  |     +-- action_items (AI-extracted todos)
  |     +-- life_map_nodes (hierarchical topic tree)
  |     +-- entry_themes (note-to-topic links)
  |
  +-- Gemini 2.5 Flash (AI processing)
        |
        +-- Pass 1: classify each entry independently
        +-- Pass 2: cross-reference all entries for relationships
        +-- Action item extraction
        +-- Theme/topic assignment
Enter fullscreen mode Exit fullscreen mode

The key design decision: AI processing runs asynchronously. You write and save instantly. The AI processes in the background and updates your insights. This means capture is always fast. The intelligence comes later.

Mood tracking without the burden

Five options: struggling, uncertain, steady, hopeful, alive. One tap. Optional. No sliders, no scales, no writing prompts about your feelings.

Over time, this builds a mood trend chart. A simple line showing how you've felt over the last 30 days. The patterns surprise people. "Your mood consistently dips on Sundays" or "You've been trending upward since you started exercising."

Voice dumps

The killer feature for people with ADHD (a massive underserved market for journal apps): record a 5-minute voice ramble. The raw transcript appears. Then tap "Organize" and the AI restructures it.

A scattered 5-minute voice note about groceries, work stress, and an idea you had in the shower becomes 3 clean notes with 2 action items. Your voice, your words, just structured.

The mind map

Every note you write adds to a visual map of your thoughts. Topics, sub-topics, connections. You can view it as a traditional tree or switch to a force-directed 2D graph where related topics cluster together.

This is the "second brain" that PKM tools promise but require hundreds of hours of manual linking to achieve. Arc builds it automatically from your writing. Zettelkasten results without Zettelkasten effort.

What I learned

The blank page is the real enemy. Not motivation, not features, not design. If the first thing a user sees is emptiness, they'll close the app.

AI organization beats manual organization. People don't want to build systems. They want to dump thoughts and have the system emerge.

Mood tracking works when it's one tap. The moment you add complexity (scales, journaling prompts, mandatory fields), people skip it.

Context is free value. Calendar, weather, location cost almost nothing to implement but make every entry feel richer.

Action item extraction is the dream feature. Every user I talked to said some version of "I wish my journal could create todos for me."

Stack

  • Expo 54 + expo-router 6
  • TypeScript (strict mode)
  • Supabase (auth, postgres, edge functions)
  • Gemini 2.5 Flash (AI processing)
  • react-native-svg (graph visualization)
  • react-native-chart-kit (mood trends)
  • expo-calendar, expo-location (context)
  • Open-Meteo (weather, free API)

The full app is about 30 files of TypeScript. No complex state management. No Redux. Supabase handles persistence, Gemini handles intelligence.


I build production AI systems. If you're working on AI-powered apps, I'm at astraedus.dev.

Top comments (0)