Why I Built Duskglow
A mobile-first PWA for nightly gratitude journaling, powered by an AI companion named Luna. Built solo from architecture to deployment.
I've struggled with sleep for my whole life. Insomnia, bedtime anxiety, waking up at 3 AM and staring at the ceiling for an hour. The kind of sleep problems that don't just stay in the bedroom. They follow you through every hour of your day. Less focus, less energy, weaker memory, shorter patience. I knew that fixing my sleep would improve almost everything else, so I started working on it. Exercise, diet, supplements, meditation, morning sunlight, warm showers before bed. I tried all of it.
Most of it helped. I spent months learning and practicing meditation and mindfulness, which made a real difference in my overall awareness and emotional regulation. But one thing kept undermining the progress: I couldn't turn my brain off at night. I'd lie in bed running through the day. What I did, what I didn't do, what needs to change, why certain things happened the way they did. My mind would replay and analyze on a loop. My body was ready for sleep. My mind wasn't.
Journaling Sounded Right. It Didn't Feel Right.
I started journaling. I already had a physical notebook where I'd jot down thoughts throughout the day: things I wanted to remember, ideas I needed to process. But pen and paper had problems. Writing by hand was slow. Finding something I wrote three weeks ago meant flipping through pages. And the most common advice I got about journaling ("just do a brain dump, don't think about it") felt almost impossible for me.
My default mode is to analyze before I act. Think before I speak. That's how I've operated for years as a product and program manager. Asking me to "not think about what I'm writing" is asking me to fight my own wiring. I didn't need less structure. I needed the right kind of structure, something that could meet me where I am and help me go deeper instead of wider.
I also realized I preferred talking about my day over writing about it. Voice felt natural. Pen and paper didn't.
The Builder's Instinct
I've spent the last year and a half learning about AI: the models, the tools, the applications. I've spent nearly a decade in product and program management solving operational problems, building frameworks, identifying process gaps, and shipping solutions. At some point the obvious question hit me: why am I not applying these skills to my own problem?
I had the tools. I had the knowledge. I had a problem I understood deeply because I lived it every night. So I started building.

When It Started to Click
The first version felt like talking to Google. I'd type something about my day and get a response that could've come from any general-purpose AI chatbot. It was polite, validating, and completely generic. It made me ask a question that reshaped the entire product: why would anyone use this if they can just talk to ChatGPT or Gemini directly?
That question forced me to get specific about what journaling actually is, and what it isn't. And it's what led me to build Luna.
Luna is Duskglow's AI companion. The name Duskglow came from what the experience is meant to feel like: dusk, the natural transition to rest and winding down, paired with the warm glow of gratitude and positive reflection. Luna exists to guide that experience. But she had to be fundamentally different from a general-purpose AI. Most mainstream models validate by default. They agree with you, tell you what you want to hear, and require specific instructions to behave differently. Expecting someone who's trying to wind down for bed to prompt-engineer their journaling experience adds friction to what should be the easiest part of their night.
So I went back to what I actually valued about journaling, and let those principles shape what Luna became:
- Reflection over guidance. I don't want an AI telling me what to do. I want it to help me explore what I'm already thinking and feeling. Luna asks questions and reflects back. She doesn't give advice or try to solve your problems.
- Privacy as a foundation. If people don't trust the journal, they won't be honest in it. And without honest entries, it's useless. That's why trust has to come first.
- Light structure to go deeper. Not a brain dump. Not therapy. Just enough of a nudge to help me dig into the why behind what happened today.
- Organized recall. Being able to find what I wrote, when I wrote it, and what patterns are emerging over time.
- Gratitude as a sleep tool. Research suggests gratitude journaling can help with serotonin regulation and emotional settling before bed. I wanted that baked in, not as a gimmick, but as the core frame.
These weren't abstract product requirements. They were problems I was trying to solve for myself every night.

