TasteTuner
One film you love. A shortlist you can steer.
Live application: https://tastetuner.z2w.tech Public MIT source: https://github.com/zzw4257/tastetuner
The problem
A recommendation list gives you an answer without much room to act on it. If you recognize too many films, want a different balance, or wonder why something moved, starting another search can produce an entirely different pool that is hard to compare.
What TasteTuner does
Start with a real movie title and confirm the correct film when its name is ambiguous. TasteTuner asks Qloo for up to 20 related films, shows six first, and lets you reveal the rest. You can favour popularity or shared themes, narrow by rating or release year, and reset the same shortlist.
Those controls re-rank and filter the frozen candidate set in the browser. They do not make another recommendation request. Each film has an explanation separating Qloo-supplied fields and structured input attribution from the contributions of the local ranking formula. Affinity is not presented as a probability that a person will like a film. Shared-tag similarity is explicitly a local calculation.
The film details provide source-supplied runtime, rating and review destinations. Streaming tags are not treated as a current availability check. Empty results and service failures remain explicit; synthetic test data never silently replaces a failed live response.
Qloo and agent tools
The server resolves public movie names with GET /search and requests movie candidates with GET /v2/insights using a returned entity ID. Authentication stays on the server. The same pipeline is exposed as three structured, schema-described tools: resolve_seed, get_candidates and reorder_candidates. An actual MiniMax tool consumer exercised that chain against explicitly labelled recorded responses; this evidence is separate from the live application checks. There is no claim that an autonomous LLM runs inside the browser.
How it was built and checked
The application uses TypeScript, a Node server/function entry point and Vercel hosting. A private shared Blob counter uses conditional ETag writes before requests, so concurrent instances share one bounded judging allowance without resetting on deployment. No automatic retries or paid fallback are enabled.
Production verification resolved Moonlight (2016) and returned 20 unique real films. A separate expanded validation also obtained 20 candidates for The Matrix. Ranking, parsing, request accounting and failure contracts have automated checks; desktop/mobile headless checks cover the rendered interface and local interactions. The mobile confirmation action remains reachable while browsing a long disambiguation list.
Current boundaries
The output domain is movies. The judging instance has a finite shared request allowance and closes after the approved judging window. Runtime, regional streaming availability and recommendation quality are not independently certified. The showcase footage uses recorded real responses with a visible disclosure; the hosted application itself accepts live movie searches.
Built With
- qloo
- typescript
Log in or sign up for Devpost to join the conversation.