Inspiration
A caregiver may know that someone loves Frank Sinatra or a particular film, yet still face a blank page when planning something to do together. Finding more titles is only part of the task: the caregiver also needs to review the possibilities, choose a manageable activity and remember what worked.
Reminiscence Companion began with a practical question: could an agent turn a few familiar favourites into a short session of listening, viewing and conversation, while keeping the caregiver in control?
The intended audience is family caregivers supporting people living with dementia. The app is an activity aid, not a memory assessment, medical tool or treatment.
What it does
The caregiver enters a favourite music artist, film or television show and confirms the exact Qloo match. A Gemini agent then calls Qloo to discover related cultural possibilities and selects a small set from the returned results.
Each discovery shows its source details, available connections to the supplied favourites, Qloo category rank and separate selected position. Content notes quote the metadata that supports them, and incomplete checks remain visible.
The caregiver can:
- Review and accept activities, mark known favourites, reject unwanted suggestions or temporarily skip an item.
- Refresh discoveries with updated taste signals and explicit exclusions while keeping accepted activities in place.
- Arrange two or three activities, choose their order and duration, start the session and record what worked.
- Save sessions privately, reopen them on another device and reuse saved preferences in a new session with an empty activity list.
The complete temporary demo works without an account. Optional Spotify previews and external media links support activities; playback availability varies.
How we built it
The application uses Next.js, React and TypeScript. Gemini runs through the AI SDK's ToolLoopAgent, calling a Qloo recommendation tool before selecting candidates from the current result pool. Server validation prevents selection of invented entities and binds the caregiver's signals, exclusions and policy settings to the actual Qloo requests.
Qloo supplies entity resolution, taste connections, cultural metadata and available input attribution. A separate structured Gemini call produces advisory content notes, which are accepted only when their evidence matches a returned metadata field. Shared deadlines and call limits bound each run, with a clearly labelled Qloo-only fallback when the agent cannot finish.
Clerk provides authentication, Firestore stores explicit saved sessions, and Google Cloud Run hosts the container with server-side secrets. Signed Clerk deletion events remove saved sessions and block late writes from recreating deleted data.
Claude supported the initial idea exploration. Codex helped with API probes, implementation, debugging, deployment and browser verification. The application source is public under the MIT license.
Challenges we ran into
The hardest design boundary was separating cultural relevance from personal suitability. Qloo describes taste connections across groups; it cannot establish what one person enjoys, remembers or wants today. The interface therefore keeps familiarity, content checks, observed responses and acceptance separate.
Metadata also has limits. A PG rating can accompany distressing themes, and an absent flag is not approval. Missing ratings remain held, content notes expose their supporting excerpts, and the caregiver makes the final decision. Era controls apply to film and television; music discovery remains artist-level.
Engineering challenges included provider timeouts, preserving accepted activities during refresh, validating saved data and enforcing account isolation. Live checks exposed issues with Firestore writes and saved-anchor fields that we fixed before release.
Accomplishments that we're proud of
- Shipped a publicly hosted application with a complete account-free demo and private saved sessions.
- Implemented a working Gemini tool loop grounded in live Qloo results, with inspectable attribution and constrained selection.
- Demonstrated a real feedback loop: rejecting an item changed subsequent discovery while accepted activities retained their place.
- Passed 47 offline tests and 15 hosted account-access checks, and verified actual Clerk account-deletion cleanup.
- Rehearsed save/reload/reopen, keyboard session controls, a simulated 390 px layout and a readable one-page print-to-PDF output.
What we learned
Plausible recommendations alone do not explain the value of a taste graph. An early exploratory comparison showed that a plain LLM could already suggest reasonable titles. That pushed the project toward evidence that a caregiver can inspect: actual cultural entities, returned source connections, explicit constraints and feedback reflected in later requests.
We also learned to distinguish a known favourite from an observed response. Something being familiar and something working well in a particular session are useful, different pieces of information.
The current checks establish implementation behaviour. They do not establish clinical benefit, improved caregiver usability or superiority over a plain LLM.
What's next for Reminiscence Companion
The next priority is independent caregiver testing, or clearly labelled proxy testing, to measure task completion, help needed and understanding of the recommendation evidence and content notes.
Further development could add separate care-recipient profiles and shared care-team workspaces with explicit permissions. Broader device, accessibility and playback testing would strengthen the product, alongside a fair comparison with an LLM-only alternative under equivalent tasks and constraints.
The caregiver's judgement and the person's wishes remain central: there is no need to remember, answer or finish.
Built With
- clerk
- codex
- firestore
- gemini
- next.js
- qloo
- react
- typescript
Log in or sign up for Devpost to join the conversation.