Inspiration

Traditional journaling is passive. You reflect, write, hit save — but nothing changes. Your entries don't connect to your goals, there's no feedback loop, and you have no way to see growth. We wanted journaling to feel like coaching, where every entry moves you forward.

What it does

Level Up transforms journaling into an interactive coaching experience. You write an entry, Claude AI analyzes it in real-time, extracts key themes, maps insights to your goals, and awards you XP and character trait growth based on your reflections. The app gives you four views: a visual path showing your journey, a live chat interface for journaling, a goals tracker to stay focused, and a progress dashboard to see your stats.

How we built it

Backend: FastAPI + SQLModel + SQLite (single-user optimization) Frontend: React with Zustand state management + Tailwind CSS + shadcn/ui components AI: Claude API for conversational analysis and personalized insights Deployment: Vercel (frontend) + Railway (backend) for seamless integration

We kept the architecture pragmatic: single responsibility for each component, clean separation between database models and API schemas, and minimal dependencies to stay fast.

Challenges we ran into

Claude API response parsing — Getting Claude to return valid JSON consistently required explicit prompts and error handling State management across tabs — Keeping streak count, XP, and goals in sync across 4 independent tabs without over-rendering Database design for flexibility — Modeling journal entries with variable message histories and computed stats (weekly streaks, trait scores) Deployment coordination — Configuring Railway for Python/FastAPI while Vercel handled React, with proper environment variables bridging both

Accomplishments that we're proud of

End-to-end working product — From ideation to live deployment in limited time Real AI integration — Not mock responses; Claude actually analyzes entries and generates insights Clean architecture — Separation of concerns with SQLModel, Zustand, and composable components paid off when features changed User feedback loop — The app gives immediate, personalized feedback on every journal entry, making the act of journaling feel rewarding

What we learned

Pragmatism over perfection — SQLite was the right choice for a single-user app; we avoided over-engineering State management matters early — Zustand's selective subscriptions prevented unnecessary re-renders API design is critical — Spending time on clean schemas (models.py vs schemas.py) saved debugging time later Backtracking concepts translate everywhere — Understanding permutations/combinations helped us think clearly about state trees and dependency graphs

What's next for Level Up

Multi-user support — Add authentication and share journeys with accountability partners Habit streaks — Extend beyond daily journaling to track specific habits (exercise, meditation, learning) Goal visualization — Add Gantt charts and milestone tracking so users can see progress toward larger objectives Trait evolution — Build a character-like progression system where traits unlock new journal prompts and coaching strategies Mobile companion — React Native version for quick journal entries on the go

Built With

Share this project:

Updates

Submission history