Inspiration

You're standing in a shop holding a $180 jacket. One part of you loves it. The 19-year-old in you would have bought it already. The one who pays rent says put it back.

You aren't deciding. You're losing an argument with yourself, and nothing on your phone knows any of the people in it.

Every recommendation engine treats you as one person with one taste. But taste has a history: who you were at nine, on campus, in your first apartment, on a Sunday morning, at 3am. Big decisions are usually a debate between those versions of you: treat myself or save? the safe pick or the fun one?

The Qloo challenge asks for something that only works because it knows what people love. So we asked: what if the argument already happening in your head could happen out loud, with every side grounded in real taste data instead of an LLM's guess?

Your taste has a history. Parallax puts it in the room.


What it does

Meet who you were, who you are, and who you could be, then let them argue it out before you buy, book, or watch.

1. Build your selves in minutes, five ways, one Timeline Studio

  • Era Grid: pick a year, then tap what was "you." The grid is built from what was culturally big that year and reshuffles toward similar items as you tap.
  • Dated exports, auto-sliced: drop a WhatsApp, Telegram, Spotify, Netflix, YouTube or Instagram export and it is cut into eras on an activity histogram you can drag to adjust.
  • Screenshot drop: Wrapped, Replay, playlists and shelves are read into editable chips, each tagged with a year.
  • Photo scan, on-device: photo dates, places and scenes become taste signals. Photos never leave your device.
  • Time capsule: three quick prompts per era, typed or spoken.

2. Selves of every kind, not just ages

Kind of self Examples
Age / life stage 9-year-old you, campus you, late-20s you
Life event first apartment, moved cities, lockdown, backpacking year
Context Work-me, Sunday-morning-me, 3am-me (sliced from the same data)
Speculative you at +10 years, the you who grew up in another city (always labeled as projections)

3. Selves travel across timelines

A transit-style Timeline Map shows your trunk timeline, parallel lanes, and forward and alternate branches. Each self has a knowledge horizon: it cannot know anything newer than its era. When a new option arrives, Qloo translates it into that self's world ("to 2012-you this is basically X and Y"), so the selves really do speak from different times.

4. The Council

Bring a decision with real stakes: a jacket, a trip, a night out.

  • Your chosen selves score every option, argue in their own voice, concede points, and rebut.
  • The mediator returns a verdict, who dissented, a regret forecast, and a safer alternative.
  • Afterward, one tap (loved it / fine / regret) updates a Self Leaderboard, so the selves that are right more often earn more weight over time.
  • Every council produces a shareable verdict card. Nothing is ever bought or booked automatically.

What makes it Qloo-powered

Role of Qloo What it does in Parallax
Era seed pools what was culturally big in a given year, per domain
Entity resolution turns messy mentions into real entities
Gap-filling music taps predict food, film and brands, tagged as inferred
Affinity scoring every vote in the council is a Qloo score
Candidate generation "what would all my selves love?"
Drift measurement how your taste changed between eras
Era translation nearest-in-taste entities that existed in a self's time

The LLM never invents a score. It only writes the words around Qloo's numbers. A one-tap toggle runs the same decision as plain LLM roleplay so you can see the difference.

Plug it into other agents

Parallax exposes an MCP server with tools like ask_past_self, convene_council, compare_eras and recommend_for_all_selves. It has scoped, revocable tokens, a Connect page with copy-paste configs, and a live try-it panel.

Privacy by design

  • Raw chats, screenshots and audio are processed transiently and discarded; only entities, sentiment and style stats are stored.
  • Other people's messages are dropped.
  • Edit or delete anything the selves know in one tap.
  • Every self is labeled an approximation, never the real you.

Try it with no setup

Three demo personas with pre-built timelines work without logging in.


How we built it

  • Frontend: Next.js, TypeScript, Tailwind, Framer Motion, React Flow for the Timeline Map
  • Backend: Node/TypeScript API, Postgres with pgvector, and an import pipeline that parses, extracts, resolves to Qloo entities, and discards raw input
  • Qloo layer: one module wrapping entity search, recommendations, entity details, era pools, affinity, similarity and max-min candidate generation, with caching and precomputed persona data
  • LLM: Claude for entity extraction, screenshot reading and council dialogue, constrained to the profile entities and Qloo scores it is given
  • In the browser: exifr for photo dates and GPS, a small on-device vision model for scene labels, and the Web Speech API for spoken memories
  • MCP: a TypeScript MCP server over Streamable HTTP with per-token scopes and tool allowlists
  • Design rule: scores come from Qloo, words come from the LLM
  • Hosted publicly, MIT licensed

Challenges we ran into

  • Era coverage: Qloo's data is thinner for older years and childhood-era items, so we added release-year fallbacks, curated seed pools and visible confidence labels.
  • Making the debate real: early councils turned into theater, so we added rules: every self must concede a point and name the strongest counter, with at most two rounds and a short-circuit when everyone agrees.
  • Keeping the selves distinct: one LLM voice in different costumes is boring. The knowledge horizon and era translation made each self reason from its own world.
  • Messy exports: formats and date styles vary by app and locale, so the parsers had to be defensive.
  • Privacy versus usefulness: we kept photos on-device and discarded raw text, while still extracting enough signal to be useful.

Accomplishments that we're proud of

  • Built five different ways to capture a person's past, all feeding one timeline
  • A council whose scores come from Qloo, with a live toggle showing the same decision without it
  • A measured result: [Qloo-grounded picks matched user ratings X/Y times vs Z/Y for LLM-only]
  • Selves that translate options into their own era instead of sounding alike
  • A public, working demo with no-login personas and an MCP endpoint anyone can test

What we learned

  • Grounding beats prompting: once scores came from Qloo, the selves stopped hedging and started disagreeing in believable ways.
  • Constraints create character: giving each self a knowledge horizon did more for realism than any style prompt.
  • Recognition beats recall: people can't list what they liked in 2012, but they can instantly tap it when they see it.
  • Privacy design is product design: showing users exactly what the selves know, and letting them delete it, made people more willing to share.

What's next for Parallax

  • Native app (Expo): direct photo library access and reliable "how did it go?" notifications for the outcome loop
  • Back-testing: rerun past decisions with only the selves that existed then, to check whether the council would have predicted your choice
  • Shared councils: bring a friend's or partner's selves to the table for group decisions
  • "Ask my selves" for businesses: an embeddable widget and API so retailers, travel sites and restaurants can offer a council on a product page, aimed at fewer regretted purchases and returns
  • More sources: Last.fm, Letterboxd, Goodreads and purchase history
  • User-held keys and an on-device mode for the strongest privacy
  • Calibrated future selves: using the outcome loop to improve how well projected selves predict real choices

Built With

Share this project:

Updates

Submission history