Inspiration
Most book algorithms recommend based on gains and it ignores the visceral, personal reaction a reader has to the prose. I wanted to build a tool that allows readers to find books based on the emotional footprint left behind by others. Whether it's the "Bittersweet Ache" of a tragic ending or the "Whimsical" lightness of a Ghibli-esque adventure, the goal was to match a user’s current mood to the specific sentiment found in thousands of peer reviews.
What it does
VeFelt It is a natural language processing (NLP) engine that categorizes book reviews into distinct emotional "aesthetics." It doesn't just look for keywords; it analyzes the polarity and intensity of a reader's experience. Users can input a desired "vibe," and the system scans its processed library to return reviews (and their associated books) that resonate at that exact frequency.
How we built it
The project utilizes a robust Python-based data pipeline:
Preprocessing: Used NLTK for tokenization and cleaning of a Goodreads review dataset.
Sentiment Extraction: Integrated VADER to calculate pos, neg, neu, and compound scores for each review.
Mapping Logic: Developed a custom classification algorithm—the Mood Mapper—which translates raw math into literary aesthetics like "Gothic," "Dreamy," or "Modern Realism."
Visualization: Created a "Sentiment Fingerprint" dashboard using Seaborn and Matplotlib to visualize the distribution of components across the library.
Challenges we ran into
The biggest challenge was Data Alignment. During the processing phase, ensuring that the sentiment scores stayed "pinned" to the correct Book Id was a hurdle, especially after cleaning and filtering for English-only reviews. We also had to solve the "Granularity Conflict"
Accomplishments that we're proud of
I am particularly proud of the Aesthetic Logic. Moving beyond a binary "Positive vs. Negative" and successfully isolating the "Bittersweet Ache"—a mix of high negative sentiment with a touch of positive beauty—felt like a win for literary AI. I also successfully bridged the gap between raw data analysis and a functional recommendation output.
What we learned
I learned that sentiment analysis is deeply nuanced. A "negative" score in a review doesn't always mean a "bad" book; in literature, high negativity often indicates a powerful, evocative tragedy. I also gained experience in Pandas data merging, learning how to join disparate datasets (Reviews and Metadata) using left-on/right-on keys to provide a complete user experience.
Log in or sign up for Devpost to join the conversation.