TBR Whisperer - Case Study
TBR Whisperer is a tiny web tool that helps you pick one book from your unread shelf based on your mood instead of your guilt‑ridden TBR list.
Problem: I kept getting stuck choosing what to read next. Long lists and filters made it worse, especially on low‑energy or ADHD‑ish days. I wanted something that simply asked “how are you feeling?” and then pointed at one book.
Idea: TBR Whisperer turns that into four moods: Soft & Slow, Deep‑dive grind, Chaos & fun, Big thinky brain
You scroll through a chat‑style page, tap the mood that fits, and see a single recommendation with a short note about why it matches that vibe.
How it works?
I store books in a CSV with tags like mood_tag, energy, and a little description.
A small Flask API on Render exposes
/mood?tag=soft_slow | deep_dive | chaos_fun | thinky and returns one random matching book.A Framer component (the “RecBubble”) calls this API and fills in the title, author, and notes.
Each mood chip updates the moodTag so the same bubble can show different books.
What changed along the way?
First, the API worked locally but Framer kept saying “Failed to fetch” until I fixed CORS with flask-cors.
Then I wrestled with the Framer template: learning the difference between editing the component vs. the instance, wiring variables, and getting all four moods talking to the API reliably.
I tried adding a "Show another" button, but kept it out of v1 to avoid breaking the core flow.