Inspiration
Discovering something new often starts with something familiar. A favourite movie, artist, or book can reveal a lot about someone's interests, but most recommendation platforms treat these preferences in isolation.
We wanted to build an agent that connects these cultural signals and uses them to help people discover experiences beyond their usual recommendations. This led to OmniPulse × Qloo: a taste-aware cultural concierge powered by Qloo's Taste Graph.
What it does
OmniPulse lets users enter up to three cultural interests, such as movies, TV shows, artists, books, brands, or video games.
The experience works in a few steps:
- Discover: Searches Qloo to identify the entities matching the user's cultural references.
- Confirm: Lets users review and explicitly confirm the matched entities, avoiding incorrect assumptions.
- Understand: Uses the confirmed entities as taste signals for Qloo's Insights API.
- Recommend: Retrieves affinity-based recommendations across places, movies, and artists.
- Compose: Organizes the results into a personalized discovery experience, including an occasion-based ambient-scene preview.
An agent-style workflow coordinates these steps and exposes a trace of the tools and actions involved.
How we built it
We built OmniPulse as a lightweight full-stack application:
- Backend: Python and FastAPI handle API endpoints and orchestration.
- Taste intelligence: Qloo Search API resolves cultural references, while Qloo Insights API generates recommendations using confirmed entity IDs.
- API communication: HTTPX handles requests to Qloo, with response normalization and error handling.
- Frontend: HTML, CSS, and JavaScript provide the interactive experience.
- Deployment: Docker and a Render deployment configuration make the application ready for hosting.
- Quality: Pytest tests cover response normalization, affinity handling, unsupported entity types, and scene-preview behavior. GitHub Actions runs the test suite automatically.
The Qloo API key is kept on the backend and is never exposed in the browser.
Challenges we ran into
One of our biggest challenges was translating broad cultural references into reliable API signals. A movie title or artist name can match multiple entities, so we added an explicit entity-confirmation step before generating recommendations.
Another challenge was handling API responses consistently across different recommendation categories. We built normalization logic to accommodate different response structures and avoid displaying unsupported or invented information.
We also had to consider privacy and security. The application uses only the cultural references and city explicitly supplied for the recommendation request, while keeping API credentials server-side.
Accomplishments that we're proud of
- Built a complete taste-aware recommendation workflow around Qloo's Search and Insights APIs.
- Connected cultural interests to recommendations across multiple categories instead of limiting discovery to one content type.
- Added user-controlled entity confirmation to improve the relevance of taste signals.
- Created an agent-style workflow with visible tool activity.
- Added automated tests and a GitHub Actions CI pipeline.
- Published the source code in a dedicated public repository with an MIT license.
What we learned
We learned that personalization is not simply about collecting more user data. It is about identifying meaningful signals and connecting them intelligently.
Qloo's Taste Graph gave us a way to explore relationships between cultural interests and potential experiences. We also learned the importance of entity resolution, explicit user confirmation, reliable API normalization, explainability, and privacy-conscious system design.
Most importantly, we learned how an agentic workflow can turn multiple API operations into one coherent user experience.
What's next for OmniPulse
We plan to take OmniPulse beyond the initial prototype by:
- Completing live Qloo API validation and deploying a publicly accessible demo.
- Expanding recommendations to more cultural categories and experience types.
- Adding richer explanations of why particular recommendations match a user's interests.
- Introducing more occasion-aware discovery, such as date nights, weekend plans, travel, and social gatherings.
- Collecting user feedback to improve recommendation quality and the overall discovery experience.
Our long-term vision is to make OmniPulse a personal cultural discovery agent that helps people find experiences they might love but would never have thought to search for.
Built With
- fastapi
- frontend
- python
- qloo
- uv

Log in or sign up for Devpost to join the conversation.