Project Info
This project did not submit a demo video on Devpost.
Inspiration
In an era of ever-increasing media consumption, individuals often fall into reinforcement bias—engaging only with content that aligns with their existing beliefs. Our project was born from the need to break this cycle and promote diverse perspectives in online media. By providing users with real-time insights into their content consumption habits, we empower them to make informed choices about what they engage with and how it shapes their worldview.
What it does
We created a Chrome Extension that automatically captures screenshots of online activity upon tab changes and significant keystrokes and analyzes the content in real time, all while minimizing storage usage by updating a rolling classification vector instead of storing every screenshot. Using Vision-Language Models (VLMs), content classification, and sentiment analysis, we generate a numerical consumption vector that categorizes a user's browsing habits on progressive scales for various categories: motivational (generally optimistic vs. pessimistic content), educational (informative vs. brain rot content), political (conservative vs. liberal content), and economic (capitalist vs. social content), and whether or not the content is misinformation. Users are then given an easy to read summary of where their content consumption leans. By continuously updating rather than storing every screenshot, our system provides real-time insights without unnecessary data overhead. These insights are displayed dynamically, allowing users to track shifts in their media consumption and even receive recommendations for broadening their exposure.
How we built it
We started by assembling a basic Chrome extension, learning the required structure for opening and deploying an extension on the Chrome Web Store. Next, we developed the core functionality and pipeline: capturing screenshots of the user's screen, extracting text using the OpenAI GPT-4o API, and classifying the content using Mistral AI. Finally, we performed sentiment analysis with our fine-tuned model on TogetherAI to generate meaningful insights about user consumption habits. The last stage was connecting these two components through the use of a Flask endpoint, enabling seamless communication between the extension and the backend. To make the insights more interactive, we used Luma Labs to visualize the classification data dynamically. Instead of simply displaying raw numerical values, we transformed the running classification vector into a blob-based 3D visualization, where the shape, size, and color of the blob evolve based on the user’s browsing trends. This provides an intuitive and engaging way for users to see how their content consumption habits shift over time.
Challenges we ran into
We got stuck a few times when hosting the Flask backend. A lot of time was spent trying to debug the json outputs for the Mistral API realizing that formatting was creating a large amount of errors. After fixing this, debugging was difficult since understanding niche errors in database management and quicks of Flask took time to individually discover and address. We also have a hard time synchronizing data across the users as we added capabilities to maintain a user’s data across different devices. This meant sharing the json file on a backend hosted database.
Accomplishments we're proud of
We are very proud that we were able to deliver an end-to-end extension that we had no idea how to do prior to the Hackathon start. Hosting on Flask was something we had never done, so getting an extension that fully integrates with user behavior and provide useful insights was incredibly rewarding. This extension is truly something that I would want to use in my everyday internet usage, for which, I am excited to continue building and fine-tuning to my usage patterns. The UI for this extension is gorgeous and came together with the metrics swimmingly. We are always excited to see what our unique "Blob" will look like!
What we learned
Throughout this journey, we learned: How to fully build an end-to-end Chrome Extension—from background scripts to local storage synchronization. Leveraging Vision-Language Models (VLMs) for content classification and sentiment analysis. Integrating a Flask backend with a real-time classification model. Applying generative AI for visualizing user behavior in 3D using Luma Labs.
What's next
If we were to continue developing Myst, we envision several key improvements and expansions to enhance its impact: Refining Classification Models: While our current approach effectively categorizes content, we aim to further fine-tune our model for better accuracy. This includes improving sentiment analysis, refining misinformation detection, and incorporating a broader range of training data to reduce biases. Displaying Global User Trends: To help users contextualize their browsing habits, we plan to introduce an aggregated, anonymized view of global consumption trends. Users will be able to compare their own consumption patterns against the average person's trends, seeing where they align or diverge in different categories and encouraging greater awareness of information bubbles. Personalized Recommendations: Beyond simply analyzing content, we want to guide users toward a more balanced information diet. Myst will offer recommendations based on gaps in their consumption, encouraging exposure to diverse perspectives while respecting user preferences.
Myst - A Chrome Extension for Media Awareness
Inspiration
In today's digital age, many individuals engage only with content that reinforces their existing beliefs. Myst was created to break this cycle by providing real-time insights into users' media consumption habits, empowering them to make informed choices.
What It Does
Myst is a Chrome Extension that:
- Captures screenshots of online activity upon tab changes and keystrokes.
- Analyzes content in real time using Vision-Language Models (VLMs).
- Generates a dynamic consumption vector across multiple categories:
- Motivational (Optimistic vs. Pessimistic)
- Educational (Informative vs. Brain Rot)
- Political (Conservative vs. Liberal)
- Economic (Capitalist vs. Socialist)
- Misinformation Detection
- Displays an interactive 3D visualization of browsing trends.
How We Built It
- Developed a Chrome Extension with automated screenshot capturing.
- Used OpenAI's GPT-4o and Mistral AI for content classification.
- Integrated a Flask backend for real-time processing.
- Leveraged Luma Labs to generate 3D visualizations of user trends.
Challenges
- Debugging Flask backend and JSON formatting errors.
- Synchronizing user data across devices via a cloud-hosted database.
Accomplishments
- Successfully built and deployed an end-to-end extension.
- Designed an intuitive UI and interactive 3D visualization.
- Integrated real-time classification and sentiment analysis.
What We Learned
- Building a full Chrome Extension with background scripts.
- Using Vision-Language Models for media classification.
- Hosting and integrating a Flask backend.
- Creating generative AI-driven 3D visualizations.
Future Plans
- Improve Classification Accuracy: Refine sentiment analysis and misinformation detection.
- Global User Trends: Provide anonymized insights into broader media consumption patterns.
- Personalized Recommendations: Suggest diverse content to encourage balanced media exposure.
Built With
- Frontend: HTML, CSS, JavaScript
- Backend: Flask, Python
- AI/ML: OpenAI GPT-4o, Mistral AI, TogetherAI
- Visualization: Luma Labs
🚀 Break your content bubble with Myst!
Analysis
View
Metric
- 21
- 18
- 9
- 2
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
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- CSSClaimed
- Mistral AIClaimed
- OpenAIClaimed
4 of 7 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
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
36 KB
Source files
8
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
matthewjguck/myst
31 files · 15.2 MB · @ 3cdb4f5
Structure
Interface
1 file · 3%Screens, components and styles rendered to the user.
Application logic
8 files · 26%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
- Python44%
- HTML30%
- JavaScript19%
- Markdown6%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 2- flask
- python-dotenv
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.