Reflect — Mindful Journal, Powered by Gemini

The journal that actually
remembers you

Real-time streaming AI conversations, a psychological memory layer, sentiment mapped across every day of the month, and a security stack most SaaS products don't bother building. All in one calm, private space.

Reflect Daily Reflection interface
3
Gemini fallback tiers
90d
Secret rotation cadence
0
Client-exposed secrets
100%
UID-scoped isolation

Real-time reflection

Not a chatbot. A companion that streams alongside you.

SSE Streaming

Token-by-token, the moment you write

Every reflection streams live via Server-Sent Events straight from Gemini — no waiting for a full response, no spinner staring back at you. It feels like writing alongside someone who's actually listening.

  • Real-time SSE dialogue via /api/journal/chat-stream
  • Automatic 0–100 sentiment scoring on every entry
  • Curated prompt starters across five reflection categories
  • Live word count and reading-time estimates as you type
Daily Reflection with streaming dialogue
Memory Layer

A psychological profile that quietly grows with you

An asynchronous synthesis layer keeps a running summary of your themes, values, and growth — under 2,000 tokens, always current, injected into every conversation so replies build on your history instead of starting from zero.

Dark mode reflection with memory context

See your patterns, not just your words

A month of feelings, mapped in one glance

Sentiment Calendar

Every day, color-coded from Tender to Radiant

An interactive monthly calendar scores your average daily sentiment and paints it directly onto the grid — with mood emojis, reflection counts, and a full month-navigation flow. Click any day to expand its reflections inline.

Monthly Sentiment Calendar
Thematic Insights

Patterns that cite themselves

Gemini synthesizes recurring themes across your reflections — Mindful Rest, Creative Deep Work, Relational Warmth — each with a resonance score and direct links back to the exact entries that shaped it. No black box, ever.

Emotional Trajectory and Sentiment Balance
Notable Shifts

It notices when you change

Beyond static themes, Reflect surfaces the actual perspective shift underneath your entries — moving from performance anxiety to grounded self-compassion, for example — plus a recommended focus to carry into your next reflection.

Notable Perspective Shift and Recommended Focus

Beyond the journal

Gratitude, agentic nudges, and a Journal Archive built to search

Daily Gratitude

Three things, every day, quietly archived

A focused ritual separate from the main journal — three gratitudes and a reflection note, with a full searchable archive and streak tracking of its own.

Gratitude Archive
Cloud Scheduler Cron

Nudges that show up on their own

A secured cron endpoint, authenticated with dual-key rotation, runs on Cloud Scheduler to generate check-in prompts for users who've gone quiet — genuinely agentic, not just a reminder toggle.

Past Entries with Week Mood Breakdown
And there's more

Everything else, at a glance

🌍

Multilingual translation

Translate any historical entry natively via Gemini, in-line, without leaving the archive.

👤

Guest Mode sandbox

Full-feature exploration with zero sign-in — entries live in an isolated local sandbox, migrated to the cloud in one click when you're ready.

🔐

90-day PIN rotation

A salted SHA-256 local PIN lock with mandatory rotation, audit history, and an auto-lock inactivity timer.

📤

Multi-format export

Your full archive, portable — XLSX, Markdown, or JSON, whenever you want it.

🎯

Milestone celebrations

Streaks and entry milestones surfaced with subtle, satisfying toasts — never guilt-framed.

🌗

Light, dark & auto themes

Full OS-aware theming with prefers-color-scheme listening, plus Sans, Serif, or Mono reading typography.

📖

Weekly Recap

A standalone 7-day narrative digest, independent from the on-demand Insights engine.

♿

WCAG 2.1 AA

Focus traps, ARIA dialog roles, escape-key handling, and high-contrast pairings throughout.

📱

Mobile-first UX

A dedicated bottom navigation bar for true single-thumb use across phones and tablets.

Small moments

The details that make it feel considered

Sign-in landing page
A private, unhurried welcome
PIN lock setup modal
Optional PIN, entirely local
Daily affirmation modal
An affirmation, tuned to your context
Thought for Today quote modal
A quiet thought to open the day
Daily Gratitude entry screen
Three things, noticed
Insights sentiment balance
Balance, not just a score
Built like it matters

Security isn't a feature here. It's the foundation.

Every collection lives under users/{uid}, enforced by Firestore rules that deny everything else by default.

Zero client secrets
GEMINI_API_KEY and CRON_SECRET live in Secret Manager only, injected server-side, never bundled to the client.
ABAC document isolation
request.auth.uid == userId enforced on every read/write, with an explicit deny-all catch-all beneath it.
Server-authoritative memory
Clients can never dictate or poison the RAG context — the backend fetches profile summary and recency window directly.
Zero-downtime secret rotation
Dual-key cron authentication lets CRON_SECRET rotate every 90 days without dropping a single scheduled job.
Sanitized, capped inputs
User text is length-capped and inserted strictly as the user turn, resisting prompt-injection attempts.
Recursive account purge
Permanent deletion removes every subcollection and the Firebase Auth identity — nothing left behind.

Your reflections deserve a memory this good.

No account needed to start. Full feature parity in Guest Mode, synced to the cloud whenever you're ready.