Guided Memory Lane helps a caregiver prepare a comfortable shared listening and looking sitting for someone they love. Tuck, the guide inside it, chats instead of interviewing: every turn comes with a short reply, a handful of suggestion cards, and a quick 1–5 rate so curation gets tighter as you go. Local cards stay on your desk until leave-outs are acknowledged and you sign the preview; only then does Qloo bring cultural-affinity picks, and only after that signed preview can a private Spotify playlist (or a listening-file gift) land in your hands.

Inspiration

Families already reach for familiar music and a few safe photos when they want an easy hour together. The hard part is not finding more content. It is knowing what to leave out, keeping the sitting gentle, and giving the caregiver a clear say before anything becomes a gift.

We wanted a guide that sits with that person, not a form that extracts a life story. Tuck asks one thing at a time, offers cards you can accept or skip, and treats exclusions as first-class. Preferred music has a research backdrop for mood in dementia care (a Cochrane 2025 review reports a small depression SMD of about −0.23 for preferred-music listening versus usual care). That is background for why preferred music matters. It is not a claim about what this app produces. Qloo, for us, is cultural affinity after the family has drawn the line on what must stay out.

What it does

One clear try-tonight help loop:

  1. Make an account and name who you are helping.
  2. Chat with Tuck. Every caregiver turn gets a short guide reply, 2–5 suggestion cards, and an inline 1–5 rate that tightens curation.
  3. Add optional leave-outs (songs, artists, topics, scenes). Local suggestion cards stay local until exclusions are acknowledged.
  4. Open the caregiver preview: exact signals that would go out, what is withheld, and the claim boundary. Sign it.
  5. Only after that signed preview does Qloo GET /v2/insights return music, film, and place cards filtered by those exclusions.
  6. Optionally attach an opaque family photo and a short anecdote for the looking turn. Nothing in that path is decoded by vision or sent to Qloo.
  7. Gift a private Spotify playlist after the signed preview, or take the listening file and search links if Spotify is not connected.

Defensible claims only: comfortable shared listening and looking; invite-first control; caregiver in the loop; Cochrane 2025 depression SMD ≈ −0.23 as background for preferred music only; Qloo as cultural affinity after exclusions.

Never claimed: memory restoration, agitation reduction, disease treatment, music-plus-photo superiority, or therapy-equivalent outcomes.

How we built it

Stack: FastAPI guide desk, httpx client to the Qloo hackathon API, local JSON session and account store, Spotify Authorization Code with PKCE (no client secret), Render deploy.

Qloo path (docs-verified): GET /v2/insights for type-filtered candidates (artist / movie / place), POST /v2/tags for taxonomy search, GET /search for entity lookup. Insights is GET-only with query-string signals. Interests and exclusions resolve to tag or entity ids when they can; unresolved labels still filter by name and are reported honestly.

Chat-not-interview guide: app/agent.py drives turn order. Local suggestion cards and ratings run before leave-out acknowledgment. Candidates refuse with 409 until exclusions are acknowledged and the preview is signed. Changing exclusions invalidates the preview so it must be re-signed.

Safety gates enforced in code (app/session.py and the guide), not only in docs:

  • Invite-first after account cookie; session routes need the one-time invite token.
  • Exclusions before preview and before candidates.
  • Photos stored as opaque bytes (no filename, no image decode); anecdote display-only; neither reaches Qloo; no vision model.
  • Preview shows exact signal IDs, withheld items, and the claim boundary before any candidate request.
  • Qloo biography/description fields are stripped; results map to name, id, type, image, and a reason anchored in stated interests.
  • Private Spotify playlist only after signed preview; tracks re-checked against the same exclusion matcher; playlist-modify-private only. Listening-file fallback when Spotify is unset.
  • Public demo retention: session TTL and cap; successful candidates clear anecdote and photo; DELETE removes the rest.

Challenges we ran into

Keeping Tuck warm without turning the sitting into an interrogation. Chat-with-cards had to feel like help, not a probe list, while still collecting enough stated interests for Qloo to work.

Drawing a hard line between local curation and cultural affinity. Suggestion cards and ratings needed to stay useful before any network call, and Qloo cards had to wait until leave-outs and a signed preview were real.

Saying only what we can defend. Preferred music has a modest research backdrop for mood; affinity is not biography; photos must never invent a life story. The preview sheet carries that claim boundary into every sitting so the product cannot quietly overpromise.

Accomplishments that we're proud of

  • Live guide at https://guided-memory-lane.onrender.com/ (pamu512/tuck@ebbe221)
  • Chat-not-interview: every turn returns a short reply, 2–5 suggestion cards, and inline 1–5 rating
  • Local cards before leave-out; Qloo insights cards only after exclusions + signed preview
  • Invite-first account flow with caregiver preview as the sign-off
  • Opaque optional photo + short anecdote that never touch vision or Qloo
  • Private Spotify playlist via PKCE after signed preview, with listening-file gift as fallback
  • Claim boundary enforced in session and preview responses, not only in the README

What we learned

A small care product needs one help loop a caregiver can finish tonight: chat, rate, leave things out, preview, gift. Credibility comes from what you refuse as much as what you ship. Local cards earn trust before any affinity call; a signed preview makes Qloo feel like a guest that arrives after the family has spoken. Warm guide voice beats a clever form.

What's next for Guided Memory Lane

Richer durable persona notes from explicit caregiver writes (edit and delete, no invented biography). End-of-sitting feedback that shapes the next playlist. Spotify Connect into a speaker when the household already has Premium. Deferred destinations (Apple Music, YouTube Music) once playlist push is clean. Stronger exclusion resolution so paraphrases miss less often. Longer-lived private deploy storage without weakening the invite and preview gates.

Built With

  • fastapi
  • httpx
  • pytest
  • python
  • qloo-api
  • render
  • uvicorn
Share this project:

Updates

Submission history