Project Info
Inspiration
As enrollment season approached, one of our team members found themselves endlessly scrolling through Reddit, desperately seeking insights into specific Math 104 professors. Their exhaustive search left them empty-handed, prompting us to consider how valuable the wealth of knowledge and firsthand experiences shared by students on Reddit could be for the wider academic community. With the recent surge in Reddit's popularity, it only seemed fitting to harness this collective wisdom for the greater good.
What it does
Recap is a platform designed to assist students in finding relevant information about courses and professors. Users input the name of a course and professor, and Recap provides a curated selection of comments and posts related to that class. It also offers insights such as sentiment analysis for each comment and an assessment of the overall difficulty of the class.
How we built it
Our journey began with the integration of the Reddit API, known as PRAW. We set up a developer account on Reddit to gain access to their database and enable us to perform queries effectively. PRAW's innate ability to sort posts and comments by relevance was a substantial time-saver, allowing us to focus on extracting insights. We devised a preliminary algorithm for measuring course difficulty, which can undoubtedly be refined in the future. To determine sentiment, we employed Vader Sentiment for sentiment analysis, and for the sake of clarity and accessibility, we transformed sentiment scores into emojis. While some of the metrics were simplified due to time constraints, they served our purpose well.
Challenges we ran into
Initially, we explored the possibility of using Convex for our project, but we soon realized that we were faced with a learning curve that exceeded our technical expertise, particularly concerning Backend TypeScript. Reflex appeared to be a promising alternative, but server connection issues hindered our progress. Two-thirds of our team underestimated the complexity of building a web app, especially the Frontend development aspect.
Accomplishments we're proud of
We take pride in bridging the Reddit community with students seeking invaluable information that was previously shared only through word of mouth. Our sentiment analysis and course difficulty assessments equip students with realistic expectations, enabling them to make informed academic choices confidently.
What we learned
This journey revealed that full-stack development is significantly more challenging than it might appear at first. Despite our limited knowledge of Frontend technologies like CSS and HTML, we managed to create a functional web app by using Flask and adding features like emojis in our final table view. We also learned about the rapid pace of real-world technology. In terms of data analysis, we made intriguing discoveries about the Berkeley subreddit (and about how much harder our classes are to Stanfords') and the vocabulary used to describe course experiences. We also encountered controversial insights about the popularity of certain professors compared to others.
What's next
Recap is poised to become an essential tool for every student. We envision its integration with websites like Berkeleytime to expand its reach. As we continue to refine our product, we aim to enhance its mathematical underpinnings, comprehend the limitations and contexts of our results, and improve accuracy through rigorous testing. There are glaring issues with data cleaning and accessibility that need to be fixed. While assessing course difficulty remains subjective, we are committed to refining our approach and striving for greater precision.
Analysis
View
Metric
- 8
- 6
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FlaskIn code
- HTMLIn code
- PythonIn code
4 of 4 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
12 KB
Source files
6
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Lojikick/Recap
9 files · 97 KB · @ 7a927a3
Structure
Interface
3 files · 33%Screens, components and styles rendered to the user.
Application logic
3 files · 33%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python75%
- HTML15%
- CSS10%
- Markdown0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 28- blinker
- certifi
- charset-normalizer
- click
- colorama
- Flask
- idna
- itsdangerous
- Jinja2
- joblib
- MarkupSafe
- nltk
- numpy
- pandas
- praw
- prawcore
- python-dateutil
- pytz
- +10 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.