Overview
Moodly is a discovery platform built around a simple idea: what people want to do or watch often depends on how they feel right now. Instead of making users search or scroll through generic lists, it asks about their mood and suggests experiences and content that fit. We designed and built it as a full-stack AI application, aimed at people who want a suggestion rather than a search box.
The Challenge
Recommendation systems usually rely on past behaviour, which says little about a person's current state. Mood is also expressed in many ways, from a single word to a rambling paragraph, and people rarely use tidy labels. The product had to understand that input, turn it into recommendations that feel relevant, and do so quickly enough that the interaction stays light. It also had to keep AI output structured and predictable, because free-form text cannot be laid out neatly in an interface.
Who Uses It and How
A typical visitor arrives with no plan. They type a sentence such as how their day went, or pick from quick mood options, and receive a set of cards. They can open a suggestion, save it for later or ask again with a different feeling. On the other side, the product team maintains the catalogue of experiences and content and tunes the prompts that interpret mood.
Our Approach
We put the language model at the centre of interpretation and kept everything around it deterministic. The user describes or selects a feeling, the model interprets it into a structured description of mood, and the application maps that to recommendations rendered as cards. Prompts constrain the model to a fixed output format, which the back end validates before anything reaches the screen.
What We Built
The application has a mood input experience, a recommendations view presenting experiences and content that suit the detected mood, and back-end services connecting them. The Vue.js front end handles interaction and refreshes results without full page reloads. The Laravel back end manages requests, calls the AI service, validates responses, and stores what the product needs, such as user accounts and saved preferences.
Architecture and Data
The flow is request, interpret, match, render. The browser sends the mood text to a Laravel endpoint. Laravel calls the model with a prompt that asks for a fixed structure, for example one or more mood labels, an intensity and a few descriptive tags. That result is validated against a schema; if the shape is wrong, the request is retried or falls back to a safe default rather than showing broken output. The validated mood then queries the catalogue of experiences and content, and the response is returned as JSON for Vue to display.
Security, Privacy and Quality
Mood text is personal, sometimes more than users realise, so we treat it as user data: collected only for the feature, sent to the model provider through server-side calls with keys never exposed to the browser. A mood app can attract vulnerable moments, so the design avoids presenting itself as advice or treatment. Testing covers the schema validation, the fallback behaviour, and a spread of realistic inputs, including short, ambiguous and mixed-emotion ones.
Technology
OpenAI provides the language understanding that turns a loose description into structured output. Laravel is a dependable base for the API, validation and storage. Vue.js gives a responsive interface for an interaction that should feel immediate and personal.
Outcome
Moodly gives users a different route to discovery: describe how you feel and receive suggestions that match. For the product team, the separation between mood interpretation and recommendation logic means new content types, new categories of experience and new prompts can be added without rebuilding the application.
Frequently asked questions
How much does it cost to build an AI recommendation app?
Cost depends on the size of the catalogue, whether recommendations come from your own data or third-party sources, the number of user features such as accounts and saved items, and ongoing model usage fees. Prompt design and testing take time because model output must be reliable.
How does an app use AI to understand mood?
A language model reads the user's text and converts it into a structured description, such as labels and intensity, which the application can act on. The important design point is that the model returns data in a fixed format that the server validates. The recommendations themselves are then chosen by normal application logic.
Is it safe to send personal feelings to an AI provider?
It depends on the provider's terms and how the app is built. Calls should be made from the server, only necessary text should be sent, and privacy policies should say plainly what happens to it.
Highlights
- AI interpretation of a user's current mood from free text or quick selection
- Mood-matched recommendations for experiences and content
- Structured, validated model output rendered as clean cards
- Full-stack application with Vue.js front end and Laravel API
- Prompt and recommendation logic that can grow without rebuilding the app