Safety and Privacy Demanded the Most Engineering
Around the same time I was building, I was reading stories about people becoming dangerously attached to AI companions. Models reinforcing destructive behavior. People turning to chatbots for emotional support they should have been getting from therapists or from the real people in their lives. I knew that if I was building an AI that talks to people at their most vulnerable (alone, in bed, processing their day), I had to take safety seriously from day one.
This became the product decision I'm most proud of. I didn't bolt on safety features after the app was built. I designed the entire experience around guardrails, privacy, and responsible AI principles:
- Luna's personality framework uses three tones (Reflective Listener, Warm Companion, and Gentle Coach), each designed to help users reflect, not to create dependency. Luna doesn't give life advice, diagnose problems, or pretend to be a therapist.
- Crisis detection runs before every AI response. If a user expresses something that suggests they may be in danger, Luna delivers a safe harbor message with real resources. Every time, without exception.
- An adversarial test suite stress-tests Luna against 50 scenarios designed to break her out of her role: manipulation attempts, requests for medical advice, attempts to use her as a therapist, jailbreak-style prompts. Luna passes all of them.
- Layered data protection means entries are tied to authenticated accounts with row-level security. I don't read user entries as part of normal operations. The privacy policy, terms of service, and an onboarding disclosure screen were drafted before the first beta tester signed up.
- Regulatory awareness includes research into CA SB 243, the NY AI Companion Law, and WA HB 2225. These bills will define how AI companion products must operate, and I'm building toward compliance now rather than retroactively.
The PM and PgM Lens
Building Duskglow drew on almost every skill I've developed over the past decade.
Product management shaped what got built and why. I defined the problem statement and built features directly around it, not the other way around. I created a product vision and decision frameworks grounded in the specific problems I was solving. I researched how people actually use journaling apps, what they need, and where existing tools fall short. I mapped out the compliance requirements before writing the first line of code. I evaluated and selected the right tools for each layer of the stack (Cursor for code, Supabase for backend, Vercel for deployment, Gemini for AI), optimizing for two things: cost-effectiveness at this stage of the build, and the flexibility to migrate to different tools as the product grows without being locked into a stack that can't scale with it. And I worked in continuous iterations: build, test, gather feedback, refine. It's the same instinct that led me to build a custom onboarding dashboard at PayPal to reduce operational friction between siloed teams: identify the real problem, scope a focused solution, and ship it.
Program management shaped how efficiently it got built. I built process improvement into the build itself by finding the right workflow for each phase, automating where possible, and streamlining operations to minimize manual work and human error. I automated code testing through a Python-based test suite that runs all 50 test cases against the Edge Function in minutes. I leveraged AI tools to semi-automate daily tasks and ran weekly workflow evaluations to identify what was slowing me down and fix it. It's the same drive that led me to overhaul PayPal's onboarding feedback loop from manual to automated, cutting support tickets by over 50% and reducing manual tasks by 25%. Different context, same principle: if a process has friction, I find a way to remove it.
Does It Work?
Honestly? Yes, when I remember to use it. I'm still building the habit. What I've found is that journaling with Luna at least an hour before getting into bed makes a noticeable difference. Getting my thoughts out, reflecting on them with some structure, and ending on gratitude helps me settle in a way that just lying there thinking never did.
I'm not going to pretend I've solved my sleep problems completely. But I've experienced enough of a difference to know the approach works, and to know that the next challenge isn't the product. It's the habit. How do I keep people coming back, night after night, when building a new routine is hard? That's the product question I'm working on now.
Where Duskglow Is Now
Duskglow is live and in beta testing. The core experience (a nightly guided gratitude journal powered by Luna) is fully built and functional. Luna responds with warmth and structure, helps you explore your thoughts without overstepping, and organizes your entries so you can revisit them later.
I'm currently recruiting beta testers to use Duskglow for a week and share feedback on what works, what doesn't, and what's missing. If you've ever struggled with sleep, bedtime anxiety, or just getting your thoughts out of your head at the end of the day, I'd love for you to try it.
Key Decisions
- Crisis detection that bypasses the LLM entirely
- 50-test adversarial suite, 100% pass rate
- Compliance architecture for 3 emerging AI laws
- CCPA-compliant data export, age gate, disclosure
Stack
React · Tailwind CSS · Supabase (PostgreSQL + Edge Functions) · Gemini 2.5 Flash · Vercel