Inspiration

The best discoveries happen sideways: a film leads you to a band, the band to a book. Streaming apps keep you inside one medium. We wanted a three-minute game that crosses them.

What it does

Pick a starting point, say In the Mood for Love. Rabbit Hole opens three doors into music, each with a short reason and one thing to try ("Try Tiny Tears"). Choose one, and it opens doors into books, then back to film. If you already know a pick, one tap replaces it. At the end you get your trail as a little story, with the thread between each step written out, and a link a friend can replay or branch from.

How we built it

Each step is a Claude Haiku 5.5 agent turn with bounded tools. The agent asks Qloo's Insights API for entities in the next medium that share an audience with the trail so far, filters what's unsuitable or already known, and writes the connecting line from the evidence Qloo returns. Qloo picks the candidates; the agent chooses among them and explains. "Why this?" shows the Qloo evidence for every door. Shared trails are immutable snapshots, and forks get their own copy.

The app is Next.js 16 on Bun, hosted on ShipTiffin with Postgres for trails and Valkey for caching, sessions and limits. Releases run migrations and warm the starter trails automatically.

Challenges

Cross-medium jumps are where generic language models drift. Qloo keeps each jump grounded in real audience overlap. We also caught the model mixing up one film's synopsis with another's, and added a check that rejects that copy.

What we're proud of

The finished trail. It reads like a short story of how one film led somewhere you didn't expect, and every link in it is backed by Qloo data.

What's next

Longer expeditions, trails between two friends who meet in the middle, and starting points from your Spotify or Letterboxd history.

Built With

Share this project:

Updates

Submission history