Skip to content
This repository was archived by the owner on Dec 12, 2024. It is now read-only.

Prototype: Updated Bookworm

Chris Pondoc edited this page Mar 17, 2024 · 5 revisions

Prototype: Updated Bookworm

We are updating our build for demo day to move away from Streamlit and towards a separate front and backend. This is primarily due to having more control over our entire interface while building a more robust algorithm.

Frontend Stack

We'll be using React for our front end. We'll initially use Bootstrap for our component elements but will eventually move towards styling our components (perhaps using a framework like Tailwind). In addition, in terms of features, we will be keeping the interface relatively the same, while also adding in:

  • Having example prompts for users to choose from at the beginning
  • Understanding why our recommendation algorithm chose the option it did
  • A landing page that links to our front-facing interface.

Our corresponding issue also has existing links to inspiration for new interfaces.

Backend Stack

Regarding deployment, we'll use FastAPI to host a backend endpoint that our frontend queries. The specification will return a JSON object with the results, containing information like metadata, titles, and so on. In the future, we plan to move to an OpenAPI specification to make it more in line with current standards.

After receiving user feedback, our algorithm will do a more granular search based on different book components. We're naming our algorithm "Find and Filter" due to embedding certain aspects of a book (reviews, descriptions, etc.), using a query to select a certain amount of searches, and then continuously filtering from there.

At a more granular level: "find and filter" works by first encoding all book reviews and descriptions into two separate vector database collections. Upon receiving the user's query, we find the 200 most similar reviews and the 100 most similar descriptions. We then find their corresponding books and take all of these unique books. Finally, we prompt a large language model, ChatGPT, to give us its top 3 matches.

IMG_7726

Telemetry

Telemetry this time was pretty hacky. Jay, Evan, and Nick had forms for folks to fill out, so that's how we collected qualitative feedback and chatted with folks through our demo. In our case, we mainly instrumented telemetry by editing a .csv file with all the prompts people used to understand better what people tended to search for.

Listening to User Feedback

Finally, outside of the core development, we also made sure to take notice of what users wanted from our previous iteration. First, we started off by adding more data for the books, mainly the author and the book cover. Many folks also wanted our algorithm to be more explainable: why did the algorithm recommend the books it did? Thus, in addition to the added details, we made sure to prompt our model to explain the choices it made. Finally, we cleaned up the UI to add example prompts in the case people want to go down different rabbit holes or have a "cold start" and have no idea how to start prompting our platform.

Video of Demo

See our demo.

Demo Day

Qualitative Feedback

What is something that you liked about this team's project and/or presentation?

  • Super easy to use clean UI, mentioned what they changed with user interviews
  • Clear value proposition (search recommendations for e-commerce platforms), straightforward user experience
  • Easy to understand overview of the product and how it differs from existing services.
  • The frontend was intuitive. Input is straightforward with a query and a button.
  • Very clear and concise demo. When I asked follow-up questions, it was very clear they understood exactly what their model was doing and had great justifications for why.
  • Loved the simplicity of the presentation and demo
  • I liked the technical details of how they were using RAG on a book database to get the most relevant books. I think we can apply their RAG techniques to our own project.
  • I like that it was intuitive and easy to use. The recommendations were personalized and adapted to my query which was cool.
  • Very clear description of project rationale, key ideas for the product, and the prototype; prototype is visually pleasant and demonstrates KPIs well
  • The method of processing user query to retrieve results from a large database was really cool and sophisticated!
  • I like the idea that Bookworm is meant to give hyper-specific recommendations (at a level that would be superior to Google). If their product pulls this off, they have something really compelling.
  • I loved the beautiful and functional prototype!
  • I liked how they let us manually input the recommendation to test it out.
  • Being able to interact with the product and hearing about the journey in dealing with ML part of the problem. Also liked some features like sample prompts, an explanation of the reasoning behind ranking etc

What is something that could be improved about this team's project and/or demo?

  • Maybe letting user use the website
  • Would be nice to hear more about the biases of the recommendation algorithm
  • Maybe a slide or two with explanation of how the recommendation algorithm actually works - images would be appreciated!
  • Work on parsing to adapt to all kinds of queries, which may include genre, or other user intentions/filters.
  • More open-endedness or interactivity would have been great. Using a template prompt was cool but I would have liked to play with it a bit more.
  • Would appreciate more needfinding resultsβ€”what is the niche here, and why is it better than what already exists?
  • I have no specific complaints! They did mention that they want their algorithm to be less of a black box and explain to their users why they are recommending specific books, so I guess that would be a good next step for them
  • Depending on what direction they decide to take their project, I think it'd be cool if the recommendations were personalized to the user (e.g. take into account books the user has already read/enjoyed reading) and if we could follow up on the query.
  • Allowing follow-up questions/specifications
  • Exporting recommendations
  • Syncing with GoodReads
  • Lower latency but it’s pretty good already
  • I think everyone's first question is going to be "why would I use this instead of Google?" I think the team needs to come with a concise, compelling answer to that question.
  • A clearer explanation of what the end goal is for the project, as well as the problem they’re trying to solve. What can their product recommendation system do that current recommendation systems can’t?
  • I think if the UI was more fleshed out it could be more appealing as a demo as a whole.

Are there any specific features you'd like to see in a future version?

  • Recommendations based on thoughts of past products purchased, consider how niche searches are handled or searches for an nonexistent product
  • Is there a reason for books specifically? Would love to see other products too!
  • Links to Goodreads and Amazon would be cool!
  • Ability to search for different types of products
  • It could be interesting to have the option to hear the book's summary instead of reading it.
  • Would love to see how this works with more general e-commerce products!

Any other comments, ideas, thoughts? :)

  • When you use a query to obtain books, could you use the description themselves as a query? Would this yield a strongly connected component of a graph structure of books? Just some thoughts lol
  • Great work!!
  • Great job guys! Super impressed
  • Have a stronger opinion about B2B vs B2C. Commit to one and make sure your product makes sense for that direction.

Table of Contents

For other information, check out our team's Google Drive. For a daily stream of thoughts, check this document.

Important Documents

Meetings

General Meetings

SGM Notes

Unusual Ventures Meetings

Kenja: A New Experience for Shopping

Initial Brainstorming

Needfinding

Customer Discovery Calls

Prototypes

Wine Marketplace Platform

Initial Brainstorming

Wine Needfinding

Prototypes

Miscellany

Clone this wiki locally