Inspiration
My grandfather lives with dementia. One evening, sitting beside him, something came on TV from his younger days, and his whole face lit up. For a moment he was somewhere else: excited, joyful, completely himself. He doesn't recall much these days, but that spark was unmistakable. It stayed with me, and it's the reason Memory Lane exists.
Millions of families around the world know that feeling: the person you love is still there, but it's getting harder to reach the younger self they carry inside. Moments like the one I saw don't have to be left to chance. The right song, film or place from someone's youth can open a door, if you know which one to choose. Finding it takes time, and knowledge of another person's era, hometown and tastes, which a busy family member or care worker often doesn't have.
So we built an agent that does that research in under a minute, and does it carefully: nothing invented, nothing upsetting, and questions that never feel like a test. Memory Lane can't bring back what dementia takes. What it can do is help a caregiver create more moments like the one I saw: a familiar song, a story told again, a face lighting up.
What it does
A caregiver answers a few questions:
- a safety check first;
- the name the person likes to be called, and how much support they need today;
- their birth year and hometown;
- one to three favorites they still remember;
- anything to avoid.
Former work, first language and traditions are optional. None of it is saved.
Memory Lane then builds a session kit:
- Songs that fans of their favorite also love
- A film or TV show from the years they were about 10 to 30
- A place and a dish to talk about from their hometown
- Questions that invite a story and never test memory, matched to the support level
Session mode shows one large card at a time. The caregiver plays a song or asks a question, then marks how it landed: Lit up, Calm, Not interested, Not today or Stop. Cards can be read aloud with the device's own voice.
At the end, Memory Lane writes a care note for the family or care team, built from what was marked. It can be copied, printed or sent by WhatsApp. The next kit builds on what lit them up, leaves out anything the session stopped at, and asks the safety question again.
Safety comes first. If the caregiver reports a sudden change, such as new confusion or unusual drowsiness, there is no kit. Memory Lane says to tell their nurse or doctor, because a sudden change can have a medical cause.
The difference Qloo makes, shown rather than claimed: under any kit, Compare with Claude on its own gives Claude the same person and care rules but no Qloo. Then:
- it looks each of Claude's picks up in Qloo;
- it checks each question against the same question rules;
- it puts the result side by side with the kit.
A pick Qloo doesn't list is shown as "can't be checked", never as a mistake.
How we built it
Stack: Next.js 16 on Vercel, the Claude API (Claude Haiku 5.5) with tool use, the Qloo Hackathon API, and Upstash Redis for visitor limits.
Qloo does the picking:
/searchresolves a favorite, such as "Frank Sinatra" or The Sound of Music, to a Qloo entity./v2/insights, seeded with that entity, finds the music its fans also love.- Films and TV use a release-year window worked out from the birth year.
- Places come from the hometown, with historic landmarks first.
- Dishes come from the specialty dishes of hometown restaurants.
- A modern favorite still works. For someone born in 1942 who names Taylor Swift, Qloo's films for her years start with Mary Poppins (1964). Music seeded with that film gives Frank Sinatra, Dean Martin and Carole King.
The agent decides; code enforces the rules.
- The lookups every kit needs run in code first, so a typical kit takes one Claude call.
- Claude chooses the picks that fit this person and explains each one. It writes the questions for the support level, and notices when a favorite is too modern.
- Claude can call any of five Qloo tools itself when a lookup matched the wrong thing. Each kit allows at most 4 Claude calls and 100 seconds.
- If Claude submits a kit too thin to show (no questions, or one section where there was material for more), the code sends it back once with exactly what's missing, and Claude redoes it from the same results.
- The rules that must never be skipped live in code, not the prompt:
- the year window and the hometown;
- a content filter using Qloo's ratings, genres and theme summaries;
- an era check for artists: Qloo gives artists no year, so the code reads when each one began from Qloo's own description and screens out anyone who came along well after the person's years;
- the caregiver's avoid list;
- the question rules, including dropping any question that names an artist the kit doesn't include;
- the safety check, which comes before anything else, on the page and in the API.
- Every song, film, place and dish carries the Qloo ID that proves where it came from. Anything the agent can't trace to a Qloo result from the same run is removed, and an empty section explains why instead of guessing.
- "How this kit was made" shows every Qloo lookup, every Claude turn, and everything screened out with its reason. While a live kit builds, the page shows those steps as they happen.
Measured, not guessed:
- Cost and speed: every live kit is audited for token use. In our Oct 27 runs, a kit cost about 0.1–0.15 cents in Claude tokens and took 10–20 seconds. That's what lets the demo stay free.
- Testing: 309 automated tests cover the filters (against real Qloo responses), the agent loop, the safety check, the question rules and the screens.
- The live site: before calling it done, we audited it as an anonymous visitor. That covered 19 bad inputs, 11 live kits (including a prompt-injection attempt, a Japanese favorite and a nonsense favorite), and the whole flow on a phone.
Challenges we ran into
- Qloo's age signal describes today's tastes, not youth. Adding the oldest age group made picks more modern. So we let the favorite and the year window carry the era.
- Our first safety filter would have emptied the kits. Matching sensitive words against Qloo's keyword tags removed The Sound of Music (tagged "Nazi") and most classic TV. Matching Qloo's one-line theme summary instead caught every problem title we knew of and kept every classic we tested.
- Places are mostly current businesses. Some "landmarks" are modern attractions, so we rank historic places first and have the agent check the place existed in the person's years.
- Even "Do you remember…?" can feel like a test. We rebuilt the question rules around inviting stories, adjusted for how much support someone needs, and the code drops any card that breaks them. Our own audits kept finding phrasings that slipped through, like "your favorite memory of…" or "your family used to…", so the rules kept getting stricter.
- A modern favorite can pull in modern music. For a Taylor Swift fan born in 1942, Qloo also offered Selena Gomez and One Direction. With no year field for artists, we read when each began from Qloo's descriptions. The first version wrongly removed the Eagles, by reading an album span as a birth year, so we tested it against real Qloo data before trusting it.
- Names in two scripts. Song cards showed ちあきなおみ while the questions said "Chiaki Naomi", so a caregiver couldn't match them. Our first fix made Claude write whole questions in Japanese, which our English question check couldn't review. Live testing caught that before it shipped.
- Keeping it cheap enough to stay free.
- Moving the usual lookups into code, and giving Claude short handles instead of Qloo's 36-character IDs, cut what Claude reads per kit from about 27,000 characters to about 13,000. A kit went from 2 Claude calls to 1.
- Claude's own thinking was then most of the cost, so we measured
lowagainstmediumeffort over 30 live kits before switching tolow.
- Safety has to come before the form. Our production audit found the safety message only showed once every other field was filled in. Now it shows the moment the caregiver answers "Yes", and nothing is sent.
Accomplishments that we're proud of
- Nothing in a kit is invented: every pick traces back to a Qloo result from the same run.
- The safety check: the right answer to a sudden change is no kit at all.
- A session tool, not just a list: one card at a time, reactions, a care note, and a next kit that learns from the session.
- An honest comparison that shows what Qloo adds without overclaiming.
- Built for older adults: large text and buttons, high contrast, a text size control, and read aloud with on-device voices only.
- Privacy by design: session notes stay in the browser. Analytics are cookieless and send only an allow-list of events, never anything about the person.
What we learned
- Taste data is strongest when the agent routes through it (favorite → in-era film → music) rather than querying it once.
- The safest rules are the ones in code. The prompt explains; the code enforces.
- Measuring live beats assuming. Several of our biggest fixes came from reading real kits, not from tests that passed.
- Care practice changes product design. A "no" is useful information, stopping is a good outcome, and questions should invite rather than test.
What's next for Memory Lane
- A small study with adults aged 60+: do they prefer a Memory Lane list over an AI-only list, and do they place its picks in their youth?
- Better coverage where Qloo has less data, such as hometowns outside the US and Europe.
- For care homes: saved resident profiles (only with consent and proper privacy work first), group sessions that find the overlap in several residents' years, and family contributions.
- Kits in more languages.
Built With
- anthropic
- claude
- next.js
- node.js
- posthog
- qloo
- qloo-api
- react
- redis
- tailwindcss
- typescript
- upstash
- vercel
- vitest
- zod
Log in or sign up for Devpost to join the conversation.