Inspiration

honestly, this whole thing started because of gabby beckford’s challenge. she talked about this massive "inspiration gap" -> you know that feeling where you have a huge dream, like traveling the world or quitting your job, but you just freeze? you get stuck waiting for permission or confidence.

I realized that ambitious women don't need another boring to-do list that makes them feel guilty. they need a friend. they need something that takes a scary, big goal and breaks it down into tiny, un-scary pieces. that’s why I built lumi. it’s not just a tracker; it’s a little ai companion that turns your life upgrades into an rpg adventure.

What it does

basically, lumi lives in your pocket and does the heavy lifting for your brain. here’s the flow:

  • the dream lab: you just type in something vague like "i want to trek the himalayas" and the app takes over.
  • the magic: our AI-powered engine takes that dream and instantly breaks it down into a roadmap of 100+ levels. it generates daily "micro-actions" that are actually doable.
  • the safety net: this is my favorite part -> if a task feels too heavy, you just click the "too hard?" text. the ai immediately deletes the scary task and generates a simpler, 5-minute version so you don't break your streak.
  • the rewards: when you finish tasks, you get coins. you use those coins in the shop to buy cute clothes and accessories for your mascot. it sounds silly, but it makes you actually want to do the work.

How I built it

I wanted lumi to feel like a high-quality game, not a web wrapper. so I went with a hybrid edge + local architecture.

  • kotlin multiplatform (kmp): I'm lazy in the good way, I wrote the complex game logic once and shared 95% of the code between android and ios.
  • google gemini AI: this is the brain. we use it via supabase edge functions to act as the "dream architect." it’s what turns "write a book" into "write one sentence."
  • revenuecat: monetization is usually a headache, but we used the revenuecat kmp sdk to handle subscriptions. it lets us offer a "Subscription" model without writing a bunch of backend validation code.
  • room database: everything is stored locally on your phone. this means the app is instant and works. I only hit the network when the ai needs to "manifest" new stuff.
  • compottie: I used this for the high-performance lottie animations so the celebration feels alive.

Challenges I ran into

the biggest problem was the "overwhelm" moment. in most apps, if you miss a hard task, you feel bad and quit. I had to engineer a solution for that specific moment of panic.

implementing the "too hard?" logic was tricky. I had to build a pipeline where the app grabs the rejected task, sends it to gemini with a "simplify this" prompt, and hot-swaps it in the ui without refreshing the screen. and pinning task, drag and adjust priority , leveling up in dream path journey screen, lumi's customizable clothing , streak , and onbaordings for personalization & all of this-getting that state management right in a multiplatform environment kept me up a few nights.

Accomplishments that I'm proud of

  • empathetic ai: I'm really proud that the ai feels like a coach, not a robot + mascot customization + personalized everything works so well.
  • seamless money stuff: integrating revenuecat into the kmp flow was surprisingly smooth. it just works.

What I learned

I learned that context is everything. if you give ai a generic prompt, you get generic advice. but when we started feeding AI specific user data from onboarding -> like their "struggle point" or how much time they have daily -> the micro-actions became surprisingly personal and effective. I also proved to myself that kotlin multiplatform is totally ready for complex consumer apps.

What's next for Lumi: AI Dream Achiever

  • voice manifestation: I want to use AI's multimodal stuff so you can just talk to lumi about your dreams.
  • more fashion + interior for mascot : I want to add as much options & customization as I can with it's according coins valuation so user never gets in a state where he drops value of the currency.
  • social quests: imagining "dream teams" where you and a friend can tackle goals together.

Built With

  • compose
  • compottie
  • console
  • kotlin
  • ktor
  • revenuecat
  • roomdb
  • supabase
Share this project:

Updates