The Inspiration Behind Luniloom Through personal experiences and community observations with our team members, we discovered that people often need a safe outlet to express their emotions when facing stress at different stages of life. Yet they frequently feel helpless because friends and family cannot provide pure listening and companionship. This prompted our team to explore how we could effectively support these individuals. We observed that since the emergence of large language models (LLMs), some people have begun venting their emotions and sharing their feelings with these models. This discovery greatly inspired us to create an application that could genuinely accompany users—unlike confiding in family or friends, where biases or time constraints might prevent achieving the ideal listening and companionship. Drawing from our firsthand experience as Taiwanese software developers, we know that long working hours often lead to accumulated workplace stress and significantly diminished motivation. After a tiring day, many people find themselves engrossed in social media or binge-watching shows late into the night—habits that not only delay sleep but also worsen emotional states. We recognized this cycle is common yet existing apps felt overly clinical or generic. Leveraging our interest in AI and LLM development, we aimed to create a more engaging, personalized companion app. Guided by a cute black cat mascot, it helps users express emotions and practice self-care without the stiffness of traditional mental health tools, fostering better habits.
What We Learned Developing Luniloom taught us valuable lessons in AI integration—including image generation workflows, prompt role boundaries, safety protocols, and user-centered design. This implementation highlighted the importance of memory systems in AI: we used PostgreSQL's pgvector extension to persistently store vector data from user interactions, ensuring conversations feel coherent and personalized. Development-wise, we leveraged our expertise to design backend API architecture and frontend usability, particularly when handling sensitive data like emotional logs. The frontend, limited to an iOS app built with Swift, delivers an intuitive and efficient mobile experience. Conducted App Store SEO keyword research (e.g., “stress management”) to optimize visibility. Additionally, managed social media channels (X, Instagram, Threads) to strengthen brand community engagement through user story sharing and interactions, while gathering feedback for continuous app improvement.
How We Built This Project Luniloom was developed as a full-stack mobile application. The backend, built with Golang, handles efficient API processing, database management, and AI component integration. Embedded technology analyzes user input to generate personalized mood reports. The frontend is exclusively for iOS, built with Swift to provide an intuitive interface for guided exercises. The entire experience features a playful black cat mascot to keep interactions lighthearted. For sustainability, we built image generation workflows and implemented PostgreSQL's pgvector to store and retrieve user memories, enabling the AI to reference past moods for recommendations.
Challenges Encountered A primary hurdle was fine-tuning the AI's emotional responses to feel authentic yet non-clinical, requiring multiple iterations of prompt engineering and testing to avoid generic outputs. Balancing privacy—ensuring emotional data security while enabling persistent memory—demanded careful architectural choices. Integrating the AI image generation workflow proved challenging, particularly in refining prompts to prevent unreasonable outputs. This involved repeatedly testing the generative model's boundaries to ensure images aligned with the app's lighthearted, positive style. Finally, rewriting the brand narrative to emphasize authentic pain points like workplace motivation decline and social media habits required multiple refinements to resonate without suppressing the playful mascot's personality.
Log in or sign up for Devpost to join the conversation.