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.

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