Inspiration

Music and familiar culture are among the most reliable ways to reach someone living with dementia. A song from someone's teenage years can bring back recognition, conversation and even dancing, at a point when much else has faded. Care homes know this, and activity coordinators run reminiscence sessions every week. In practice, though, the same generic playlist gets used for everyone. A coordinator with 40 residents can't research what a former seamstress from Brighton, a Jamaican-born bus conductor and a Punjabi shopkeeper would each have loved at 18.

When you ask an LLM, you get the stereotype ("Vera Lynn and Casablanca"). What's missing is taste: knowing that someone who loves Doris Day and The Sound of Music is likely to light up for Matt Monro, Summer Holiday and Come Dancing. That knowledge is what Qloo's taste graph holds.

What it does

  1. A coordinator picks one or more residents. Each has a first name, a birth year, where they grew up, a few known favourites, and things to avoid.
  2. The Encore agent resolves the favourites to Qloo entities and then expands each person's taste across domains (music, films, TV, books). It pins films, TV and books to the person's reminiscence bump, roughly ages 8-32, the period whose memories survive longest.
  3. For group sessions, the agent scores every candidate song against each resident and ranks by the lowest score. The shared sing-along then works for everyone, not just the majority.
  4. It finds real outings near the care home that fit the group's taste: tea dances, bandstands, classic cinemas, and restaurants serving the food of a resident's heritage.
  5. It writes a printable session sheet: a playlist, a film afternoon and familiar TV, each with a "because they love X" reason taken from Qloo's explainability data. The sheet also includes gentle conversation starters that never test memory, practical facilitator tips (timing, volume, props, food textures), and a record of how each resident's sensitivities were respected.

You can watch the agent work live: every Qloo call streams into the "Agent at work" panel.

How we built it

  • Qloo Insights API (hackathon endpoint, X-Api-Key):
    • /search resolves entities.
    • /v2/insights handles cross-domain recommendations, using signal.interests.entities, signal.demographics.age, filter.release_year.* / filter.publication_year.*, filter.location.query for places, filter.results.entities for per-resident scoring, filter.exclude.tags, and feature.explainability.
    • /v2/tags looks up tag IDs.
  • Agent: six tools (five Qloo-backed tools plus a structured submit_plan) driven by one of two planners. With an ANTHROPIC_API_KEY, Claude (claude-sonnet-5-5) runs a tool-use loop over them, with server-side refusal fallback enabled. Without one, a deterministic scripted planner drives the same tools. The public demo runs the scripted planner against the live Qloo API, so judges can use it freely without an LLM bill; every recommendation still comes from Qloo. A grounding check flags any recommended item that Qloo didn't return.
  • Backend: Python, FastAPI and httpx, streaming the agent's steps to the browser over Server-Sent Events. It caches Qloo responses, retries a 429 once, and limits how many runs can happen at once, to respect the hackathon quota.
  • Frontend: dependency-free HTML, CSS and JS, designed for tablets in a care-home lounge. It uses large hyperlegible type, supports dark mode, and has a print stylesheet that turns the plan into a one-page session sheet.
  • Mock mode: Qloo-shaped fixtures let the full product run without any keys, for tests.
  • Tests: a 29-test pytest suite covering the API contract, the agent loop and the end-to-end SSE stream.

Challenges we ran into

  • Quota and latency: the agent calls Qloo up to about 25 times for a three-person group. We batch entity resolution, run independent Qloo calls in parallel, and cache responses.
  • Group fairness: averaging affinities let the majority's taste drown out one person. Ranking by the lowest per-resident affinity fixed this.
  • Tone: reminiscence work has clinical best practice behind it. "Do you remember...?" can cause distress. We encoded the guidance into the agent's instructions and the plan structure.

Accomplishments that we're proud of

  • Every recommendation is grounded in Qloo and explained: "because she loves Doris Day (affinity 0.82)".
  • Cross-domain taste (music to film to outings) plus the age-window filtering produces recommendations an LLM alone doesn't.
  • It's a complete product, not a notebook: it runs end to end, prints, and the public demo is free for anyone to try.

What we learned

  • Qloo's feature.explainability turns a black-box recommendation into something a care worker can trust and explain to family.
  • filter.results.entities is an underrated primitive: it lets you ask "how much would this person like these things?", which is exactly what group planning needs.

What's next for Encore

  • A family intake link, so relatives can add favourites and stories before admission.
  • Session feedback ("Margaret sang along to Matt Monro") that feeds back in as stronger signals.
  • Integrations: music streaming playlists, care-planning software, and dementia-friendly cinema listings.
  • Pilots with two or three UK care homes, measuring engagement and agitation incidents.

Try it

Live demo: https://encore-3bs2.onrender.com (free tier, so the first load can take up to a minute). Code: https://github.com/Chinmay-92/encore

Built With

Share this project:

Updates

Submission history