-
-
Live walkthrough: taste inputs, Qloo evidence, rejection and replacement, reader comparison, and budget guidance.
-
ShelfLife’s bookshop desk: selected favourites, real Qloo recommendations, and the selection workflow.
-
Three books supported by real Qloo taste evidence, filtered by stock, budget and exclusions.
-
ShelfLife — your next book starts with what you already love.
Inspiration
A reader may struggle to name their next book while knowing exactly which film, musician or story they love. Independent bookshops have another useful piece of the puzzle: what is actually on their shelves.
ShelfLife connects those starting points. It turns cultural favourites into a shortlist grounded in Qloo taste evidence and constrained by the shop’s stock, prices and the reader’s choices.
What it does
Readers choose up to five favourite books, films or music artists, confirm the intended entities, and set a per-book budget and exclusions. ShelfLife recommends up to three supported, eligible books.
Each recommendation exposes its evidence: stock and budget eligibility, live or cached provenance, and contributing favourites returned by Qloo where available.
Rejecting a book creates an explicit exclusion and triggers a new plan. Marking a book sold out updates availability. Undo and Reset make the workflow easy to explore.
“Same shelf, different reader” compares two sets of favourites against identical inventory, stock, budget and exclusions. Overlapping recommendations remain visible, and scores from separate queries are never treated as a shared scale.
When results are insufficient, ShelfLife explains whether the limitation concerns inventory, confirmed identities or taste evidence. It offers an explicit next step instead of silently relaxing constraints or inventing recommendations.
How I built it
ShelfLife uses Next.js, React and TypeScript, with server-side routes invoking the organizer-supported Qloo harness CLI. Qloo search resolves cultural entities, while book Insights supplies taste evidence restricted to confirmed inventory identities.
The workflow validates inputs, filters eligible stock, retrieves evidence, selects a shortlist and replans after feedback. It uses deterministic application logic without an additional LLM dependency.
Qloo provides cultural affinity. The fictional Paper & Fern bookshop provides prices, quantities and spotlight flags. ShelfLife enforces constraints and presents the decision.
Credentials stay server-side. Signed entity selections, bounded requests and private evidence caching support the live workflow.
Challenges I ran into
Real search responses exposed an entity-type format difference, which required updating validation and adding regression coverage. Some stock searches returned ambiguous matches; those titles remain unresolved rather than being automatically assigned an identity.
Another challenge was making limited results useful. ShelfLife distinguishes service failures from evidence shortages and inventory constraints, while keeping every adjustment explicit.
Accomplishments
The local live walkthrough returned real Qloo recommendations, displayed named contribution evidence, replaced a rejected book and compared two readers honestly. A budget below every stock price returned no recommendations and skipped the provider query.
Validation includes 50 passing core/API tests and 18 passing desktop/mobile browser tests. The regression tests use synthetic or mocked data; the recorded local walkthrough uses real live and cached Qloo responses.
What I learned
Taste evidence becomes useful when its provenance and practical constraints are visible. Cultural affinity, shop availability and reader feedback each contribute something different to the final decision.
What’s next
Expand reviewed inventory coverage and verify the deployed experience with real bookshop feedback. The current inventory contains 32 fictional stock entries, with four reviewed identities available in the prepared live demo. Affinity is query-relative and is not a purchase probability or a guarantee of satisfaction.
Built With
- css
- next.js
- node.js
- playwright
- qloo
- qloo-harness
- react
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.