Inspiration
Finding something new to watch, listen to, read, or explore is often harder than it sounds. Most recommendation platforms rely heavily on categories, popularity, or a single item you already like. But people's interests are rarely that simple. Someone who enjoys Beyoncé, Interstellar, and The Weeknd has a combination of tastes that goes beyond any one genre or category.
We wanted to build something that understands those connections. That idea led to Loom, a recommendation assistant that uses cultural preferences to help people discover things they might genuinely enjoy.
What it does
Loom helps users discover movies, TV shows, music, books, restaurants, destinations, and more through natural conversations.
Users can describe their interests in text, upload an image, or combine both. Loom can recognize entities from an uploaded image, such as a movie poster, and use them as references for recommendations when the user asks.
Recommendations are powered by Qloo, which analyzes relationships between cultural entities and user interests. Loom also supports follow-up requests, so users can refine their results, explore another category, or ask for more recommendations without starting over.
Each recommendation includes relevant information such as its title, image, description, Qloo affinity, and available taste signals that help explain why it was recommended.
How we built it
We built Loom as a web application using Next.js and TypeScript.
Qloo is at the center of the recommendation engine. We use Qloo Search to resolve user-provided interests into entities, then use Qloo Insights to find recommendations based on those entities and their cultural relationships.
Groq handles prompt interpretation and conversation context. It identifies the user's interests, determines the requested recommendation category, and understands whether a message starts a new topic or continues an existing conversation.
For image input, we use vision capabilities to identify relevant entities and describe the visual context. This information is then passed into the same recommendation pipeline used for text-based requests.
We also use Supabase for authentication and conversation history, allowing users to continue their conversations across sessions.
Challenges we ran into
One of our biggest challenges was making recommendations work with multiple interests at once. We did not want Loom to simply pick one entity from a user's message and ignore the others. We had to make sure that all resolved references were passed into Qloo Insights.
Another challenge was maintaining context across conversations. A request such as "Give me something darker" should refine the previous recommendations rather than be treated as an unrelated search.
Image input introduced another layer of complexity. We needed to distinguish between identifying an image and actually requesting recommendations based on it. We also had to make sure that combining an image with text did not lose the user's original intent.
Finally, we spent time working with Qloo's explainability data. We wanted to show why a recommendation matched someone's taste without inventing reasons or presenting general metadata as actual contribution scores. Understanding which signals Qloo exposes and how to interpret them correctly required careful testing.
Accomplishments that we're proud of
We are proud of building a working recommendation experience that combines text, images, and conversational context in one application.
Loom can resolve multiple cultural references, use them together in Qloo Insights, and return recommendations with affinity scores and available explainability data.
We are also proud that the application goes beyond a single recommendation request. Users can continue exploring, change categories, and refine their preferences through the same conversation.
Most importantly, Qloo is not just an additional API in Loom. It is the foundation of how recommendations are generated.
What we learned
We learned that building a useful recommendation system involves more than finding similar items. Understanding relationships between different cultural interests can produce a much richer discovery experience.
We also learned how important context management is when building conversational applications. The system needs to understand not only what the user says, but also what they are referring to.
Working with Qloo taught us how to resolve entities, combine interest signals, explore cultural relationships, and handle explainability data without making unsupported assumptions.
What's next for Loom
We want to improve recommendation relevance by refining how multiple taste references and weighted cultural signals work together.
We also plan to expand conversational refinement, improve recommendation explanations, and make image-based discovery more useful across supported categories.
Our long-term goal is to make Loom a place where people can explore their interests, discover unexpected connections, and find their next favorite thing.
Built With
- css
- html
- javascript
- react
- reactts
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.